AWS CLI — интерфейс командной строки AWS для управления сервисами AWS
Установка/обновление AWS CLI версии 2.X
https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html
1 |
# curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" |
1 |
# unzip awscliv2.zip |
1 |
# sudo ./aws/install |
1 |
# rm -rf aws awscliv2.zip |
Если нужно обновить версию уже установленную aws
1 |
# sudo ./aws/install --update |
1 |
# ls -al /usr/local/ | grep aws-cli |
1 |
drwxr-xr-x 3 root root 4096 июн 13 15:53 aws-cli |
Если не установлены rx для other, тогда выполняем
1 |
# chmod -R o+rx /usr/local/aws-cli/ |
1 |
# which aws |
1 |
/usr/local/bin/aws |
1 |
# aws --version |
1 |
aws-cli/2.11.27 Python/3.11.3 Linux/5.4.0-150-generic exe/x86_64.ubuntu.20 prompt/off |
Настройка автодоплнения команд aws утилиты версии 2.X
1 |
# which aws_completer |
1 |
/usr/local/bin/aws_completer |
1 |
# ls -al /usr/local/bin/aws_completer |
1 |
lrwxrwxrwx 1 root root 47 июн 13 15:53 /usr/local/bin/aws_completer -> /usr/local/aws-cli/v2/current/bin/aws_completer |
1 |
# echo $SHELL |
1 |
/bin/bash |
Добавляем в моем случае в файл .bashrc
1 2 3 4 |
# cat << EOF >> ~/.bashrc complete -C /usr/local/bin/aws_completer aws EOF |
У меня файл .bashrc вычитуется в файле ~/.profile
Если существуют файлы
~/.bash_profile или
~/.bash_login , то файл
~/.profile не будет вычитываться интерпретатором bash
В таком случае автодополнение aws команд необходимо добавлять в один из существующих файлов
(~/.bash_profile или ~/.bash_login)
Если файлы не существуют
~/.bash_profile или
~/.bash_login , то вместо
~/.bashrc можно добвлять в файл
~/.profile
Установка/обновление AWS CLI версии 1.X
Для корректной установки/работы aws cli необходим Python 2 version 2.6.5+ или Python 3 version 3.3+
Установка AWS CLI
Centos6
Установка PIP
1 |
# yum install python-pip |
Обновление PIP до последней версии
1 |
# pip install --upgrade pip |
1 |
# pip -V |
1 |
pip 9.0.1 from /usr/lib/python2.6/site-packages (python 2.6) |
Установка AWS CLI версии 1.X
1 |
# pip install awscli --upgrade --user |
Добавление пути размещения aws в переменную окружения PATH
Если при установке aws использовалась опция/режим ( —user), то бинарники устанавливаются в ~/.local/bin/
1 |
# ~/.local/bin/aws --version |
1 |
aws-cli/1.13.0 Python/2.6.6 Linux/2.6.32-504.12.2.el6.x86_64 botocore/1.8.3 |
Для BASH-оболочки
1 |
# echo $SHELL |
1 |
/bin/bash |
Добавляем в переменную PATH путь ~/.local/bin/ в файле ~/.bash_profile
1 |
# nano ~/.bash_profile |
1 |
export PATH=~/.local/bin:$PATH |
Применяем настройки без перелогина(загружаем профиль в текущую сессию)
1 |
# source ~/.bash_profile |
1 |
# aws --version |
1 |
aws-cli/1.13.0 Python/2.6.6 Linux/2.6.32-504.12.2.el6.x86_64 botocore/1.8.3 |
Debian/Ubuntu
Установка PIP
1 |
# curl -O https://bootstrap.pypa.io/get-pip.py |
1 |
# python get-pip.py --user |
Добавляем в переменную PATH путь ~/.local/bin/ в файл .profile
1 |
# nano ~/.profile |
1 |
export PATH=~/.local/bin:$PATH |
Применяем настройки без перелогина (загружаем профиль в текущую сессию)
1 |
# source ~/.profile |
1 |
# pip -V |
1 |
pip 9.0.1 from /root/.local/lib/python2.7/site-packages (python 2.7) |
Установка AWS CLI версии 1.X
1 |
# pip install awscli --upgrade --user |
1 |
# aws --version |
1 |
aws-cli/1.14.2 Python/2.7.9 Linux/4.9.20-std-1 botocore/1.8.6 |
Обновление PIP до последней версии
1 |
# pip install pip --upgrade --user |
Обновление AWS CLI до последней версии
1 |
# pip install awscli --upgrade --user |
http://docs.aws.amazon.com/cli/latest/userguide/awscli-install-linux.html
Настройка ключей/региона/формата вывода данных для использования утилиты aws
1 |
# aws configure |
1 2 3 4 |
AWS Access Key ID [None]: my_access_key AWS Secret Access Key [None]: my_secret_key Default region name [None]: eu-west-1 Default output format [None]: json |
1 |
# cat ~/.aws/credentials |
1 2 3 |
[default] aws_access_key_id = my_access_key aws_secret_access_key = my_secret_key |
1 |
# cat ~/.aws/config |
1 2 3 |
[default] region = eu-west-1 output = json |
Либо вручную создать файлы credentials и config
1 |
# mkdir /root/.aws/ |
1 |
# nano /root/.aws/credentials |
1 2 3 |
[default] aws_access_key_id = my_access_key aws_secret_access_key = my_secret_key |
1 |
# nano /root/.aws/config |
1 2 3 |
[default] region = eu-west-1 output = json |
1 |
# chmod 400 /root/.aws/{credentials,config} |
Выполнение команды для проверки корректных доступов/ключей и возможноcти подключиться к AWS
1 |
# aws ec2 describe-regions --output table |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
---------------------------------------------------------- | DescribeRegions | +--------------------------------------------------------+ || Regions || |+-----------------------------------+------------------+| || Endpoint | RegionName || |+-----------------------------------+------------------+| || ec2.ap-south-1.amazonaws.com | ap-south-1 || || ec2.eu-west-2.amazonaws.com | eu-west-2 || || ec2.eu-west-1.amazonaws.com | eu-west-1 || || ec2.ap-northeast-2.amazonaws.com | ap-northeast-2 || || ec2.ap-northeast-1.amazonaws.com | ap-northeast-1 || || ec2.sa-east-1.amazonaws.com | sa-east-1 || || ec2.ca-central-1.amazonaws.com | ca-central-1 || || ec2.ap-southeast-1.amazonaws.com | ap-southeast-1 || || ec2.ap-southeast-2.amazonaws.com | ap-southeast-2 || || ec2.eu-central-1.amazonaws.com | eu-central-1 || || ec2.us-east-1.amazonaws.com | us-east-1 || || ec2.us-east-2.amazonaws.com | us-east-2 || || ec2.us-west-1.amazonaws.com | us-west-1 || || ec2.us-west-2.amazonaws.com | us-west-2 || |+-----------------------------------+------------------+| |
http://docs.aws.amazon.com/cli/latest/userguide/cli-config-files.html
Форматы вывода
JSON
1 |
# aws ec2 describe-volumes --query 'Volumes[*].{ID:VolumeId,InstanceId:Attachments[0].InstanceId,AZ:AvailabilityZone,Size:Size}' --output json |
1 2 3 4 5 6 7 8 |
[ { "InstanceId": "i-0b68e5a7310c3f677", "AZ": "eu-west-1a", "ID": "vol-0b0dc817b5483c176", "Size": 8 } ] |
Text
1 |
# aws ec2 describe-volumes --query 'Volumes[*].{ID:VolumeId,InstanceId:Attachments[0].InstanceId,AZ:AvailabilityZone,Size:Size}' --output text |
1 |
eu-west-1a vol-0b0dc817b5483c176 i-0b68e5a7310c3f677 8 |
Table
1 |
# aws ec2 describe-volumes --query 'Volumes[*].{ID:VolumeId,InstanceId:Attachments[0].InstanceId,AZ:AvailabilityZone,Size:Size}' --output table |
1 2 3 4 5 6 7 |
------------------------------------------------------------------------ | DescribeVolumes | +------------+-------------------------+-----------------------+-------+ | AZ | ID | InstanceId | Size | +------------+-------------------------+-----------------------+-------+ | eu-west-1a| vol-0b0dc817b5483c176 | i-0b68e5a7310c3f677 | 8 | +------------+-------------------------+-----------------------+-------+ |
Формат вывода может быть определен тремя способами:
А)задан в конфигурационном файла с помощью опции output
1 2 |
[default] output=text |
B)Используя переменную окружения AWS_DEFAULT_OUTPUT
1 |
# export AWS_DEFAULT_OUTPUT="table" |
С) Используя опцию —output в командной строке
1 |
# aws ec2 describe-key-pairs --output json |
Настройки(формат вывода, регион, ключи) применяются в следующем порядке:
Наивысший приоритет – опции, заданные в командной строке
Средний приоритет – переменные окружения
Самый низкий – опции,указанные в конфигурационных файлах
1 |
~/.aws/credentials, ~/.aws/config |
Использование нескольких профилей
Если у вас несколько профилей, вы можете настроить дополнительные именованные профили с помощью параметра —profile:
1 |
# aws configure --profile user2 |
Либо вручную добавлять в файлы credentials и config
1 |
# cat ~/.aws/credentials |
1 2 3 4 5 6 |
[default] aws_access_key_id = my_access_key aws_secret_access_key = my_secret_key [user2] aws_access_key_id= my_access_key_2 aws_secret_access_key= my_secret_key_2 |
1 |
# cat ~/.aws/config |
1 2 3 4 5 6 |
[default] region = eu-west-1 output = json [profile user2] region=us-east-1 output=text |
Для использования именованного профиля также используем опцию —profile
1 |
# aws ec2 describe-regions --output table --profile user2 |
http://docs.aws.amazon.com/cli/latest/userguide/cli-multiple-profiles.html
Включение автодополнения AWS-команд
Для BASH
1 |
# echo $SHELL |
1 |
/bin/bash |
Определяем абсолютный путь до бинарника aws_completer
1 |
# which aws_completer |
1 |
/root/.local/bin/aws_completer |
Выполняем команду
1 |
# complete -C '/root/.local/bin/aws_completer' aws |
Проверка автодополнения
1 |
# aws s[TAB] |
1 2 |
s3 sdb ses sms sns ssm storagegateway support s3api servicecatalog shield snowball sqs stepfunctions sts swf |
Для автоматического выполнения команды complete -C ‘/root/.local/bin/aws_completer’ aws
После входа в систему
Centos
1 |
# nano ~/.bashrc |
1 |
complete -C '/root/.local/bin/aws_completer' aws |
Debian/Ubuntu
1 |
# nano ~/.profile |
1 |
complete -C '/root/.local/bin/aws_completer' aws |
http://docs.aws.amazon.com/cli/latest/userguide/cli-command-completion.html