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.

Shiplu Mokaddim
quelle
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.

Eric Hammond
quelle
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
Siva Prasad Koka
quelle