ストレージ

S3 バージョニングとは?オブジェクト世代管理と誤削除防止

S3 バージョニングは 同じキーに対して複数の世代(バージョン)を保持する機能。上書きしても古いバージョンは残り、削除しても削除マーカーが付くだけで実体は残る(ソフト削除)。誤削除・上書きからの復旧、コンプライアンス対応、レプリケーションの前提条件になる。 ---

オブジェクトの上書き・削除を「世代管理」して、過去のバージョンを保持する機能。


1. 概要(端的に)

S3 バージョニングは 同じキーに対して複数の世代(バージョン)を保持する機能。上書きしても古いバージョンは残り、削除しても削除マーカーが付くだけで実体は残る(ソフト削除)。誤削除・上書きからの復旧、コンプライアンス対応、レプリケーションの前提条件になる。


2. 何ができるか

  • 上書き履歴の保持:旧バージョンが自動保管
  • 削除のソフト化:削除しても元データは残る
  • 誤操作からの復旧:旧バージョンを復元可能
  • MFA Delete:永続削除に MFA を要求(万一の保険)
  • クロスリージョンレプリケーションの前提:レプリには Versioning 必須
  • Object Lock の前提:WORM 機能には Versioning 必須

状態

  • Disabled(デフォルト):バージョニングなし
  • Enabled:有効化(一度有効にしたら Disabled には戻せず Suspended のみ)
  • Suspended:一時停止(既存バージョンは残るが新規は上書き)

3. 特徴

観点特徴
追加料金旧バージョン分のストレージ料金(オブジェクトが増えた扱い)
粒度バケット単位(オブジェクト単位は不可)
削除動作削除マーカーが付き、旧バージョンは残る
旧バージョンへのアクセスバージョン ID を指定して GET
MFA Deleteバケット所有者が有効化、永続削除に MFA 必須
解除一度有効化したら無効化不可(Suspended のみ)

Versioning 有効化後の動作

操作動作
PUT(同じキー)新しいバージョン ID で追加(旧版は残る)
DELETE削除マーカーが追加(実体は残る)
DELETE(バージョン ID 指定)指定バージョンを永続削除
GET(バージョン ID なし)最新バージョンを返す
GET(バージョン ID 指定)指定バージョンを返す

4. 仕組み

S3 バージョニングは 各オブジェクトに VersionId を付与し、削除時は 削除マーカー(DeleteMarker) を最新バージョンとして追加する。

構成要素

  • Version ID:オブジェクトの世代識別子
  • Latest Version:最新バージョン
  • Noncurrent Version:旧バージョン
  • Delete Marker:削除を示す特殊オブジェクト

動作の流れ

  1. バケットでバージョニング有効化
  2. オブジェクト PUT:Version ID 付きで保存
  3. 同キーで PUT:新 Version ID で追加(旧版は Noncurrent に)
  4. DELETE:Delete Marker を Latest として追加
  5. GET(無指定):Delete Marker または最新版を返す
  6. GET(VersionId 指定):その世代のオブジェクトを返す
  7. 永続削除:VersionId 指定で DELETE

ライフサイクルとの組み合わせ

Noncurrent Version Transition
  → 30 日後に IA、90 日後に Glacier
Noncurrent Version Expiration
  → 365 日後に削除

旧バージョンは アクセス頻度がほぼゼロ なので、Glacier に置くのが合理的。


5. ユースケース

ユースケース 1:誤上書き・誤削除対策

重要なドキュメントの履歴管理。ランサムウェア対策にも有効

ユースケース 2:コードリポジトリ

ビルド成果物・デプロイパッケージの履歴管理。

ユースケース 3:クロスリージョンレプリケーションの前提

DR 用にバージョニング有効化 + レプリケーション設定。

ユースケース 4:監査・コンプライアンス

変更履歴の証跡保管。

ユースケース 5:Object Lock 併用

法的保持要件のため WORM 化。


6. 関連用語

  • S3 — バージョニングの基盤
  • S3-Lifecycle — 旧バージョンの自動管理
  • S3-Replication — レプリケーションの前提機能
  • S3-Object-Lock — WORM の前提機能
  • KMS — バージョンも暗号化対象

7. 関連サイト

AWS 公式

参考


🎓 試験での出題傾向

試験重要度主な出題パターン
CLFバージョニングの存在
SAAレプリケーション・WORM の前提として頻出
DVAバージョン ID を使った API 操作
SOA運用での旧バージョン管理