it-swarm.com.de

Durchsuchen Sie die ec2-Instanz anhand ihres Namens im Befehlszeilentool aws

Ich habe eine Instanz namens dev-server-03. Wie kann ich nun alle dev-server-* Instanzen über die Befehlszeile durchsuchen?

Ich benutze aws cli tool.

34
Shiplu Mokaddim

Angenommen, Sie verwenden die Konvention, den Namen der Instanz in ein Tag mit dem Schlüssel "Name" einzufügen (dies tut die AWS-Konsole, wenn Sie einen Namen eingeben), können Sie den --filters Verwenden. Option zum Auflisten dieser Instanzen mit aws-cli:

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

Wenn Sie nur die Instanz-IDs dieser Instanzen möchten, können Sie Folgendes verwenden:

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

Hinweis: Für --query Ist möglicherweise eine aktuelle Version von aws-cli erforderlich, es lohnt sich jedoch, diese zu erwerben.

61
Eric Hammond

Sie können weiter mit Name, Instanz-ID und privater IP mit unten filtern,

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

Wenn Sie jq verwenden, können Sie dies erreichen mit:

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

Sie können zusätzliche Filter an jq anhängen, um genauere Ergebnisse zu erhalten, z.

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