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?
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[]'
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
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[*]]'