web-dev-qa-db-fra.com

Ligne de commande AWS CLI: comment utiliser "--query" pour sortir plusieurs lignes source

J'utilise aws-cli version 1.7.8 pour obtenir le --query sortie pour créer un enregistrement dérivé de plusieurs lignes. Dans ce cas, j'essaie d'obtenir des informations spécifiques de describe-instances.

Dans le describe-instances commande, nous obtenons des lignes/sections qui font référence à RESERVATIONS, INSTANCES et TAGS.

Je peux simplement exécuter la nouvelle commande AWS CLI pour obtenir individuellement les informations des trois lignes:

Ligne RESERVATION:

aws ec2 describe-instances --instance-ids i-xxxxxxxx --query 'Reservations[*].ReservationId'

Ligne INSTANCE:

aws ec2 describe-instances --instance-ids i-xxxxxxxx --query 'Reservations[*].[Instances[*].[InstanceId,ImageId]]'

Ligne TAG:

aws ec2 describe-instances --instance-ids i-xxxxxxxx --query 'Reservations[].Instances[].[Tags[?Key==Nom]]'

Je peux exécuter ces 3 commandes et concaténer les résultats pour former 1 enregistrement.

Est-ce que quelqu'un sait s'il existe un moyen de l'exécuter en tant que commande UNE (1), au lieu de 3 commandes distinctes?

J'ai essayé PIPE et d'autres formes de syntaxe, mais je ne suis pas encore en mesure de trouver une bonne solution.

Puis-je obtenir la sortie équivalente de ces 3 commandes à partir d'une seule commande?

11
Chris Charles
aws ec2 describe-instances --instance-id i-77777777 \
  --query 'Reservations[*].Instances[*].[InstanceId,ImageId,Tags[*]]' \
  --output text

Cette commande imprime l'ID d'instance, l'ID AMI, les balises de clé et de valeur. Vous pouvez voir plus d'exemples ici: Contrôle de la sortie de commande à partir de l'interface de ligne de commande AWS

21
Peycho Dimitrov

Avec Windows (cmd.exe, cmder.exe, etc.), il faut utiliser des guillemets doubles (") au lieu de guillemets simples (') autour de la chaîne de requête. Sinon, la console imprime simplement le chemin dans la requête et ne fait même pas générer une erreur.

1
Jason