[アップデート] EC2 の AMI で「登録解除保護」を有効にして、誤った AMI 削除を防ぐことができるようになりました

2024.04.26

いわさです。

What's New のアナウンスを見つけることが出来ていないのですが、2 ~ 3 日前から EC2 AMI の機能として、「登録解除保護」ができるようになっています。
この新しい機能は、AWS 公式ドキュメントの更新履歴や AWS CLI のリリースノートにも既に記載されています。

Document history - Amazon Elastic Compute Cloud より

これまで誤った AMI の解除に対処するために AMI の「ごみ箱」機能を有効化することが出来ました。

ごみ箱機能は削除後も別の領域に AMI が残り続けるもので、全ての AMI を対象あるいはタグなどルールベースで対象を選択することが出来ました。

今回の保護解除機能を使うことで、特定の重要な AMI を保護することができるようになります。

登録解除保護を有効化する

登録解除保護を有効化する方法ですが、まず AMI 作成時に自動で有効化することは出来ないようです。
そのため自動化したい場合は AMI 作成完了イベントなどをフックして登録解除保護を有効化するなどを考える必要がありそうです。

登録解除保護は AMI コンソールで対象の AMI を選択し、アクションメニューから操作することが出来ます。
「Manage AMI deregistration protection」アクションが新しく追加されています。(本日時点では日本語化がまだ追いついていなさそうでしたが)

このアクションを開くと登録解除保護機能を管理することが出来ます。

登録解除保護は有効化あるいは無効化を行うことができるのですが、有効化にはクールダウン有りと無しという種類が存在しています。

登録解除保護 + クールダウンなし

まず、一覧に「登録解除保護」という列が追加されており表示することが出来ます。
登録解除保護をクールダウンなしで設定すると、「enabled-without-cooldown」という表示になります。

早速 AMI の登録解除をしてみましょうか。

まず、「AMI を登録解除」のダイアログは表示されます。
確定してみます。

登録解除操作に失敗しました。
エラーメッセージを見てみると、保護を無効化してやり直してねと言われていますね。期待どおりの動作です。

登録解除保護を無効化して解除してみる

ということで、保護されている AMI を削除したくなった時を想定して保護の無効化と解除操作を行ってみましょう。
先ほどと同様に「Manage AMI deregistration protection」を開きます。

「Disable」を選択し、保存します。

「登録解除保護」が「disabled」状態に変更されました。
保護が無効化出来たはずなので、再び AMI の登録解除を行ってみましょう。

AMI の登録解除に成功しました。

登録解除保護 + クールダウンあり

登録解除保護にはクールダウンという概念があるようです。
「Enable with a 24-hour cooldown period」を設定することでクールダウン付きの解除保護となります。

クールダウンについては公式ドキュメントにて説明されています。

This cooldown period is the time during which deregistration protection remains in effect after you turn it off. During this cooldown period, the AMI can’t be deregistered. When the cooldown period ends, the AMI can be deregistered.

Deregister (delete) an AMI - Amazon Elastic Compute Cloud

クールダウン付きで解除保護を有効化した場合、解除保護を無効化しても 24 時間は削除できなくなるという動きになります。

クールダウンが設定されている場合は、無効化後に次のような表示となります。
登録解除保護列に日時が設定されている場合はクールダウン期間が設定されている状態だと覚えておきましょう。

保護無効化はされていますが、登録解除に失敗しました。
24 時間後になれば解除できるということですね。

さいごに

本日は EC2 の AMI で「登録解除保護」を有効にして、誤った AMI 削除を防ぐことができるようになったので、有効化・無効化の方法を紹介しました。

ゴミ箱機能も削除誤りを防ぐ方法として一定有効ですが、特に必ず保護する必要がある AMI であれば、EnableImageDeregistrationProtectionDisableImageDeregistrationProtectionアクションで権限コントロールができる今回の機能は非常に有効ではないでしょうか。

2024.05.02 追記

アナウンスも出ました。
以下によるとごみ箱でも削除ミスを防ぐことは出来るが、起動テンプレートなどで使っている場合はごみ箱から復元するまでは起動できなくなるという点が挙げられていました。
なるほど。登録解除保護機能、確かに有効ですね。