web-dev-qa-db-fra.com

Rechercher une instance ec2 par son nom à partir de l'outil de ligne de commande aws

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

J'utilise l'outil aws cli.

34
Shiplu Mokaddim

En supposant que vous utilisez la convention consistant à mettre le nom de l'instance dans une balise avec la clé "Nom" (c'est ce que fait la console AWS lorsque vous entrez un nom), vous pouvez utiliser le --filters option pour lister ces instances avec aws-cli:

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

Si vous vouliez simplement les ID 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'

Remarque: --query peut nécessiter une version récente de aws-cli mais ça vaut le coup.

61
Eric Hammond

Vous pouvez filtrer davantage avec le nom, l'ID d'instance et l'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
4
Siva Prasad Koka

Si vous utilisez jq, vous pouvez y parvenir avec:

aws ec2 describe-instances | 
jq -r '.Reservations[].Instances[] | 
select(.Tags[].Value | startswith("dev-server-"))'

Vous pouvez ajouter des filtres supplémentaires à jq pour des résultats plus spécifiques, tels que:

... startswith("dev-server-")) | .PublicDnsName'
0
enharmonic