У меня настроен интерфейс командной строки AWS, и я могу использовать aws ec2 description-instance, чтобы получить возвращаемый объект json, который описывает все известные детали моих экземпляров. Есть ли простой способ получить только короткий список, например имя экземпляра и идентификатор экземпляра?
Я хочу иметь возможность работать с моими экземплярами в командной строке, но чтобы получить идентификаторы экземпляров (которые требуются для команд, таких как start-instance), мне нужно просмотреть весь этот вывод.
Да, через --query
вариант.
Эта опция позволяет фильтровать и возвращать определенные элементы из структуры. Есть специальный шаблон [*]
нотация, позволяющая перебирать списки объектов; мы будем использовать это, чтобы перебрать список экземпляров EC2 и вернуть желаемые значения.
Получение InstanceID, имени тега экземпляра как JSON:
aws ec2 describe-instances --query 'Reservations[*].Instances[*].[InstanceId, Tags[?Key==`Name`].Value | [0]]'
[
[
[
"i-abcd1234",
"MyFirstInstance"
]
],
[
[
"i-efgh5678",
"MySecondInstance"
]
]
]
Получение InstanceID, имени тега экземпляра в виде текста:
Если вы не хотите работать с json, вы также можете добавить --output
возможность вывода текста:
aws ec2 describe-instances --query 'Reservations[*].Instances[*].[InstanceId, Tags[?Key==`Name`].Value | [0]]' --output text
i-abcd1234 MyFirstInstance
i-efgh5678 MySecondInstance
Дальнейшее чтение: