EC2: 過去のAMIとスナップショットをまとめて削除

概要

「 EC2: 過去のAMIとスナップショットをまとめて削除」アクションでは、選択した複数のAWSアカウントのすべてのリージョンにおいて、過去のAMIの登録解除およびそのAMIに紐付いたEBSスナップショット(以下スナップショット)の削除を一括して行うことができます。

※わかりやすさのため、以降はAMIの「登録解除」についてもスナップショットと同様に「削除」と表記します。

AMIが過去のものかどうか判定するための基準は、以下の2通りで指定することができます。

  • AMIが作成されてからの経過日数
  • AMIの作成日が特定の日付以前

例えば、判定するための基準を「365日以上前に作成されたAMI」と指定して3つのAWSアカウントを設定した場合は、3つのAWSアカウントそれぞれで、利用可能な全リージョンにおいて、作成から365日以上経過したAMIとスナップショットが1回のジョブ実行で削除されます。

なお、特定のタグが付与されているAMIを削除する対象から除外することもできます。

設定時のオプション

No. オプション 説明
1 削除するAMI

経過日数で指定する場合
AMIが作成されてからの経過日数で指定するには、「〜日以上前に作成されたAMI」を選択して日数を入力します。日数には1〜10,000が入力できます。

bulk_delete_images-form-01.png

日付で指定する場合
AMIの作成日が特定の日付以前かどうかで指定するには、「〜以前に作成されたAMI」を選択して年月日を指定します。過去の日付のみが指定できます。指定された日付は、日本時間における日付として解釈されます。

bulk_delete_images-form-02.png

2 特定のタグが付いたAMIを除外する

削除対象となるAMIのうち、削除したくないAMIをタグで指定する場合にチェックします。

例えば、以下のように設定するとジョブ実行時にタグ「CASkip:yes」がついているAMIとそれに紐づくスナップショットは削除されずにスキップされます。

bulk_delete_images-form-03.png

設定例

「EC2: 過去のAMIとスナップショットをまとめて削除」アクションを使ったジョブを作成してみます。

  1. Cloud Automator の運用ジョブ画面から「ジョブの追加」ボタンをクリックします
  2. ジョブを所属させるグループを選択します
  3. トリガーの選択で、任意のトリガーを選択します
  4. アクションの選択で「EC2: 過去のAMIとスナップショットをまとめて削除」アクションを選択します
  5. AWSアカウントの選択でAWSアカウントを1〜50件以内で選択します。複数選択する場合は、WindowsではCtrlキーを押しながら、macOSではCmdキーを押しながら選択肢をクリックしてください。また、Shiftキーを押しながら一括選択することもできます
  6. アクションのパラメーターを設定します
    No. オプション 設定値の例
    1 削除するAMI 365日以上前に作成されたAMI
    2 特定のタグが付いたAMIを除外する チェックしない
    bulk_delete_images-form-04.png

削除されるAMIとスナップショットのプレビュー

このアクションでは、ジョブを実行した場合に削除されるAMIとスナップショットの一覧をあらかじめCSVファイルとしてプレビューすることができます。

プレビューを行う手順については「対象リソースプレビューCSVについて」をご覧ください

対象リソースプレビューCSVの内容

このアクションの対象リソースプレビューCSVは、文字コードエンコーディングがUTF-8で、以下のサンプルのような内容になっています。

bulk_delete_images-preview-06.png

1行につき、対象となる1つのAMIとそれに紐づくスナップショットが記録されます。各列に記載される情報は以下の通りです。

AWSアカウントID AMIを所有しているAWSアカウントのID(AWSが付与する12桁の番号)
AWSアカウント名 AWSアカウントの名前(AWSアカウントをCloud Automatorに登録した際に付けた名前)
リージョン AMIが存在しているリージョン
AMI ID AMIのID
AMI作成日(JST) AMIが作成された日(日本時間)
EBSスナップショットID AMIに紐付いているスナップショットのID。複数紐付いている場合は、紐付いているスナップショットがカンマ区切りで列記されます。
備考

空欄の場合、このAMIはジョブ実行によって削除されます。

skippedの場合、このAMIはジョブ実行時に削除されずスキップされます。

skippedの場合は、以下のようにスキップされた理由も記載されます。

  • skipped (This image is created by AWS Backup.)
    • AMIがAWS Backupで管理されているためスキップされた
  • skipped (This image has an exclusion tag.)
    • ジョブの「特定のタグが付いたAMIを除外する」に設定されたタグがAMIに付与されているためスキップされた
  • skipped (The image is XXX.)
    • AMIの状態がavailableではなくXXXだったためスキップされた

実行結果の確認

  1. 作成したジョブのログボタンをクリックします
  2. 実行ログ一覧から該当の実行ログの詳細をクリックします
  3. ログの詳細にて結果を確認します
    「成功」となっていれば該当のジョブが実行されて成功していることが確認できます。
    「実行中」となっている場合はジョブの実行中なのでしばらく経ってから確認してください
  4. それぞれのAMIおよびスナップショットの操作結果は「リソース操作結果」の項目で確認できます
    • AMIとスナップショットの削除が成功したかどうかは「リソース操作結果」の最初に表示されている4つの箱(completed、skipped、aborted、failed)に表示される件数で把握できます
    • AMIとスナップショットそれぞれで、どのリソースがどのような結果になったかを知りたい場合は「リソース操作結果詳細 (AMI)」と「リソース操作結果詳細 (EBSスナップショット)」を確認します
    • それぞれのリソース操作結果詳細は、見出し部分をクリックすることで詳細表示を展開することができます
  5. リソース操作結果詳細
    • 「AWSアカウント別サマリー」のタブには、AWSアカウント毎、リージョン毎に成否に応じたリソース数の集計が表示されます
    • 「completed」のタブには、問題なく削除ができたリソースの詳細が表示されます
    • 「skipped」のタブには、AWS Backupで管理されていたり、除外する対象とするタグが付いているためスキップされたリソースの詳細が表示されます
    • 「aborted」および「failed」のタブには、処理中に何らかのエラーが発生したリソースの詳細が表示されます

bulk_delete_images-results-01.png

ログのステータス条件

ジョブの実行結果 条件
成功

削除すべきAMIおよびスナップショットがすべて問題なく削除できた場合。

スキップされたAMIがあっても成功となります。

失敗

以下の場合に失敗となります。

  • AWSアカウントの権限不足などにより、リージョン一覧やAMI一覧を取得できなかった場合
  • 削除に失敗したAMIがあった場合
  • 削除に失敗したスナップショットがあった場合
  • 削除すべきAMIが1件も存在しなかった場合

リソース操作履歴のステータス条件

AMI

リソース操作結果 条件
Completed AMIに対するDeregisterImage APIリクエストが成功し、一定時間内にAMIが削除された場合。
Failed

以下のいずれかの場合。

  • DeregisterImage APIの呼び出しが成功しなかった
  • DeregisterImage APIの呼び出しが成功したが、一定時間内にAMIが削除されなかった
  • AWSアカウントあたりのAMI処理数の上限を超えた
Skipped

以下のいずれかの場合。

  • 削除対象のAMIに、AMIを除外するためのタグが付与されていた
  • AMIがAWS Backupで管理されている
  • AMIの登録解除保護が有効になっている
Aborted 予期しない問題が発生した場合。

スナップショット

リソース操作結果 条件
Completed スナップショットに対するDeleteSnapshot APIリクエストが成功した場合
Failed スナップショットに対するDeleteSnapshot APIリクエストが成功しなかった場合
Aborted 予期しない問題が発生した場合

注意事項

このアクションには以下のような制限があります。

  • 1つのジョブで設定できるAWSアカウントの数は最大50件
  • 各AWSアカウントで利用可能なすべてのリージョンが処理対象となる(除外するリージョンを指定することはできない)
  • 各AWSアカウント毎に一度に削除できるAMIは、すべてのリージョンにあるAMIを合計して最大で1,000件
    • したがって、1回のジョブ実行で削除できるAMIの上限はAWSアカウント50件×AMI 1,000件=50,000件となる
  • AWSアカウント1つにつき、すべてのリージョンにある削除対象AMIの合計が1,000件を超えている場合は、ランダムに選ばれた1,000件が対象となり、それ以外のAMIは失敗となる

このアクションは対象のAMIおよびスナップショットを一括で削除するため、他のアクションに比べて消費されるアクティビティが多くなります。例えば、合計100件のAMIおよびスナップショットが削除対象となるジョブを毎日実行した場合、30日間で約3,000アクティビティを消費する可能性があります。

ご契約中のプランで設定されている運用ジョブ実行上限を超過しないよう、あらかじめ消費アクティビティ数の試算をされることをお勧めします。

このアクションで利用されるAWS API

このアクションは以下のAWS APIを利用しています。
実行するAWSアカウントにはこれらのAPIを実行可能なIAMポリシーがアタッチされている必要があります。

この記事は役に立ちましたか?
0人中0人がこの記事が役に立ったと言っています
他にご質問がございましたら、リクエストを送信してください