【AWS解説 S3編 #2】S3のバージョニングとは?削除・上書きから復元する仕組み
S3編 #2(全7回予定)
前回のS3編 #1では、バケットを作成し、ファイルをアップロードして、最後に削除する流れを確認しました。
実務や個人開発では、次のような場面に出会うことがあります。
同じファイル名で上書きしたら、前の内容が消えてしまった
誤って削除してしまい、戻し方が分からない
「ゴミ箱」のような仕組みは、S3にあるのか
この記事では、S3のバージョニング(Versioning)を使って、上書きや削除のあとに過去の状態を確認できる仕組みを整理します。
AWSマネジメントコンソールで、バージョニングを有効にし、同じキーで上書き・削除を行います。その後、過去のバージョンを確認し、削除マーカーを削除して復元するところまで進めます。学習後は、残したバージョンも含めて削除します。
この記事で分かること
- S3バージョニングを有効にすると、何が残るようになるか
- バージョン ID と削除マーカーの意味
- コンソールでの基本操作
- バージョニングの有効化
- 同じキーでの上書き
- 削除後の見え方の確認
- 過去バージョンの確認
- 削除マーカーを削除してオブジェクトを復元する方法
- 上書き前の内容を新しい現行バージョンとして戻す方法
- バージョンを含めた後始末
- 初学者がつまずきやすいポイント
バージョニングとは?
S3のバージョニングは、同じオブジェクトキーに対して、過去の内容を履歴として残す機能です。
バージョニングが未設定のときは、同じキーでファイルをアップロードすると、前の内容は上書きされて見えなくなります。削除すると、そのオブジェクトは一覧から消えます。
バージョニングを有効にすると、同じキーでも内容ごとにバージョンが残ります。削除した場合も、すぐに中身が消えるのではなく、削除マーカーという印が付く動きになります。
S3バケットのバージョニングには、主に次の3つの状態があります。
- 未設定: バージョニングをまだ有効にしていない状態
- 有効: 新しく保存・上書きしたオブジェクトにバージョン IDが付く状態
-
一時停止: 新しいオブジェクトのバージョン IDが
nullになる状態
一度有効にしたバケットは、未設定の状態には戻せません。一時停止にしても、すでに保存された過去バージョンは削除されません。
身近なイメージでは、「同じファイル名の履歴帳」に近い仕組みです。
sample.txt(キーは同じ)
├─ バージョン1(最初の内容)
├─ バージョン2(上書き後の内容)
└─ 削除マーカー(削除したあとに付く印)
図の直後の読み方は次のとおりです。
- キーは従来どおりオブジェクトの名前です
- バージョン IDが、各版を区別します
- コンソールの通常一覧では、最新の状態が見えやすいです
- 過去の版や削除マーカーは、バージョン表示を開くと確認できます
いつ使うか / 使わないか
バージョニングは、次のような用途に向いています。
- 設定ファイルや成果物を、誤って上書きしたときに戻りたい
- 学習や検証で、「消したつもり」のあとに中身を確認したい
- 簡単な誤操作対策として、履歴を残しておきたい
一方で、次の点には注意が必要です。
- バージョニングは、パソコンの「ゴミ箱」そのものではありません
- 過去のバージョンも、ストレージとして残るため課金対象になります
- 本番運用向けのバックアップ設計(別リージョン保管、世代管理の自動化など)までは、この記事では扱いません
最初は、誤上書き・誤削除から戻せるようにする学習機能として覚えると分かりやすいです。
古いバージョンを自動で整理する方法は、S3編 #3のライフサイクルで扱います。
押さえておく用語
この記事では、用語を次の3つに絞ります。
| 用語 | 意味 |
|---|---|
| バージョン ID | 各バージョンを識別する ID |
| 現行版(最新) | 一覧で普通に見える、いまの状態 |
| 削除マーカー | オブジェクトを削除したときに付く印。中身がすぐ消えたわけではない |
コンソールでは、オブジェクト一覧の表示を切り替えると、過去のバージョンや削除マーカーを確認できます。
コンソールでバージョニングを試す
ここからは、AWSマネジメントコンソールを使って操作します。
前提
- AWSアカウントを持っていること
- AWSマネジメントコンソールにログインできること
- S3編 #1 の基本操作(バケット作成・アップロード)ができること
- 本記事の操作は学習用として行うこと
- 検証後は、過去バージョンと削除マーカーも含めて削除すること
今回使用するリージョン
- アジアパシフィック(東京)
ap-northeast-1
#1 で作成した学習用バケットを流用して構いません。新規に作る場合も、東京リージョンを明示して作成します。
#1で使ったオブジェクトが残っている場合は、今回の確認用に新しいキーを使うと動きを追いやすくなります。バージョニング有効化前から存在するオブジェクトには、最初は null のバージョン IDが付いているためです。
バケット名の例は次のとおりです。
s3-learning-yourname-任意の数字
1. バージョニングを有効にする
- AWSマネジメントコンソールで S3 を開く
- 対象のバケットを選択する
- プロパティタブを開く
- バケットのバージョニング(Bucket Versioning)の編集へ進む
- 有効にする(Enable)を選択する
- 変更を保存する
有効化後、バケットのプロパティでバージョニングが有効になっていることを確認します。
有効化直後は設定の反映に時間がかかる場合があります。画面の状態を確認し、すぐにオブジェクト操作を行ってエラーになった場合は、少し待ってから再試行してください。
メモ: 一度バージョニングを有効にしたあと、コンソールでは「一時停止」に切り替えられます。一時停止しても、すでに保存された過去バージョンは残ります。学習では、まず「有効」の状態で動きを確認します。
2. 同じキーで上書きする
次に、同じファイル名(キー)で内容を変えてアップロードします。
- バケットを開き、まだオブジェクトがない場合は
sample.txtをアップロードする - 手元の
sample.txtの内容を書き換える
最初の内容の例:
Hello, Amazon S3! (version 1)
上書き後の内容の例:
Hello, Amazon S3! (version 2)
- 同じ
sample.txtを、もう一度アップロードする - オブジェクト一覧で
sample.txtを確認する - バージョン表示を有効にし、複数のバージョンが並ぶことを確認する
バージョニングが有効な場合、キーは同じでも、内容の異なる版が別バージョンとして残ります。
ここで確認したいことは、次の1点です。
キーは同じ
↓
中身はバージョンごとに残る
3. 削除してみる
次に、オブジェクトを削除します。
- オブジェクト一覧で
sample.txtを選択する - 削除を実行する
- 通常の一覧表示では、
sample.txtが見えなくなったように見えることを確認する - バージョン表示を開き直す
- 削除マーカーが追加されていることを確認する
削除マーカーは、「このキーは削除された状態として扱う」ための印です。過去のバージョン自体が、この操作だけですべて消えるわけではありません。
通常の一覧から sample.txt が見えなくなったあと、バージョン表示を有効にすると、削除マーカーと過去バージョンを確認できます。
そのため、バージョニング有効時の削除は、次のように理解すると分かりやすいです。
削除する
↓
一覧からは見えにくくなる
↓
削除マーカーが付く
↓
過去バージョンは残っている
4. 過去のバージョンを確認する
削除したあとも、バージョン表示から過去の内容を確認できます。
- バージョン表示を開いた状態で、削除マーカーではない過去バージョンを選ぶ
- オブジェクトを開く、またはダウンロードする
- 上書き前の内容(version 1)や、上書き後の内容(version 2)が取り出せることを確認する
ここでは、過去の版を見つけて中身を確認できることをゴールにします。続けて、削除したオブジェクトを復元します。
5. 削除マーカーを削除して復元する
通常の削除で追加された削除マーカーを削除すると、その直前のバージョンが現行版として扱われるようになります。オブジェクトの中身を削除マーカーから復元するのではなく、削除マーカーを取り除いて、残っていた過去バージョンを再び見える状態にする操作です。
- バージョン表示を有効にした状態で、
sample.txtの削除マーカーを選択する - 削除を実行する
- 確認画面で、完全削除の確認文を入力して削除する
- 通常の一覧表示に戻り、
sample.txtが表示されることを確認する - オブジェクトを開く、またはダウンロードし、削除前の内容を確認する
削除マーカーを削除したあと、過去バージョンが残った状態でオブジェクトが復元されます。
この操作では削除マーカーを完全に削除します。削除マーカーではない過去バージョンを選んで削除すると、そのバージョンのデータ自体が完全に削除されるため、対象を間違えないようにしてください。
6. 上書き前の内容を戻す
上書きによって現行版が version 2 になり、version 1 の内容へ戻したい場合は、過去バージョンをダウンロードして、同じキーでアップロードします。
- バージョン表示を開き、
version 1に相当する過去バージョンを選択する - 過去バージョンをダウンロードする
- 同じキーの
sample.txtとして再度アップロードする - 新しいバージョンが追加され、通常の一覧で
version 1の内容が表示されることを確認する
この方法では、過去バージョンを直接書き換えず、復元した内容を新しい現行バージョンとして追加します。履歴を残したまま戻せるため、初回の確認ではこの方法を使うと安全です。
実務では、現在のバージョンをバージョン ID付きで完全削除し、直前のバージョンを現行にする方法もあります。ただし、現在のバージョンを完全削除すると元に戻せないため、対象とバックアップを確認してから行います。
料金・削除の注意
バージョニングを有効にすると、過去のバージョンもストレージとして残ります。
学習用アカウントでは、次を意識してください。
- 小さなテキストでも、版が増えるとオブジェクト数が増える
- 削除マーカーや旧バージョンを残したままにすると、後から分かりにくくなる
- 検証が終わったら、バージョンを含めて削除する
料金の詳細や無料枠は変更される可能性があります。利用前に、AWS公式の料金ページを確認してください。
(執筆時点の案内です。最新情報は公式ドキュメントを優先してください。)
初学者がつまずきやすいポイント
一覧からファイルが消えて戻らないように見える
バージョニング有効時に通常削除すると、一覧から見えなくなることがあります。
これは、削除マーカーが付いているためです。バージョン表示を開き、削除マーカーと過去バージョンを確認してください。
「全部消したつもり」なのにバケットを削除できない / 残骸が残る
バージョニング有効バケットでは、画面上でオブジェクトが見えなくても、過去バージョンや削除マーカーが残っていることがあります。
バケットを削除できないときは、バージョン表示を有効にして、残っている版や削除マーカーをすべて削除してから、再度バケット削除を試します。
バージョニングを一時停止すれば過去版も消えると思っている
コンソールでバージョニングを一時停止しても、すでに保存された過去バージョンは残り続けます。
一時停止は、「これから増える版の扱い」が変わる設定であり、履歴の一括削除ではありません。不要な版は、明示的に削除する必要があります。
学習用リソースを削除する
確認が終わったら、今回残したバージョンと削除マーカーを削除し、不要ならバケットも削除します。
1. バージョンと削除マーカーを削除する
- 対象バケットを開く
- バージョン表示を有効にする
- 残っているバージョンと削除マーカーをすべて選択する
- 削除を実行する
- バージョン表示でも何も残っていないことを確認する
コンソールに「空にする」操作がある場合は、バージョンも含めて空にできるかを確認してから使います。残っている版があると、バケット削除に失敗します。
2. バケットを削除する
- S3のバケット一覧へ戻る
- 削除するバケットを選択する
- 削除をクリックする
- 確認画面の案内に従って削除を実行する
バケット内にバージョンや削除マーカーが残っていると、バケットを削除できません。
まとめ
S3のバージョニングは、同じキーに対して過去の内容を履歴として残す機能です。
この記事では、次の流れを確認しました。
- バケットでバージョニングを有効にする
- 同じキーで上書きし、複数バージョンが残ることを確認する
- 削除して、削除マーカーが付くことを確認する
- 過去バージョンの中身を確認する
- 削除マーカーを削除して、削除したオブジェクトを復元する
- 過去バージョンを同じキーで再アップロードし、上書き前の内容を戻す
- バージョンを含めて後始末する
「消えたように見える」ことと、「履歴側に残っている」ことを分けて理解できると、初学者のつまずきが減ります。
次回
次回は、ストレージクラスとライフサイクルを扱います。
バージョニングで増えた過去版や、使わなくなったオブジェクトを、コストを意識しながら整理するための考え方を確認します。
- S3編 #3 ストレージクラスとライフサイクルの違いを整理
同じ設定を、CloudFormation の YAML や構成UIで眺めたい場合は、IaCraftStudio の S3 ページも参考になります。






