Snapshot を論理削除とする新機能「ごみ箱(Recycle Bin)」を試してみた

記事タイトルとURLをコピーする

営業部 佐竹です。
本日は re:Invent 2021 より新機能「Recycle Bin」のご紹介です。

はじめに

aws.amazon.com

「Recycle Bin」という所謂「ごみ箱」機能が新規に実装されました。

これは Windows OS 等にある「ごみ箱」と同じような機能となっており、EBS Snapshot の「削除」を「物理削除」から「論理削除」とすることが可能になりました。

早速検証してみます。

Recycle Bin を試す

Retention rule(保持ルール)を作成する

まずは Recycle Bin で Retention rule を作成します。

f:id:swx-satake:20211202124230p:plain

この設定は、どのリソースの削除をごみ箱に入れるかという「フックするための設定」です。

f:id:swx-satake:20211202124248p:plain

Rule details は全て Optional ですので、入力する必要はありませんが今回は画像の通りの入力としました。

f:id:swx-satake:20211202145912p:plain

Retention settings における「Resource type」は、どのサービスリソースをごみ箱に入れるかを特定するのですが、現時点では EBS Snapshot のみが存在していますので、これを選択します。

さらに、タグもしくは対象のサービスリソース全てどちらかの指定が可能です。今回は「Apply to all resources」を押下し、EBS Snapshot 全てを対象とします。

「Retention period」は期間の設定で、この期間を過ぎると物理削除されるという「ライフサイクル」の設定です。今回は1週間=7日とします。1-365日とあるように、ゴミ箱内では最大1年間の保存ができます。

「Create retention rule」を押下して作成を完了します。

動作確認

f:id:swx-satake:20211202130416p:plain
snap-0d7dcbfe8a116cf04

今回、動作確認として「snap-0d7dcbfe8a116cf04」を削除していきます。

f:id:swx-satake:20211202130451p:plain
Delete

通常通りの削除を行います。

f:id:swx-satake:20211202130625p:plain

全ての EBS Snapshot がごみ箱へと移動する設定になっているので、これでごみ箱に移動しました。

f:id:swx-satake:20211202130706p:plain

Recycle Bin のコンソールを表示し「Resources」を開くと、先ほど削除した 「snap-0d7dcbfe8a116cf04」がごみ箱内に移動していることが確認できました。

f:id:swx-satake:20211202130824p:plain

1週間後に削除となっているため、Bin exit date は「Thu Dec 09 2021 13:05:49 GMT+0900 (日本標準時)」になっていました。

ごみ箱から取り出す

f:id:swx-satake:20211202131219p:plain

ごみ箱に入った Snapshot を元通り EC2 のコンソールで表示させて再利用するには、「Recover」を使用します。

f:id:swx-satake:20211202131411p:plain

「Recover」を押下し、続いて確認画面で「Recover resources」を押下します。

f:id:swx-satake:20211202131605p:plain

これで元通り Snapshot が再利用できるようになります。

注意事項

以下公式ドキュメントにある注意事項等、気を付けるべき点をご紹介します。

docs.aws.amazon.com

fast snapshot restore の設定が無効化される

f:id:swx-satake:20211202132330p:plain
fast snapshot restore

fast snapshot restore とは、Snapshot から EBS Volume を作成した後に発生するファーストタッチペナルティをなくす機能で、有償オプションです。

このオプションは、一度ごみ箱を経由すると自動的にオフになると記載があります。ただし、すぐに Recover(取り出し)をした場合はオフにならないとも記載があります。これは、fast snapshot restore の有効化にある程度時間がかかるように、無効化にもある程度の時間がかかるためと想定されます。またそれにかかる時間は、Snapshot のサイズに比例して長くなると想定されます。

よって、ごみ箱を経由した後 fast snapshot restore を利用したい場合は、再度設定を確認される方がよいでしょう。

f:id:swx-satake:20211202133016p:plain

実際に検証してみたところ、Fast snapshot restore は数分間ごみ箱に設置しているだけで Disabled になっていました。

ごみ箱に入っている間は共有設定が無効化される

EBS Snapshot はそれを Public に公開することや、特定の AWS アカウントに共有することが可能な機能を持っています。

この機能を有効化していた場合、ごみ箱に入った後はそれが解除されます。ただし、fast snapshot restore とは異なり共有の設定は Recover 後に自動的に復元されます。

複数の Retention rule に一致する場合は最長期間が優先される

f:id:swx-satake:20211202133956p:plain

全ての EBS Snapshot をフックする Retention rule を先ほど作成した7日後削除に加えて、1日後削除のものを作成してみました。

このようにルールが複数一致する場合に Snapshot を削除すると、より長い期間が設定されている Retention rule が優先されます。

f:id:swx-satake:20211202134155p:plain

再度 Snapshot の削除を試してみたところ、1日後削除のルールをスルーして7日間の保持設定がされていました。

リージョンレベルとタグレベルの設定が一致した場合はタグレベルが優先される

「Apply to all resources」の設定はそのリージョン全ての Snapshot を対象とするリージョンレベルの設定です。

リージョンレベル同士がぶつかった場合は、最長期間が優先されますが、タグレベルとぶつかった場合はタグレベルが優先されます。

f:id:swx-satake:20211202134809p:plain

検証のため、先ほど作成した「1日後削除」のルールをタグレベルの設定に変更します。上画像の通り Name:TagLevelTest というタグキーとバリューを付与された Snapshot と一致するルールとなるよう、設定を修正しました。

f:id:swx-satake:20211202135109p:plain

snap-02208658af7078797Name:TagLevelTest を付与し、削除を行います。

f:id:swx-satake:20211202135454p:plain

snap-02208658af7078797 を削除すると7日ではなく「1日後削除」となり、タグレベルが優先されることが確認できました。

ごみ箱にあるリソースを削除することはできない

ごみ箱に入っているスナップショットを手動で削除することはできません。

スナップショットは、保持ルールで定められた期限を迎えると自動的に削除されます。それ以外での削除方法は現時点で存在しておりません。

ごみ箱にある Snapshot はタグ以外の設定変更ができない

ごみ箱内に入っている Snapshot のタグは編集可能ですが、それ以外の全ての設定変更はできません。

もし設定を変更したい場合は「Recover」を実行して EC2 のマネジメントコンソールから変更を行う必要があります。

ちなみに、ごみ箱に入ると Storage Tier(スタンダードかアーカイブか)も見えなくなります。

1-365 days のライフサイクルは無効化できない

1日から365日までのライフサイクルが強制されるという機能になっているため、ごみ箱内で永遠に保持することはできない点に注意してください。

AWS Backup との兼ね合い

検証したところ、AWS Backup で世代管理をしている EC2 インスタンスの AMI&Snaphot においても、削除された Snapshot がごみ箱の「retention rule」に一致した場合はごみ箱に入ります。

余談ですが、AWS Backup で管理されている Snapshot をマネジメントコンソールから削除しようとすると「AWS Backup で管理されているため削除できない」と以下のメッセージが出ます。

This snapshot is managed by the AWS Backup service and cannot be deleted via EC2 APIs. If you wish to delete this snapshot, please do so via the Backup console.

そして、一度ごみ箱に入った AWS Backup で管理されていた Snapshot は、それを「Recover」したとしても AWS Backup との紐付きが切れているため、通常通りに削除することが可能となります。

利用料について

Recycle Bin の機能自体には利用料は発生しません。無料でご利用いただけます。

しかし、ごみ箱に入っている EBS Snapshot には通常通りの利用料が発生します。「EC2 マネジメントコンソール の EBS Snapshot の一覧にはないものの Snapshot の利用料が発生する」ということになりえるため、コストをシビアに気にされる場合は今後 Recycle Bin の確認も必要となるでしょう。

まとめ

間違えて削除した場合のリカバリとして「ごみ箱」機能がリリースされました。ごみ箱へ入れるための対象選定はリージョンレベルでまとめて設定するか、タグレベルでの指定が可能となっています。

なお、EBS Snapshot 自体をライフサイクル(日付指定)してごみ箱へ移動することは現状できません。EBS Snapshot 自体にライフサイクルでごみ箱へと移動させる機能が合わせてリリースされたらよかったなと感じます。

また、AMI に紐づく Snapshot は今まで通り AMI - Snapshot 間の紐づけを解除してから削除を行う必要があり、AMI と紐づけたままごみ箱へ入れることは不可能です。この点も少し残念だなと感じました。AMI との紐づけを解除すると Windows OS 等ではもはや AMI として活用できないため、ブートボリュームとしては活用が厳しくなります。

というわけで、ざっと「ごみ箱」について解説しました。EBS Snapshot へ論理削除を使いたい方にはとても良い機能だと感じますので、ぜひ有効化してみてください。マネジメントコンソールの実装を見ると、今後他のリソースでもごみ箱機能が提供されて行きそうですね。

では、またお会いしましょう。

佐竹 陽一 (Yoichi Satake) エンジニアブログの記事一覧はコチラ

営業部カスタマーサクセス課所属。AWS資格12冠。2010年1月からAWSを利用してきました。2021 Japan APN Ambassador /2020-2021 APN ALL AWS Certifications Engineer。AWSのコスト削減、最適化を得意としています。