【小ネタ】あるSecurityGroupが割り当てられているEC2インスタンスのリストを取得する

2017.02.27

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

小ネタです。

EC2インスタンスも数が増えてくると、
どのインスタンスにどのセキュリティグループ(SG)が割り当てられているかわからなくなったり、
あるSGがどれとどれのインスタンスに割り当てられているか確認したくなったりしませんか?

私はします。というかしました。

方法

まず、対象のSGのグループIDを取得します。 マネジメントコンソールから探してもよいのですが、AWSCLIを使えばこうやってSGの一覧が得られるので、

$ aws ec2 describe-security-groups \
    --query SecurityGroups[].[GroupName,GroupId] --output text
default-ssh sg-3ea2xxxx
default-http    sg-f493yyyy
 :

この中から選びます。

例えば「sg-3ea2xxxx」が割り当てられているEC2インスタンスIDの一覧を取得したい場合は、下記のようになります。

$ aws ec2 describe-instances \
    --filters Name=instance.group-id,Values=sg-3ea2xxxx \
    --query Reservations[].Instances[].InstanceId
[
    "i-020b7ddf8zzzzzzzz",
    "i-08e952a8essssssss"
]

このように、 AWSCLIの--filters--queryは非常に強力で、無理かなーと思っていたものも案外検索できてしまうので、使い出すとなかなか楽しいです。

Developers.IOでも過去に下記のようなまとめ記事もありますので、興味のあるかたはご一読ください。

AWS CLIのフィルターとクエリーの使い方についてまとめてみた