Szukaj…


Uwagi

Parametr --query jest często pomijany, ale jest niesamowicie potężny. Używa języka zapytań JMESPath do filtrowania odpowiedzi usług do dokładnie tego, czego chcesz.

Wyświetlanie instancji w łatwy do odczytania sposób

Instancje zawierają wiele metadanych, które są zwracane z wywołania describe-instances , ale często trzeba po prostu zobaczyć podstawy. Można użyć zapytania JMESPath w połączeniu z danymi wyjściowymi tabeli, aby wyświetlić zwięzłe informacje o instancji w łatwy do odczytania sposób.

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  |
+-----------+---------------+----------+------------+

Teraz podzielmy to kawałek po kawałku. Po pierwsze, mamy --output table . To tworzy pokolorowaną tabelę odpowiedzi. Jest to na ogół najbardziej przydatne w przypadku poleceń, które zwracają małe zestawy danych lub w których dane zostały przefiltrowane.

Teraz --query do --query . Ten wygląda na długi, ale w rzeczywistości jest dość prosty. Pierwsza część to Reservations[].Instances[] . Zwraca spłaszczoną listę wszystkich zwróconych instancji.

Następna część zapytania jest zawarta w .{} . Robi to, tworząc nowy obiekt json dla każdego elementu na liście, gdzie każda wartość jest zapytaniem JMESPath, które ma być zastosowane do obiektu źródłowego (w tym przypadku Instancji). Większość z nich jest bardzo prosta, ale Name jest nieco bardziej złożona.

Pełne zapytanie do uzyskania Name to Tags[?Key == 'Name'].Value | [0] . Pierwsza część tego tagu Tags[?Key == 'Name'] polega na przeszukiwaniu tagów instancji w celu znalezienia znacznika, którego kluczem jest Name . Druga połowa .Value | [0] wybiera wartości każdego z tych tagów, a następnie bierze pierwszą pozycję z listy (w tym przypadku zawsze będzie tylko jeden).

Dokładnie to, czego chcesz w tym stole, zależy od Ciebie. Na przykład, jeśli chcesz dodać informacje DNS, możesz łatwo dodać nowy klucz 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
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow