Поиск…


замечания

Параметр --query часто пропускается, но он невероятно мощный. Он использует язык запросов JMESPath, чтобы фильтровать ответы службы точно так, как вы хотите.

Список экземпляров в удобном для чтения способом

У экземпляров много метаданных, которые возвращаются из вызова describe-instances , но часто вы просто хотите увидеть основы. Вы можете использовать JMESPath-запрос в сочетании с выводом таблицы, чтобы показать краткую информацию о экземпляре легко читаемым способом.

aws ec2 describe-instances --output table --query "Reservations[].Instances[].{Name: Tags[?Key == 'Name'].Value | [0], Id: InstanceId, State: State.Name, Type: InstanceType}"
-----------------------------------------------------
|                 DescribeInstances                 |
+-----------+---------------+----------+------------+
|    Id     |     Name      |  State   |   Type     |
+-----------+---------------+----------+------------+
|  i-abc123 |  None         |  stopped |  m3.large  |
|  i-def456 |  amazon linux |  stopped |  t2.micro  |
|  i-ghi789 |  proxy        |  running |  t2.micro  |
+-----------+---------------+----------+------------+

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

Теперь на --query . Это выглядит долго, но на самом деле это довольно просто. Первая часть - Reservations[].Instances[] . Это возвращает сплющенный список всех возвращенных экземпляров.

Следующая часть запроса инкапсулирована .{} . Это делается для создания нового json-объекта для каждого элемента в списке, где каждое значение представляет собой запрос JMESPath для применения к исходному объекту (в данном случае экземпляр). Большинство из них очень просты, но Name немного сложнее.

Полный запрос для получения Name - это Tags[?Key == 'Name'].Value | [0] . Первая часть этого тега Tags[?Key == 'Name'] выполняет поиск тегов экземпляра для тега, чей ключ является Name . Вторая половина .Value | [0] выбирает значения каждого из этих тегов, а затем берет первый элемент из списка (в этом случае его будет только когда-либо).

Именно то, что вы хотите в этой таблице, полностью зависит от вас. Если вы хотите добавить информацию DNS, например, вы можете легко добавить новый ключ DNS: PublicDnsName :

aws ec2 describe-instances --output table --query "Reservations[].Instances[].{Name: Tags[?Key == 'Name'].Value | [0], Id: InstanceId, State: State.Name, Type: InstanceType, DNS: PublicDnsName}"
--------------------------------------------------------------------------------------------------------
|                                           DescribeInstances                                          |
+--------------------------------------------------+-----------+---------------+----------+------------+
|                        DNS                       |    Id     |     Name      |  State   |   Type     |
+--------------------------------------------------+-----------+---------------+----------+------------+
|                                                  |  i-abc123 |  None         |  stopped |  m3.large  |
|                                                  |  i-def456 |  amazon linux |  stopped |  t2.micro  |
|  ec2-192-168-1-1.us-west-2.compute.amazonaws.com |  i-ghi789 |  proxy        |  running |  t2.micro  |
+--------------------------------------------------+-----------+---------------+----------+------------+


Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow