[小ネタ] セキュリティグループ毎に関連付いたEC2インスタンスの一覧を表示する

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

はじめに

小ネタです。AWS管理コンソールでは「各EC2インスタンスがどのセキュリティグループに関連付いているか」を確認することは出来ますが、「各セキュリティグループにどのEC2インスタンスが関連付いているか」は見ることができません。これはちょっと不便です。なのでAWS CLIを使ってサクッと確認してみました。

やってみた

AWS CLIを使ったシェルスクリプトはこんな感じです。

$ vi get_secg.sh
declare -a SECG=$(aws ec2 describe-security-groups | jq '.SecurityGroups[].GroupName')
for secg in ${SECG[@]}; do
  echo "*** SecurityGroupName: "$secg" ***"
  aws ec2 describe-instances | jq -r '.Reservations[].Instances[] | select(.SecurityGroups[].GroupName=='$secg') | [.InstanceId, .Tags[].Value] | @csv'
  echo "-----"
done

実行するとこんな感じで出力されます。

$ sh get_secg.sh
*** SecurityGroupName: "mainte" ***
"i-12345678","cent5"
"i-12345679","cent6"
-----
*** SecurityGroupName: "default" ***
"i-12345678","cent5"
"i-12345679","cent6"
"i-123456780","win2008"
-----
*** SecurityGroupName: "windows-mainte" ***
"i-123456780","win2008"
-----

さいごに

EC2インスタンスとセキュリティグループが大量にある時にはちょっと便利です!