web-dev-qa-db-ja.com

aws cli:リスト値をクエリするにはどうすればよいですか?

Aws cliには--queryオプションがあり、一部の情報のみを選択できます。

たとえば、ec2describe-instancesからセキュリティグループ名だけを取得することに興味があります。

私が実行した場合:

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

私の出力は次のようになります:

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

インデックスを使用してリストの要素にアクセスすることもできます。

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

Tag [0]の代わりに名前が指定されているタグを検索するようにタグをクエリすることは可能ですか?

13
chris

1.3.0以降、次のようにその情報をクエリできるようになりました。

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

だからあなたはこれを持っています:

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

あなたはこれをしたいと思うでしょう:

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

おそらく使用したいのは--filtersオプションです。

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

探しているフィールドを正確に「クエリ」するようにフィルタを変更できます。

これをチェックアウト slideshare その他の例については、新しいAWSCLIに関するアトランタAWSミートアップグループの講演から

2
pquery

この方法は私にとってはうまくいきます:(これはバージョン1.3.0以降でのみ機能します)

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