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


32

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

Ich benutze AWS CLI-Tool.


Dies hängt davon ab, wie Sie die Instanz benannt haben. Haben Sie den Hostnamen im Betriebssystem, in der AWS-Konsole oder in beiden festgelegt?
Craig Watson

Ja, innerhalb des Betriebssystems ist der Hostname auf den gleichen Namen eingestellt.
Shiplu Mokaddim

Antworten:


55

Angenommen, Sie verwenden die Konvention, den Namen der Instanz in ein Tag mit dem Schlüssel "Name" einzufügen (dies macht die AWS Console, wenn Sie einen Namen eingeben), dann können Sie die --filtersOption verwenden, um diese Instanzen mit aufzulisten aws-cli:

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

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

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

Hinweis: --queryMöglicherweise ist eine aktuelle Version von aws-cli erforderlich, es lohnt sich jedoch, diese zu erwerben.


1
Oh, ich habe fast eine halbe Stunde gebraucht, um das herauszufinden ... wie seltsam das ist:Name=tag:Name
lisak

1
Dank Eric - ich war immer mehrere Instanz - IDs auf der gleichen Linie, mit Ihrer Anfrage, aber github.com/aws/aws-cli/issues/914#issuecomment-56210312 vorgeschlagen , --query 'Reservations[].Instances[].[InstanceId]die funktioniert für mich
jaygooby

3
FWIW, das jqTool kann verwendet werden, um ähnliche Ergebnisse aws --querywie folgt zu erhalten : - aws ec2 describe-instances | jq '.Reservations[].Instances[].PrivateIpAddress'Beachten Sie den vorhergehenden .Punkt.
MarkHu

Können Sie beschreiben-Instanzen Filter Groß- und Kleinschreibung beachten?
Red888

3

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

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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.