【小ネタ】バージョニングが有効なS3バケットを空にする時の注意

完全に削除したオブジェクトは元に戻すことはできないので気をつけましょう

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは。AWS事業本部トクヤマシュンです。

バージョニングが有効なS3に、マネジメントコンソールから「空にする」操作を行う機会がありました。
その際の挙動をはじめて知ったので、不幸な事故を防ぐためにも小ネタとして共有します。

はじめに結論

バージョニングを有効にしたS3に対して空にする操作を行うと、オブジェクトの復旧はできないので注意しましょう。

理由

過去のバージョン含めたすべてのオブジェクトが削除されるためです。

公式のドキュメント「バケットを空にする」にも記載があります。

バージョニングが有効化または一時停止された S3 バケット含むバケットを空にすると、そのバケット内のすべてのオブジェクトの、すべてのバージョンが削除されます

試してみる

実際の画面を見ながら、動きを確認してみましょう。

まず、バージョニングが有効なバケットを作成します。

バケットにオブジェクトを追加します。

バケットのラジオボタンを選択し、空にするボタンをクリックします。

バケットを空にすると、バケット内のすべてのオブジェクトが削除され、元に戻すことはできませんと表示されます。
また、完全に削除というキーワードを入力する必要があります。
これが削除後にはもう復旧できないことを表しているとご理解ください。

空にするを実行した後、バケットにオブジェクトは無く、復旧はできません。

以上、バージョニング有効化バケットでの空にする操作でした。

参考:オブジェクトの削除

バケットを空にする時の挙動は分かったけど、オブジェクトを指定して削除した時ってどうなるんだっけ?という疑問が湧いてきました。
ここからは参考として、バージョニング有効化バケットでオブジェクトを削除した時の動作を見ていきます。
マネジメントコンソールでのバージョンの表示有無によって挙動が異なるので、それぞれ画面を確認します。

バージョンの表示無しでオブジェクト削除

この場合は、削除によって削除マーカーが追加されます

まず、バージョンの表示がオフの状態で、バケット内のオブジェクトを選択し、削除ボタンを押します。

先ほどと違い、指定したオブジェクトを削除すると、削除マーカーが追加されますと表示されます。
また、入力するキーワードも完全に削除ではなく削除となっています。

削除後、バージョンの表示をオンにすると、オブジェクトは実際には削除されずに残っており、
オブジェクトの最新バージョンが削除マーカーになっていることがわかります。

この状態だと、オブジェクトを復旧させることが可能です。
削除マーカーを選択して削除ボタンをクリックします。

指定されたオブジェクトが削除マーカーであることを確認の上、完全に削除を入力し、オブジェクトの削除を行います。

オブジェクトを復旧することができました。

バージョンの表示有りでオブジェクト削除

この場合は、削除によってオブジェクトのバージョンが削除され、復旧不可になります

バージョンの表示をオンにして、バケット内のオブジェクトを選択し、削除ボタンを押します。

この場合は、指定したオブジェクトの削除は元に戻すことができませんと表示されます。
また、入力するキーワードも完全に削除となっています。

削除した後にバケットを確認すると、オブジェクトはありません。
この状態だと復旧不可です。

以上、バージョニング有効化バケットでオブジェクトを削除した時の動作でした。

趣味のスパイスカレー

突然ですが、私の趣味はスパイスカレー作りで、ブログに投稿していってます。
本当に本筋とは全然関係ありませんが、お付き合いいただけますと幸いです。

  • シラスと筍のローストココナッツカレー
  • カシューナッツ豚キーマ

春も終わりに近づいてきていますが、旬のシラスと筍のカレーです。
シラスはスパイスに負けないくらい旨味が強くてとてもおいしかったです。
豚キーマもカシューナッツの食感が程よいアクセントとなって良かったです。

最後に

バージョニングを有効にしているS3バケットでも、空にする操作を行うと、オブジェクトの復旧はできませんので注意しましょう。
本ブログにより誤削除による不幸な事故が1つでも無くなれば幸いです。 それでは。