Closed4
特定のタグを持つEC2のIDをすべて取得する(awscli,jq)
動機
ツールを作成する際、何かと特定のタグがついたリソースを取得したくなるため、その練習
対象
ASGで作成された
- key:Name
- value:SpotTest
なインスタンスが複数台あるため、それを抜き出してみます。
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
は慣れない
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にクローズされました