2017-02-22 4 views
1

Je souhaite utiliser les commandes CLI pour filtrer les instances qui ont des balises spécifiques et les stocker dans un fichier sur mon ordinateur local chaque fois que j'exécute le travail Jenkins.Décrire les instances EC2 Filtrer le nom d'instance à l'aide d'AWS cli

aws ec2 describe-instances --filters "Name=tag:Hello,Values=exclude" --output table --query Reservations[*].Instances[*].{Id.InstanceId, State:State.name,Contact:tag:OwnerContact, InstanceProfileName:InstanceProfileName} > Book.txt 

je reçois la sortie dans un fichier texte avec succès, mais pour deux de mes paramètres InstanceProfileName et propriétairecontacter, je reçois la sortie comme Aucun.

J'ai essayé plusieurs combinaisons, mais je n'ai toujours pas réussi à sortir le nom de l'instance.

Répondre

1

Voici un exemple capable de générer des différents paramètres, y compris les valeurs de tag:

aws ec2 describe-instances --query "Reservations[*].Instances[*].{Id:InstanceId,State:State.Name,Profile:IamInstanceProfile.Arn,Name:Tags[?Key=='Name'].Value}" 

Pour obtenir le droit de syntaxe, essayez un élément à la fois. Commencez par:

aws ec2 describe-instances --query "Reservations[*].Instances[*]" 

puis ajouter des paramètres, par exemple:

aws ec2 describe-instances --query "Reservations[*].Instances[*].Tags" 

Ensuite, essayez chaque valeur que vous voulez. Enfin, enchaînez tous ensemble dans une grosse commande.

Pour comprendre les --query les options, jetez un oeil à: JMESPath Tutorial

+0

Cheers, Fonctionne bien John !! Juste une question de plus, Dans le scénario ci-dessus, lorsque je l'affiche dans un fichier sous forme de tableau, j'obtiens toutes les valeurs telles que l'ID de l'instance, le nom de l'état et tous dans une table. Toutefois, obtenir Tags dans un autre tableau ci-dessous plutôt que d'une autre colonne dans le même tableau. Quelque chose de différent qui doit être fait? – Sriram

+0

Les tags sont une sortie 1-à-plusieurs, il n'est donc pas facile de les exporter dans n'importe quel format, à l'exception de JSON (qui prend en charge les sous-objets). Vous pourriez vouloir exécuter deux requêtes - une pour les étiquettes et une pour le reste. –

+0

Bonjour @Sriram, si cela ou une réponse a résolu votre question, veuillez considérer [l'accepter] (http://meta.stackexchange.com/q/5234/179419) en cliquant sur la coche. Ceci indique à la communauté plus large que vous avez trouvé une solution et donne une certaine réputation à la fois le répondeur et vous-même. Il n'y a aucune obligation de le faire. –