Closed4

特定のタグを持つEC2のIDをすべて取得する(awscli,jq)

not75743not75743

動機

ツールを作成する際、何かと特定のタグがついたリソースを取得したくなるため、その練習

対象

ASGで作成された

  • key:Name
  • value:SpotTest

なインスタンスが複数台あるため、それを抜き出してみます。

not75743not75743

awscli

$ aws ec2 describe-instances --filters "Name=tag:Name,Values=SpotTest" --query "Reservations[*].Instances[*].InstanceId" --output text
i-08d541693bd9e00e4
i-08a0a29180d744a9b
i-0fc21fe6e5a615c68
  • --filtersで出力結果をタグで絞り込み
  • --queryで出力項目をインスタンスIDで絞り込み
  • やはりkeyがNameであることを表すName=tag:Nameは慣れない
not75743not75743

jq

$ aws ec2 describe-instances | jq -r '.Reservations[].Instances[] | select(any(.Tags[]; .Key == "Name" and .Value == "SpotTest")) | .InstanceId'
i-08d541693bd9e00e4
i-0ab41c87194dbcd4b
i-08a0a29180d744a9b
i-0b2ec237c2489fdef
i-0fc21fe6e5a615c68
i-03d627a074856a114
  • anyでタグ配列内.key.valueが指定した値であればtrueを返す
  • anyの結果がtrueであった場合、.Reservations[].Instances[]を選択し、そのInstanceIdを取得する
  • jq便利だけど難しいな...
このスクラップは2023/06/13にクローズされました