Поиск выходных данных AWS CLI и сохранение в переменной

Я новичок в пакетных файлах, но я пытаюсь использовать их для автоматизации создания некоторых экземпляров AWS CLI.

То, что у меня есть, пока довольно простое — в моем файле .bat есть команда, которая запускает команду run-instances:

aws ec2 run-instances --dry-run --image-id %ami_id% --key-name %keypair% --security-group-ids %security_group% --instance-type "r3.large" --subnet-id %az1b_subnet%

Эта команда требует немного времени для запуска, но в конечном итоге (без --dry-run) вернет json о созданных экземплярах. Я хотел бы найти этот вывод json и сохранить instance-id в переменной, чтобы я мог использовать его для пометки моего недавно созданного экземпляра с помощью команды ec2 create-tags.

Любые мысли о том, как я мог это сделать? Моя первая попытка состояла в том, чтобы добавить > test.txt в конец приведенной выше команды, а затем выполнить поиск в json и установить переменную. Однако test.txt создается непосредственно перед тем, как команда CLI завершит работу и вернет свой вывод.

Спасибо.


person joshft91    schedule 28.07.2015    source источник
comment
Вы видели/пробовали примеры?   -  person wOxxOm    schedule 28.07.2015
comment
Хм, я на самом деле не знал, что это вещь. Довольно новый для AWS CLI, а также ... похоже, что это будет намного проще. Спасибо!   -  person joshft91    schedule 28.07.2015
comment
@wOxxOm Хм, так как я не буду знать идентификатор экземпляра, пока команда не вернет свой вывод, это не кажется хорошим способом. Есть ли способ убедиться, что первая команда полностью выполнена, а затем выполнить поиск по ней и установить переменную идентификатора экземпляра?   -  person joshft91    schedule 28.07.2015
comment
Да, используйте for /f %%a in ('aws command to show the id --output text') do set AWS_ID=%%a, а затем вы можете использовать %AWS_ID% в последующих командах. Точный формат команды for, конечно же, зависит от вывода aws. Я им не пользуюсь, поэтому не могу помочь, не видя результата.   -  person wOxxOm    schedule 28.07.2015
comment
Нет проблем, я посмотрю. Основная проблема, с которой я столкнулся, заключалась в том, что для возврата вывода команды AWS CLI требуется некоторое время.   -  person joshft91    schedule 28.07.2015


Ответы (1)


Интерфейс командной строки (CLI) AWS имеет параметр --query, который можно использовать для указания полей вывода. . В сочетании с --output text он может предоставить список идентификаторов экземпляров.

Вот сценарий, предполагающий, что за один вызов run-instances запускается только один экземпляр (иначе потребовался бы цикл):

ID=`aws ec2 run-instances --image-id ami-xxxxxxxx --instance-type t1.micro --query 'Instances[0].InstanceId' --output text`

aws ec2 create-tags --resources $ID --tags Key=Name,Value=WebServer
person John Rotenstein    schedule 29.07.2015
comment
люблю этот ответ. - person Eajaz; 07.08.2018
comment
В моем случае я должен получить два значения из ответа. Как мне это сделать? - person Appu Mistri; 22.05.2019
comment
@AppuMistri Вероятно, вы могли бы сохранить первоначальный вывод в переменной, а затем извлечь два значения из этого ответа. Не стесняйтесь создавать новый вопрос, и у кого-то, вероятно, будет ответ. - person John Rotenstein; 22.05.2019