2017-09-11 12 views
2

--filterは、私がタグを持つインスタンスリストについては、CLI AWSを照会したい考えてみましょう:- フィルタリング出力--queryとし、

役割= myRoleの

私は唯一のInstanceIdをしたいとその特定のタグので、私は、発行:

~ aws ec2 describe-instances \ 
    --filter "Name=tag:role,Values=myrole" \ 
    --query "Reservations[*].Instances[*].[InstanceId,Tags[?Key=='myId'].Value]" 

回答は次のようになります。

[ 
    [ 
     [ 
      "i-111111111111111111", 
      [] 
     ] 
    ], 
    [ 
     [ 
      "i-222222222222222222", 
      [ 
       "091117" 
      ] 
     ] 
    ], 
    [ 
     [ 
      "i-333333333333333333", 
      [] 
     ] 
    ] 
] 

どのように私はトンを変更することができますあなたのコマンドに唯一欠けている部分は、タグmyIdが存在し、空でない値を持っていることを確認することです

[ 
    [ 
     [ 
      "i-222222222222222222", 
      [ 
       "091117" 
      ] 
     ] 
    ] 
] 
+0

あなたが特定のタグ名と値を照会した場合、あなたはすでにタグの値を知らないのか?その場合、結果には、特定のタグ名のための空のタグ値はまったく含まれてはなりません。 – Dunedan

+0

私はタグAでクエリをフィルタリングし、出力にタグBの値が必要であることを読んでいますか? – Dunedan

答えて

1

:彼は唯一、このタグの値が空の文字列すなわちあることをオブジェクトを取得するために照会します。そのフィルタは、選択したインスタンス(Instances[*])に適用する必要があります。どのようにそのためのフィルタにanother answer on Stack Overflowで覆われているし、あなたのコマンドに統合することは、前方ではなくストレートです:

aws ec2 describe-instances \ 
    --filter "Name=tag:role,Values=myrole" \ 
    --query "Reservations[*].Instances[?Tags[?Key=='myId' && Value!='']].[InstanceId,Tags[?Key=='myId'].Value]"