1

Я хочу запустить EC2 команду описывают-экземпляры и получить вывод в табличном формате следующим образом (где имя является значение тега с «Name» Key):AWS кли ec2 описывают-экземпляры вывода таблицы

---------------------------------------------------------- 
|     DescribeInstances     | 
+-------------+----------------+--------------+----------+ 
| instance_id | ip_address | name  | state | 
+-------------+----------------+--------------+----------+ 
| i-g93g494d | 99.99.99.01 | name1  | running | 
| i-a93f754c | 99.99.99.02 | name2  | running | 
+-------------+----------------+--------------+----------+ 

можно выполнить следующую команду:

aws ec2 describe-instances --instance-ids i-g93g494d i-a93f754c --query "Reservations[*].Instances[*].{name: Tags[?Key=='Name'].Value, instance_id: InstanceId, ip_address: PrivateIpAddress, state: State.Name}" --output json 

и получить выход:

[ 
    [ 
     { 
      "instance_id": "i-g93g494d", 
      "state": "running", 
      "ip_address": "99.99.99.01", 
      "name": [ 
       "name1" 
      ] 
     } 
    ], 
    [ 
     { 
      "instance_id": "i-a93f754c", 
      "state": "running", 
      "ip_address": "99.99.99.02", 
      "name": [ 
       "name2" 
      ] 
     } 
    ] 
] 

Однако, когда я бегу й одна и та же команда с --output table, а не --output json. Я получаю сообщение об ошибке.

Команда:

aws ec2 describe-instances --instance-ids i-g93g494d i-a93f754c --query "Reservations[*].Instances[*].{name: Tags[?Key=='Name'].Value, instance_id: InstanceId, ip_address: PrivateIpAddress, state: State.Name}" --output json 

выход:

list index out of range 

Я хотел бы выходной таблицы, чтобы выглядеть как в примере выше, но я с трудом решая это. Я очень признателен за любую помощь, которую кто-либо может предложить по этому поводу.

ответ

6

Вы должны использовать выражение трубы для фильтрации результатов тегов и получить первое значение, такие как:

aws ec2 describe-instances --instance-ids i-g93g494d i-a93f754c --query "Reservations[*].Instances[*].{name: Tags[?Key=='Name'] | [0].Value, instance_id: InstanceId, ip_address: PrivateIpAddress, state: State.Name}" --output table 

Существует хорошая связанную блоге здесь: Get a list of instance with id, name and type

+0

Спасибо! Отлично работает, это было именно то, чем я был. Я попробовал трубку, чтобы сгладить, используя «name: Tags [? Key == 'Name]] [], который, как я думал, должен был работать (отсюда вопрос), но я не пробовал« name: Tags [? Key ==] 'Name'] | [0] " – Stuart