2013-12-20 7 views
11

aws cliには--queryオプションがあり、いくつかの情報だけを選択できます。aws cli:リストの値を照会するにはどうすればよいですか?

たとえば、ec2 describe-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]の代わりに名前が指定されているタグを検索するようクエリタグを使用しますか?あなたはおそらく使用したい何

+0

は、あなただけの出力からそれを取り出すことができませんか? – Andrey

+0

@Andrey:私は、クエリにSecurityGroups {Name = Foo}のようなものがあることを望んでいます。代わりに、json形式を使用してjqにパイプするのですが、最初に何かを逃していないことを確認したいと思います。 – chris

+0

しかし、どうしてjqでそれをしないのですか? – Andrey

答えて

1

は - フィルタを使用オプションです:

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

あなたが探している正確なフィールドに「クエリ」程度のフィルタを変更することができます。より多くの例

0

のための新しいAWS CLIのアトランタAWSのミートアップグループの話から

チェックアウトこのslideshareこの方法では、私の作品:(バージョン1.3.0以上でのみ動作)

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

1.3.0の時点で、あなたは今、このようにその情報を照会することができます

0123:

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

をですから、これを持っています

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

あなたはこれをしたいと思います:

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

うーん..成功しません、値[[]、[]、[] ...の代わりにいくつかの空白の結果が出てきます。私はバージョンaws-cli/1.7.3 Python/2.7.9 Windows/7にあります – sonjz

+1

私は二重引用符を使用していた場合powershellがそれをエンコードしていた方法と関係がありました:aws ec2 describe-instances --query "予約[*]。インスタンス[*]。タグ[?Key ==' 'InstanceName''] .Value []"。ダブルグレーブのアクセントでエスケープする注意。 – sonjz

関連する問題