aws-cli
Le paramètre --query
Recherche…
Remarques
Le paramètre --query
est souvent négligé, mais il est incroyablement puissant. Il utilise le langage de requête JMESPath pour filtrer précisément les réponses aux demandes .
Liste des instances d'une manière facile à lire
Les instances ont beaucoup de métadonnées renvoyées par un appel à describe-instances
, mais souvent, vous ne voulez que voir les bases. Vous pouvez utiliser une requête JMESPath combinée à une sortie de table pour afficher des informations d'instance concises de manière facilement lisible.
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 |
+-----------+---------------+----------+------------+
Maintenant, laisse cette pièce pièce par pièce. Tout d'abord, nous avons --output table
. Cela produit une représentation de table colorisée de la réponse. Ceci est généralement plus utile avec les commandes qui renvoient de petits ensembles de données ou dans lesquelles vous avez filtré les données.
Maintenant sur le --query
. Celui-ci a l'air long, mais c'est en fait assez simple. La première partie est Reservations[].Instances[]
. Cela retourne une liste aplatie de toutes les instances renvoyées.
La partie suivante de la requête est encapsulée avec .{}
. Cela consiste à créer un nouvel objet json pour chaque élément de la liste où chaque valeur est une requête JMESPath à appliquer à l'objet source (dans ce cas, une instance). La plupart sont très simples, mais Name
est un peu plus complexe.
La requête complète pour obtenir le Name
est Tags[?Key == 'Name'].Value | [0]
. La première partie, Tags[?Key == 'Name']
recherche les balises de l'instance pour une balise dont la clé est Name
. La seconde moitié .Value | [0]
sélectionne les valeurs de chacune de ces balises et prend ensuite le premier élément de la liste (dans ce cas, il n'y en aura qu'une).
Exactement ce que vous voulez dans cette table est entièrement à vous. Si vous souhaitez ajouter des informations DNS, par exemple, vous pouvez facilement ajouter une nouvelle clé 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 |
+--------------------------------------------------+-----------+---------------+----------+------------+