Использование aws-cli 1.3.6 Я пытаюсь получить простую таблицу экземпляров ec2 с именем и состоянием. Я смотрел документацию --query и JMESpath, и мне удалось выбрать элемент "Значение" на карте, элемент "Ключ" равен имени. Это полезно для получения имени экземпляра. Таким образом, приведенный ниже код работает
aws ec2 describe-instances --output table --query 'Reservations[].Instances[].Tags[?Key==`Name`].Value'
И поставляет это:
-------------------
|DescribeInstances|
+-----------------+
| Name1 |
| Name2 |
+-----------------+
Однако, если я хочу добавить состояние, все будет не так, как я ожидал. Использование
aws ec2 describe-instances --output table --query 'Reservations[].Instances[].[Tags[?Key==`Name`].Value,State.Name]'
Обеспечивает
-------------------
|DescribeInstances|
+-----------------+
| Name1 |
| stopped |
| Name2 |
| stopped |
+-----------------+
вместо двух столбцов с именем и состоянием.
Если мы переведем вывод в JSON, мы увидим, что выбор тегов возвращает список (список из одного элемента) и, вероятно, проблема:
[
[
[
"Name1"
],
"stopped"
],
[
[
"Name2"
],
"stopped"
]
]
Я не смог превратить этот список в скаляр, выбрав первый элемент. Это не работает. Возвращает пустой список в качестве имени.
aws ec2 describe-instances --output json --query 'Reservations[].Instances[].[Tags[?Key==`Name`].Value[0],State.Name]'
То же, что и этот
aws ec2 describe-instances --output json --query 'Reservations[].Instances[].[Tags[?Key==`Name`].Value[][0],State.Name]'
Единственный способ, с помощью которого я понял это, - это функция соединения. Поскольку я ожидаю только один элемент, это нормально, но я, кажется, немного взломан.
aws ec2 describe-instances --output table --query 'Reservations[].Instances[].[join(`,`,Tags[?Key==`Name`].Value),State.Name]'
---------------------------
| DescribeInstances |
+-------------+-----------+
| Name1 | stopped |
| Name2 | stopped |
+-------------+-----------+
Таким образом, возникает вопрос: существует ли способ выбора первого элемента результата фильтра (?Key==XXXX)
с учетом того, что суффикс его с [0]
кажется неработоспособным?
Спасибо заранее!