使っていないセキュリティグループを洗い出す

コンソールからセキュリティの設定をしていると、作った覚えのないVPCセキュリティグループが氾濫することがあります。
とりあえず以下のようなコマンドで洗い出し、整理しましょう。

# セキュリティグループの一覧を取得
$ aws ec2 describe-security-groups | jq -r '.SecurityGroups[].GroupId' | sort > sglist
# インスタンスにアタッチされているセキュリティグループを取得
$ aws ec2 describe-instances | jq -r '.Reservations[].Groups[].GroupId' > tmp
$ aws rds describe-db-instances | jq -r '.DBInstances[].VpcSecurityGroups[].VpcSecurityGroupId' >> tmp
$ aws elasticache describe-cache-clusters | jq -r '.CacheClusters[].SecurityGroups[].SecurityGroupId' >> tmp
$ cat tmp | sort | uniq > inuse
# 差分を確認
$ diff sglist inuse