まえがき
cloudpack 木村(富)です。
AWS Systems ManagerのオートメーションランブックであるAWS Support Automation Workflows(SAW)のAWSSupport-AnalyzeEBSResourceUsageを検証してみました。
多数のメンバーにて検証環境を利用しているとAmazon EBS ボリューム、Amazon EBS スナップショット、Amazon マシンイメージ (AMI)が残っており、要不要の判断がつかず困ることがあると思います。
その際にこのオートメーションランブックを使用することで不要なリソースが判別可能になるので便利だと思います。
説明
AWS Support Automation Workflows(SAW)について
AWS サポート自動化ワークフローは、厳選された AWS Systems Manager セルフサービス自動化ランブックのコレクションです。 これらのランブックは、お客様の問題を解決して得たベストプラクティスを基に、AWS サポートエンジニアリングによって作成されています。 これにより、AWS リソースに関する一般的な問題のトラブルシューティング、診断、修正が可能になります。
AWS Support Automation Workflows (SAW)
こちらの自動化ランブックコレクションの内、今回はAWSSupport-AnalyzeEBSResourceUsage について検証しました。
AWSSupport-AnalyzeEBSResourceUsage
自動化ランブックAWSSupport-AnalyzeEBSResourceUsageは、Amazon Elastic Block Store (Amazon EBS) のリソース使用状況を分析するために使用されます。 ボリュームの使用状況を分析し、特定の AWS リージョンで放棄されたボリューム、イメージ、スナップショットを識別します。
AWSSupport-AnalyzeEBSResourceUsage
AWSSupport-AnalyzeEBSResourceUsage は次の4つのタスクを実行します。
1.Amazon Simple Storage Service (Amazon S3) バケットが存在することを確認するか、新しい Amazon S3 バケットを作成します。
2.使用可能な状態にあるすべての Amazon EBS ボリュームを収集します。
3.ソースボリュームが削除されたすべての Amazon EBS スナップショットを収集します。
4.終了していない Amazon Elastic Compute Cloud (Amazon EC2) インスタンスで使用されていないすべての Amazon マシンイメージ (AMI) を収集します。
こちらの詳細については後述致します。
手順
① Key Management Service(KMS) にてカスタマーマネージドキーを作成してください。
- ステップ1 <キーを設定>
こちらはデフォルトでも構いません。用途に合わせて設定してください。 - ステップ2 <ラベルを追加>
エイリアス(キーの表示名)は任意に設定してください。
本例では AnalyzeEBSkey としています。 - ステップ3 <キーの管理アクセス許可を定義>
[キーの管理アクセス許可を定義] [キーの削除] は任意に設定してください。 - ステップ4 <キーの使用法アクセス許可を定義>
[キーの使用法アクセス許可を定義]は任意に設定してください。 - ステップ5 <確認>
ここまでで問題なければ[完了]でカスタマーキーを作成してください。
② AWS Systems Managerの[自動化]より、[Execute automation]を押下します。
③ Choose rumbookで「AWSSupport-AnalyzeEBSResourceUsage」を検索し、該当リンクを押下します。
もしくは、該当runbookを選択して[Next]を押下します。
④AWSSupport-AnalyzeEBSResourceUsage の説明画面に遷移します。[オートメーションを実行する]を押下します。
⑤[Simple execution]を選択、Runbook nameを確認、[CustomermanagedKmsKeyArn]に上記手順①にて作成したカスタマーマネージドキーのARNを入力してください。
⑤ 実行が完了するまで待ち、statusがSuccessになれば完了です。
⑥ Amazon S3 にてバケットが2つ生成されます。
・aws-support-ssm-AWSアカウントID-awssupport-作成年月日
・aws-support-ssm-AWSアカウントID-awssupport-作成年月日-logging
生成ファイルについて
◾️[aws-support-ssm-AWSアカウントID-awssupport-作成年月日]
バケット内に以下のファイルが作成されます。
・ap-northeast-1-image.csv
・ap-northeast-1-volume.csv
・ap-northeast-1-snapshot.csv
◾️[aws-support-ssm-AWSアカウントID-awssupport-作成年月日-logging]
こちらのバケットも同時に作成されますが、こちらは自動的にAmazon S3 サーバーアクセスログが有効になるためであり、Amazon S3 サーバーアクセスログ用のバケットになります。
<参考ドキュメント>
独自の Amazon S3 バケットを指定する場合は、次のベストプラクティスに従って設定されていることを確認してください。 ・バケットへのパブリックアクセスをブロックします (IsPublicに 設定False)。 ・Amazon S3 アクセス ログをオンにします。 ・バケットへの SSL リクエストのみを許可する。 ・オブジェクトのバージョン管理をオンにします。 ・AWS Key Management Service (AWS KMS) キーを使用してバケットを暗号化します。
AWSSupport-AnalyzeEBSResourceUsage
◾️
gatherAmiDetails: Searches for AMIs, which are not in use by any Amazon EC2 instances, generates the report with the name format -images.csv, and uploads it to the Amazon S3 bucket. (訳) どの Amazon EC2 インスタンスでも使用されていない AMI を検索し、名前形式 のレポートを生成して-images.csv、Amazon S3 バケットにアップロードします。
AWSSupport-AnalyzeEBSResourceUsage
注意点
こちらについて確認したところ、まずEC2インスタンスを作成し、その後AMIを作成するとこの
そしてこの作成したAMIを利用してEC2インスタンスを別途作成すると
そのため、この
◾️
gatherVolumeDetails: Verifies Amazon EBS volumes in the available state, generates the report with the name format -volume.csv, and uploads it in an Amazon S3 bucket. (訳) Amazon EBS ボリュームが使用可能な状態であることを確認し、名前形式 のレポートを生成し-volume.csv、Amazon S3 バケットにアップロードします。
AWSSupport-AnalyzeEBSResourceUsage
こちらについてはEC2インスタンスに紐づいておらず、スナップショットにも紐づいていないボリュームが表示されます。そのため、
◾️
gatherSnapshotDetails: Looks for the Amazon EBS snapshots of the Amazon EBS volumes that are deleted already, generates the report with the name format <region>-snapshot.csv, and uploads it to Amazon S3 bucket. (訳) すでに削除されている Amazon EBS ボリュームの Amazon EBS スナップショットを検索し、名前形式 のレポートを生成して <region>-snapshot.csv、Amazon S3 バケットにアップロードします。
AWSSupport-AnalyzeEBSResourceUsage
こちらで表示されるスナップショットはEBSボリュームが存在せず、かつAMIでも使用していないスナップショットが表示されました。そのため、こちらも意図的に残していないのであれば削除してよろしいかと思います。
上記3つのファイルの内、特に
少々ややこしいのですが、AMI内にはSnapshotがあります。このSnapshotは「-snapshot.csv」には表示されません。Snapshotにはvolumeがあります。このvolumeは「-volume.csv」には表示されません。それぞれAMIが存在することからかとと思います。しかし、Snapshot、volume、EC2インスタンスが存在していてもそのAMIを使用してEC2インスタンスを作成していない場合は「-image.csv」に表示されることが分かりました。
Amazon EBS-backed AMI – AMI から起動されるインスタンスのルートデバイスが、Amazon EBS スナップショットから作成される Amazon Elastic Block Store (Amazon EBS) ボリュームであることを意味します。Linux AMI と Windows AMI の両方でサポート。
・Amazon EC2 の AMI タイプと特性 – ルートデバイスタイプ
まとめ
検証環境のリソースはたまりやすく、コストが増加しがちです。
定期的に本オートメーションランブックを実施していただくなどして不要なコスト抑制に活用できるかと思います。
本記事がお役に立ちましたら幸いです。