[TIPS] AMIとそれに紐づくスナップショットをBash Scriptでまとめて削除する
小ネタです。
今回はAMI削除時に、それに紐づくEBSスナップショットをまとめて削除するためのTIPSを紹介します。
やりたいこと
作成したAMIを綺麗に削除したい場合、単純にAMIを登録解除するだけでは関連するsnapshotなどが残り続ける場合があります。
この記事では、指定したAMIをスナップショット含め削除してくれる簡易なBash Scriptを紹介します。
スクリプト
以下が紹介するスクリプトです。事前にjq
のインストールが必要です。
複数のAMI IDを指定するとスナップショット含めてまとめて削除してくれます。
おまけ
上記スクリプトの応用として、弊社が提供している自動実行サービスのバックアップをまとめて削除するスクリプトを紹介します。ジョブ名を指定すると、そのジョブが作成したAMIバックアップ全てをスナップショットも含めて削除できます。insightwatchへの移行時などにご利用ください。
自動実行サービスによるAMIバックアップジョブでは、ジョブの対象となるEC2インスタンスを、cm-DailyBackupNoreboot:true
のような指定のタグが付与されているかによって識別します。そして作成されたAMIバックアップには、EC2インスタンスのタグに対応する形でcm-Job:cm-DailyBackupNoreboot
のようなタグが付与されます。
このため、自動実行によって作成されたジョブを確認したい場合は、cm-Job
をタグキーに持ち、指定のジョブ名を値に持つAMIを検索することで簡単に特定することができます。AMIバックアップの削除に限らず、バックアップ件数の調査を行いたい場合などにも活用できます。
関連記事
本記事に限らず、近い目的で様々な記事が過去に作成されています。ユースケースに合わせて、より適したアプローチをご選択ください。
AMI削除時にスナップショットも自動で削除するCloudWatch Events AMIの登録解除をイベントフックして、自動的にLambdaから関連するスナップショットを削除する仕組みを作っています。
[EC2] 不要なAMIを一括で削除したい 大規模な数のAMIをまとめて削除するため、事前に対象をCSVに出力し、確認後にまとめて削除する手順を取っています。