😺

【初心者向け】Amazon S3 バージョニングの挙動

2024/08/17に公開

はじめに

本ページは個人の勉強で使用することを目的に作成しておりますが、記載の誤り等が含まれる場合がございます。
最新の情報についてはAWS公式ドキュメントをご参照ください。

S3のバージョニングとは

  • S3バケットで、オブジェクトの複数のバージョンを保持・取得・復元できる機能。
  • S3バケットは、バージョニングに関して以下の3つの状態にある。
    • Unversioned (バージョニングが無効) (デフォルト)
    • Versioning-enabled (バージョニングが有効)
    • Versioning-suspended (バージョニングが停止)


バージョニング無効

操作 挙動
CREATE
(オブジェクトのアップロード)
バージョンID: null を付与する
READ
(オブジェクトの読み取り)
同名のオブジェクトを1つ読み取る
update
(同名オブジェクトのアップロード)
アップロードしたオブジェクトに上書きされる
(同名のオブジェクトは1つのみ保持)
delete
(オブジェクトの削除)
同名のオブジェクトを1つ削除する


バージョニング有効


https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/userguide/AddingObjectstoVersioningEnabledBuckets.html

操作 挙動
CREATE
(オブジェクトのアップロード)
個別のバージョンIDを付与する
READ
(オブジェクトの読み取り)
現行バージョンのオブジェクトを読み取る
update
(同名オブジェクトのアップロード)
最後にアップロードしたオブジェクトを現行バージョンとして扱う。
非現行バージョン以前のバージョンは上書きされず保持する。
delete
(オブジェクトの削除)
オブジェクトは削除されず、削除マーカーが挿入される

※現行バージョン
最新のバージョンのこと。
※非現行バージョン
最新のバージョン以前のバージョンの事。

削除マーカー

  • バージョニング有効 or 停止時に、オブジェクトを削除した場合に挿入される。
  • オブジェクトが削除されたように振る舞う(404エラーを返す)オブジェクト。
  • 削除マーカーを削除することでバージョンの復元が可能。


バージョニング停止

バージョニングを一度有効化した後、バージョニングを停止した状態。

https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/userguide/AddingObjectstoVersionSuspendedBuckets.html

操作 挙動
CREATE
(オブジェクトのアップロード)
バージョンID: null を付与する
READ
(オブジェクトの読み取り)
現行バージョンのオブジェクトを読み取る
update
(同名オブジェクトのアップロード)
最後にアップロードしたオブジェクトを現行バージョンとして扱う。
バージョンID:nullは上書きする。
(バージョニング有効時に付与された)個別のバージョンIDを持つオブジェクトは保持する。
delete
(オブジェクトの削除)
バージョンID:nullのオブジェクトは削除される。
個別のバージョンIDを持つオブジェクトは削除されない。
削除マーカー必ず挿入される(同名オブジェクトがバージョンID:nullのみの場合も挿入され期限切れ削除マーカーとなる。)

期限切れ削除マーカー

  • 削除されたように振る舞う対象のオブジェクトが存在しない削除マーカー。
  • バージョニング停止時のバージョニングID:nullオブジェクト削除のほか、ライフサイクルルールで削除マーカーのみ削除されなかった場合など発生する。


おわりに

  • バージョニングの状態を有効無効にはできない。無効停止では挙動が異なるので注意。
  • S3のバージョニングは地味ですが、ライフサイクルルール・レプリケーションルールの作成など様々なサービスを利用する際に抑えておきたい概念なのでまとめました。

参考

https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/userguide/Versioning.html

Discussion