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?
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
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.