SSM Automation Runbook “AWSSupport-AnalyzeEBSResourceUsage” をやってみた
はじめに
テクニカルサポートの 片方 です。
AWS では特定の AWS リージョンで放棄された EBS ボリューム、AMI、スナップショットのリソース調査方法として、SSM Automation Runbook "AWSSupport-AnalyzeEBSResourceUsage" を提供しています。
この Runbook を使用すると以下の観点で調査を実施します。
- 未使用の EBS ボリュームを探す(available 状態)
- 元 EBS ボリュームが消えているスナップショットを探す
- どの EC2 インスタンスからも使われていない AMI を探す
やってみた
今回は、Runbook の実行時に レポート保存用の S3 バケットを自動作成する方法を使用します。
そのための事前準備として、S3 バケットの暗号化に利用する カスタマー管理型 KMS キー(CMK) をあらかじめ作成しておいてください。
作成した KMS キーの ARN は後の手順で指定するため、控えておいてください。
なお、オートメーションが開始されたリージョンに、AWS KMS キーで暗号化された <ユーザー指定の名前>-awssupport-YYYY-MM-DD という形式の名前の新しいバケットを作成されます。
1. SSM マネジメントコンソール画面へアクセス
2. 下部の左ペイン [共有リソース] セクションの ドキュメントをクリック
3. Amazon が所有を選択 ⇒ 検索窓に "AWSSupport-AnalyzeEBSResourceUsag" を記載

4. ドキュメントを選択
5. 右上 [オートメーションを実行する] を選択

6. Simple execution を選択
7. Input parameters (入力パラメータ) の CustomerManagedKmsKeyArn において、作成した KMS キーの ARN を記載します。

※ 当該設定をしている IAM ユーザーに ドキュメント 記載の権限許可が存在しない場合は、当該権限を有するロール作成をしてロールください。その後、AutomationAssumeRole に当該ロールを設定してください。
アタッチするポリシー例
{
"Version":"2012-10-17",
"Statement": [{
"Sid": "ReadOnlyPermissions",
"Effect": "Allow",
"Action": [
"ec2:DescribeImages",
"ec2:DescribeInstances",
"ec2:DescribeSnapshots",
"ec2:DescribeVolumes",
"ssm:DescribeAutomationExecutions"
],
"Resource": "*"
}, {
"Sid": "KMSGeneratePermissions",
"Effect": "Allow",
"Action": ["kms:GenerateDataKey", "kms:Decrypt"],
"Resource": "arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab"
}, {
"Sid": "S3ReadOnlyPermissions",
"Effect": "Allow",
"Action": [
"s3:GetBucketAcl",
"s3:GetBucketPolicyStatus",
"s3:GetBucketPublicAccessBlock",
"s3:ListBucket"
],
"Resource": [
"arn:aws:s3:::amzn-s3-demo-bucket1",
"arn:aws:s3:::amzn-s3-demo-bucket2/"
]
}, {
"Sid": "S3CreatePermissions",
"Effect": "Allow",
"Action": [
"s3:CreateBucket",
"s3:PutObject",
"s3:PutBucketLogging",
"s3:PutBucketPolicy",
"s3:PutBucketPublicAccessBlock",
"s3:PutBucketTagging",
"s3:PutBucketVersioning",
"s3:PutEncryptionConfiguration"
],
"Resource": "*"
}]
}
※ 適宜修正してください。
8. 右下の [Execute] をクリック

これで以上です。調査完了まで待ちましょう。
成功したので、S3 バケットの中身を確認します。

実行結果が記載されている CSV ファイルが保存されていました。

※ AMI に関する CSV ファイル中身

※ EBS スナップショットに関する CSV ファイル中身

この場合、snap-07dccb543b012498a がどの AMI にも関連しないこと (IsPartOfAmi = None) を確認できました。
まとめ
使用していない、EBS スナップショットや AMI の棚卸しに便利ですね。
本ブログが誰かの参考になれば幸いです。
参考資料
アノテーション株式会社について
アノテーション株式会社は、クラスメソッド社のグループ企業として「オペレーション・エクセレンス」を担える企業を目指してチャレンジを続けています。「らしく働く、らしく生きる」のスローガンを掲げ、様々な背景をもつ多様なメンバーが自由度の高い働き方を通してお客様へサービスを提供し続けてきました。現在当社では一緒に会社を盛り上げていただけるメンバーを募集中です。少しでもご興味あれば、アノテーション株式会社WEBサイトをご覧ください。








