2017-02-22 46 views
1

Я хочу использовать команды CLI для фильтрации тех экземпляров, которые имеют определенные теги, и хранить их в файле на моем локальном сервере каждый раз, когда я запускаю работу Jenkins.Опишите экземпляры EC2 Имя экземпляра фильтра с помощью AWS cli

aws ec2 describe-instances --filters "Name=tag:Hello,Values=exclude" --output table --query Reservations[*].Instances[*].{Id.InstanceId, State:State.name,Contact:tag:OwnerContact, InstanceProfileName:InstanceProfileName} > Book.txt 

Я получаю вывод в текстовый файл успешно, однако для двух моих параметров InstanceProfileName и OwnerContact, я получаю выход как None.

Я пробовал различные комбинации, все еще не в состоянии вывести имя экземпляра.

ответ

1

Вот пример, который может выводить различные параметры, в том числе значений тегов:

aws ec2 describe-instances --query "Reservations[*].Instances[*].{Id:InstanceId,State:State.Name,Profile:IamInstanceProfile.Arn,Name:Tags[?Key=='Name'].Value}" 

Чтобы получить правильный синтаксис, просто попробуйте один элемент одновременно. Начать с:

aws ec2 describe-instances --query "Reservations[*].Instances[*]" 

затем добавить параметры, например:

aws ec2 describe-instances --query "Reservations[*].Instances[*].Tags" 

Тогда попробуйте каждое значение, что вы хотите. Наконец, объедините все это в большой команде.

Чтобы понять --query варианты, посмотрите на: JMESPath Tutorial

+0

Ура, работает отлично Джон !! Еще один вопрос. В приведенном выше сценарии, когда я выводил его в файл как форму таблицы, я получаю все значения, такие как идентификатор экземпляра, имя состояния и все в одной таблице. Тем не менее, получение тегов в другой таблице ниже, а не другой столбец в той же таблице. Что-нибудь другое, что нужно сделать? – Sriram

+0

Тэги - это выход 1-ко-многим, поэтому его нелегко выводить в любом формате, кроме JSON (который поддерживает под-объекты). Возможно, вы захотите запустить два запроса - один для тегов и один для остальных. –

+0

Привет @Sriram, если этот или любой ответ решил ваш вопрос, пожалуйста, рассмотрите [его принятие] (http://meta.stackexchange.com/q/5234/179419), щелкнув галочку. Это указывает более широкому сообществу, что вы нашли решение и дали некоторую репутацию как самому, так и самому себе. Это не обязательно. –