Ricerca…


Osservazioni

Il parametro --query viene spesso trascurato, ma è incredibilmente potente. Utilizza il linguaggio di query JMESPath per filtrare le risposte del servizio fino a esattamente ciò che si desidera.

Elenco delle istanze in un modo facile da leggere

Le istanze hanno un sacco di metadati che vengono restituiti da una chiamata per describe-instances , ma spesso le volte si vuole solo vedere le basi. È possibile utilizzare una query JMESPath combinata con l'output della tabella per mostrare le informazioni dell'istanza concise in modo facilmente leggibile.

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

Ora lasciamoci sfondare pezzo per pezzo. Innanzitutto, abbiamo la --output table . Questo produce una rappresentazione tabella colorata della risposta. Questo è generalmente più utile con i comandi che restituiscono piccoli insiemi di dati o dove sono stati filtrati i dati.

Ora sul --query . Questo sembra lungo, ma in realtà è abbastanza semplice. La prima parte è Reservations[].Instances[] . Questo restituisce un elenco appiattito di tutte le istanze restituite.

La parte successiva della query è incapsulata con .{} . Ciò che sta facendo è creare un nuovo oggetto json per ogni elemento nell'elenco in cui ogni valore è una query JMESPath da applicare all'oggetto di origine (in questo caso, un'istanza). Molti di questi sono molto semplici, ma il Name è un po 'più complesso.

La query completa per ottenere il Name è Tags[?Key == 'Name'].Value | [0] . La prima parte di questo, Tags[?Key == 'Name'] sta cercando i tag dell'istanza per un tag la cui chiave è Name . La seconda metà .Value | [0] sta selezionando i valori di ciascuno di questi tag e poi prendendo il primo elemento dall'elenco (in questo caso, ci sarà sempre e solo uno).

Esattamente ciò che vuoi in quel tavolo dipende completamente da te. Se si desidera aggiungere informazioni sul DNS, ad esempio, è possibile aggiungere facilmente una nuova chiave 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
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow