Как опросить интерфейс командной строки AWS в сценарии оболочки?

В рамках моего конвейера компакт-дисков на snap-ci.com я хочу запустить экземпляры в моем стеке AWS opsworks перед развертыванием приложения.

Поскольку запуск хостов занимает определенное время (после того, как команда уже вернулась), мне нужно опросить экземпляры, которые будут запущены (с помощью команды describe-instance в AWS CLI). Эта команда возвращает полный ответ JSON, одно из полей которого содержит статус экземпляра (например, «работает»).

Я новичок в написании сценариев оболочки и AWS CLI и был бы признателен за некоторые указатели. Я знаю, что могу также использовать AWS SDK для программирования на java, но для этого потребуется сначала развернуть эту программу на хостах snap-ci, что тоже звучит сложно.


person monohusche    schedule 07.12.2014    source источник
comment
Какие инструменты AWS cli вы используете? Те, что на python, могут быть достаточно легко использованы из python, что должно позволить вам достаточно легко работать с объектами результатов json. Вы можете сделать это с помощью python, даже если вы используете инструменты AWS cli в качестве инструментов (путем передачи вывода в python или что-то еще, а затем работы с json).   -  person Etan Reisner    schedule 07.12.2014
comment
Я использую AWS CLI и сценарии оболочки, которые отлично работают. Основные проблемы - это поведение вызовов AWS, которое не должно зависеть от используемых инструментов CLI.   -  person monohusche    schedule 08.12.2014


Ответы (1)


AWS CLI поддерживает команды wait, т.е. будет блокироваться и ждать выполнения указанного вами условия, например ожидания готовности экземпляра.

Доклад Advanced Usage of the AWS CLI на Re: Invent 2014 показывает, как использовать официантов (18:55), запросы , профили и другие советы по использованию интерфейса командной строки.

person Julio Faerman    schedule 07.12.2014
comment
Спасибо. Единственная проблема заключается в том, что при использовании команды ожидания ec2 для опроса запущенных экземпляров команда возвращается, даже если сервер еще не запущен. Я также написал следующий сценарий, который на последнем шаге выдает InvalidInstanceID. любая идея ? aws opsworks --region us-east-1 start-stack --stack-id 9e1b0534-5b38-4fa5-b30c-f849dda8f46b instance_id = $ (aws opsworks --region us-east-1 describe-instance --stack-id 9e1b0534 -5b38-4fa5-b30c-f849dda8f46b --query Instances []. Ec2InstanceId --output text) aws ec2 wait --region ap-southeast-1 instance-running --instance-ids $ instance_id - person monohusche; 08.12.2014
comment
извините за искаженное сообщение, добавление комментариев к ответам - не самая удобная функция здесь - person monohusche; 08.12.2014