Recherchez l'instance ec2 par son nom dans l'outil de ligne de commande aws

32

J'ai une instance nommée dev-server-03. Maintenant, comment puis-je rechercher toutes les dev-server-*instances en ligne de commande?

J'utilise l'outil aws cli.

Shiplu Mokaddim
la source
Cela dépend de la façon dont vous avez nommé l'instance. Avez-vous défini le nom d'hôte dans le système d'exploitation, sur la console AWS ou les deux?
Craig Watson
Oui, à l'intérieur du nom d'hôte du système d'exploitation, le même nom est défini.
Shiplu Mokaddim

Réponses:

55

En supposant que vous utilisiez la convention qui consiste à mettre le nom de l'instance dans une balise avec la clé "Name" (c'est ce que fait AWS Console lorsque vous entrez un nom), vous pouvez utiliser l' --filtersoption pour répertorier ces instances avec aws-cli:

aws ec2 describe-instances --filters 'Name=tag:Name,Values=dev-server-*'

Si vous voulez juste les identifiants d'instance de ces instances, vous pouvez utiliser:

aws ec2 describe-instances --filters 'Name=tag:Name,Values=dev-server-*' \
  --output text --query 'Reservations[*].Instances[*].InstanceId'

Note: --querypeut nécessiter une version récente de aws-cli mais ça vaut le coup.

Eric Hammond
la source
1
Omg il m'a fallu près d' une demi - heure pour comprendre cela ... comment bizarre est la suivante:Name=tag:Name
Lisak
1
Merci Eric - J'avais plusieurs ID d'instance sur la même ligne, en utilisant votre requête, mais github.com/aws/aws-cli/issues/914#issuecomment-56210312 a suggéré --query 'Reservations[].Instances[].[InstanceId]ce qui fonctionne pour moi
jaygooby le
3
FWIW, l' jqoutil peut être utilisé pour obtenir des résultats similaires à aws --queryceux-ci: - aws ec2 describe-instances | jq '.Reservations[].Instances[].PrivateIpAddress'notez le .point précédent .
MarkHu
pouvez-vous rendre les filtres de description d'instance insensibles à la casse?
Red888
3

Vous pouvez également filtrer par nom, identifiant d'instance et adresse IP privée avec ci-dessous,

aws ec2 describe-instances --filters "Name=tag:Name,Values=*myinstance*" --output json --query 'Reservations[*].Instances[*].[PrivateIpAddress,InstanceId,Tags[?Key==`Name`].Value]' --region us-east-1
Siva Prasad Koka
la source