Работа с AWS EC2 через командную строку в Unix/Linux
AWS CLI — это консольная утилита которая позволяет работать с AWS EC2 через командную строку. Я хотел бы сделать заметку о том как работать AWS EC2 в консоле.
Работа с AWS EC2 через командную строку в Unix/Linux
Устанавливаем AWS CLI:
Установка AWS CLI в Unix/Linux
Открываем конфиг:
# vim ~/.aws/credentials
Прописываем ключи. Например:
[Your_acc_name] aws_access_key_id = XXXXXXXXXXXXXXXXXXXXXXXXX aws_secret_access_key = YYYYYYYYYYYYYYYYYYYY
Где:
- Your_acc_name — Имя для аккаунта. Потом можно его использовать.
- aws_access_key_id — Ключик.
- aws_secret_access_key — Еще один ключик.
Просмотр AWS EC2 через командную строку в Unix/Linux
И так, чтобы просмотреть имеющиеся волюмы для конкретного профеля, используйте:
$ aws ec2 --profile Reaxys describe-volumes
PS: Иногда требуется указывать регион:
$ aws ec2 --profile Reaxys --region us-east-1 describe-volumes
Так же, можно region указать в конфиг-файле.
Чтобы распечатать только 1-ю volume, используйте:
$ aws ec2 --profile Reaxys --region us-east-1 describe-volumes --query 'Volumes[0]'
Чтобы распечатать все волюмы, используйте:
$ aws ec2 --profile Reaxys --region us-east-1 describe-volumes --query 'Volumes[*]'
Можно выводить не все параметры, а только определенные, например:
$ aws ec2 --profile Reaxys --region us-east-1 describe-volumes --query 'Volumes[*].{ID:VolumeId,AZ:AvailabilityZone,Size:Size}'
Вот еще пример:
$ aws ec2 --profile Reaxys --region us-east-1 describe-volumes --query 'Volumes[*].{ID:VolumeId,InstanceId:Attachments[0].InstanceId,AZ:AvailabilityZone,Size:Size}'
Можно вывести волюмы с определенного региона, например:
$ aws ec2 --profile Reaxys --region us-east-1 describe-volumes --query 'Volumes[?AvailabilityZone==`us-east-1d`]'
Можно выводить содержание в виде текста, например:
$ aws ec2 --profile Reaxys --region us-east-1 describe-volumes --query 'Volumes[*].[VolumeId, Attachments[0].InstanceId, AvailabilityZone, Size, FakeKey]' --output text
Добавил параметр для вывода состояния волюмы:
$ aws ec2 --profile Reaxys --region us-east-1 describe-volumes --query 'Volumes[*].[VolumeId, Attachments[0].InstanceId, AvailabilityZone, State, Size, FakeKey]' --output text
Очень удобно и наглядно использовать вывод в виде столбцов, например:
$ aws ec2 --profile Reaxys --region us-east-1 describe-volumes --query 'Volumes[*].{ID:VolumeId,InstanceId:Attachments[0].InstanceId,AZ:AvailabilityZone,Size:Size}' --output table
Ничего сложного.
Проверим доступность зон:
$ aws ec2 --profile Reaxys --region us-east-1 describe-availability-zones
Чтобы получить описание всех имеджей, выполните:
$ aws ec2 --profile Reaxys --region us-east-1 describe-images
Или, для определенного:
$ aws ec2 --profile Reaxys --region us-east-1 describe-images --image-ids "ami-f480c59e"
Идем далее.
Генерация CLI Skeleton через командную строку в Unix/Linux
Большинство команд CLI поддерживают параметры «-generate-cli-skeleton» и «-cli-input-json», которые вы можете использовать для хранения параметров в JSON и читать их из файла, а не вводить их в командной строке.
И так, сгенерируем скелетон:
$ aws ec2 --profile Reaxys --region us-east-1 run-instances --generate-cli-skeleton --dry-run
PS: Опция «—dry-run» служит для тестирования ( она не создает никаких изменений).
Можно сохранить вывод в файл:
$ aws ec2 --profile Reaxys --region us-east-1 run-instances --generate-cli-skeleton > ec2runinst.json
Можно открыть данный файл и внести изменения ( например удалить не нужное или что-то добавить).
Передайте конфигурацию JSON-у:
$ aws ec2 --profile Reaxys --region us-east-1 run-instances --cli-input-json file://ec2runinst.json
Перезапуск AWS EC2 инстенсов через командную строку в Unix/Linux
Смотрим какие имеются:
$ aws ec2 --profile Reaxys --region us-east-1 describe-instances --query 'Reservations[].Instances[].[PrivateIpAddress,InstanceId,State.Name]' --output text
И, собственно, ребутаем:
$ aws ec2 --profile Reaxys --region us-east-1 reboot-instances --instance-ids i-09aa273c40cb05767 --dry-run
PS: Я использую «—dry-run» опцию для тестов. С данной опцией не произойдет рестарт инстенса.
В AWS CLI для EC2 нет ничего сложного. Нужно почитать документацию и вникнуть в процесс.
Для помощи, используйте:
$ aws ec2 help
Я постараюсь дополнять данную тему новыми примерами.
Вот и все, статья «Работа с AWS EC2 через командную строку в Unix/Linux» завершена.