web-dev-qa-db-de.com

aws cli: Wie kann ich Listenwerte abfragen?

Die aws cli hat eine --query-Option, mit der Sie nur einige Informationen auswählen können.

Als Beispiel möchte ich nur den Namen der Sicherheitsgruppe von ec2 describe-instance abrufen.

Wenn ich renne:

aws ec2 describe-instances --output text --query 'Reservations[*].Instances[*].[InstanceId,InstanceType,SecurityGroups]

meine Ausgabe sieht so aus:

i-xxxxxxx m1.type [{u'GroupName': 'groupName', u'GroupId': 'sg-xxxxx'}]

Ich kann auch über einen Index auf Elemente der Liste zugreifen:

aws ec2 describe-instances --output text --query 'Reservations[*].Instances[*].[InstanceId,InstanceType,Tags[0].Value,Tags[0].Name]

Ist es möglich, Tags abzufragen, sodass ich anstelle von Tag [0] nach einem Tag suche, in dem der Name angegeben ist?

12
chris

Ab 1.3.0 können Sie diese Informationen jetzt folgendermaßen abfragen:

 --query 'Reservations[*].Instances[*].Tags[?Key==`<keyname>`].Value[]'

Also, wo hast du das:

      "Tags" : [
        {
          "Value" : "webserver01",
          "Key" : "InstanceName"
        },

sie möchten dies tun:

aws ec2 describe-instances --query 'Reservations[*].Instances[*].Tags[?Key==`InstanceName`].Value[]'
10
DrStrangepork

Was Sie wahrscheinlich verwenden möchten, ist die Option --filters:

aws ec2 describe-instances --output text --filters "Name=tag-key, Values=SecurityGroups, Name=tag-value, Values=Foo" --region us-east-1

Sie können die Filter in "Abfrage" ändern, um genau das Feld zu finden, nach dem Sie suchen.

schauen Sie sich diese Diashow aus dem Vortrag der Atlanta AWS-Meetup-Gruppe über die neue AWS-CLI an, um weitere Beispiele zu erhalten

2
pquery

Dieser Weg funktioniert für mich: (Dies funktioniert nur in Version 1.3.0 und höher)

aws ec2 describe-instances --query 'Reservations[*].Instances[*].[InstanceId, Tags[?Key==`Name`].Value[*]]'
0
MacGyver2004