はじめる前に
- 必須AWS アカウントを持っていること
- 必須マネジメントコンソールにサインインできること
- 必須S3 でバケットを作り、ファイルをアップロード・ダウンロードした経験があること
- あると良い同じ名前で内容を少しずつ変えた、テキストファイルを用意できる(バージョンの違いを見るため。本文に手順あり)
- あると良い「バックアップ」「世代管理」という言葉のイメージがある
※ このハンズオンは すべてコンソールだけで完結します。コマンド操作は使いません。
参照する公式ドキュメント
手順に迷ったときや、用語の意味を確かめたいときに開きましょう。
※ リンク切れの場合は、ページタイトルで検索してください。
背景・シナリオ
大事なファイルを、間違って古い内容で上書きしてしまった——あるいは、必要なファイルをうっかり削除してしまった。こうした「うっかり」は誰にでも起こります。ふつうのファイル置き場では、上書きや削除をすると前の状態は失われ、取り返しがつきません。
S3 のバージョニングを有効にしておくと、同じ名前のファイルを上書きしても、古い内容は「以前のバージョン」として残り続けます。削除しても、実際には「削除した印(削除マーカー)」が付くだけで、中身は消えていません。だからいつでも前の状態に戻せます。今回は、上書きと削除をわざとやってみて、ちゃんと取り戻せることを確認します。
上書きしたのに、古い内容はどこに残るの?
バージョニングが有効なバケットでは、上書きのたびに新しいバージョンが積み重なり、それぞれに固有の「バージョン ID」が付きます。いちばん新しいものが「現在のバージョン」として表示され、古いものも裏に残っています。
削除したのに消えていないって、どういうこと?
バージョニング有効時の削除は、「削除マーカー」という印を最新版として置く動きです。見かけ上は消えますが、過去のバージョンはそのまま残っています。削除マーカーを取り除けば、元のファイルが復活します。
バケットでバージョニングを有効にし、同じ名前のファイルを上書きしても以前のバージョンが残って取り出せること、削除しても削除マーカーを外せば元に戻せることを、コンソール上で確認する。
つくる構成
同じ名前(キー)の memo.txt を、内容を変えて何度かアップロードします。バージョニングが有効だと、上書きのたびに古い内容が下に積み重なり、削除しても「削除マーカー」が乗るだけで過去は残ります。
-
削除マーカーmemo.txt を「削除」 最新として削除マーカーが乗り、見かけ上は消える。外せば下の v3 が現在に戻る。
-
v3(現在)3 回目の上書き 「会議メモ:日程を確定」
-
v22 回目の上書き 「会議メモ:候補日を追記」
-
v1最初のアップロード 「会議メモ:下書き」
「有効」だと、すべての世代が残るので、いつでも過去のバージョンに戻せます。
要件
以下の流れで、「上書きしても残る」「削除しても戻せる」を確認してください。
| No | 要件 |
|---|---|
| 1 | リージョンは「東京(ap-northeast-1)」を使用する。 |
| 2 | S3 バケットを 1 つ作成する(名前は世界で一意。例:my-versioning-yourname-20260620)。 |
| 3 | バケットで バージョニングを有効化する。 |
| 4 | 同じ名前(キー)のファイル(例:memo.txt)を、内容を変えて 2 回以上アップロードし、複数のバージョンを作る。 |
| 5 | 「バージョンを表示」で履歴を確認し、以前のバージョンをダウンロードして、古い内容が取り出せることを確認する。 |
| 6 | オブジェクトを削除し、削除マーカーが付くことを確認したうえで、削除マーカーを外して元に戻す。 |
構築の進め方
「有効にする → 上書きして世代を作る → 戻す → 削除して戻す」の順に試します。表示の切り替え(バージョン表示)がカギになります。
-
マネジメントコンソールにサインインし、リージョンを合わせる
ブラウザで AWS マネジメントコンソールにサインインし、画面右上のリージョンが「アジアパシフィック(東京)ap-northeast-1」になっていることを確認します。
-
バケットを作り、バージョニングを有効にする
S3 コンソールで「バケットを作成」し、世界で一意な名前を付けます。作成時の画面、または作成後に「プロパティ」タブ →「バケットのバージョニング」を編集 →「有効にする」でバージョニングをオンにします。
有効化は「これ以降」に効くバージョニングを有効にすると、それ以降のアップロード・削除に世代管理が効きます。有効化する前に置いたファイルは「バージョン ID なし(null)」として扱われる点だけ頭の隅に置いておきましょう。今回は有効化してからアップロードします。
-
同じ名前のファイルを、内容を変えて何度かアップロードする
テキストエディタで
memo.txtを作り(例:1 行目に「下書き」)アップロードします。次に、同じmemo.txtの中身を書き換えて(例:「候補日を追記」)、同じ名前のままもう一度アップロードします。これを 2〜3 回繰り返すと、世代が積み重なります。「上書き」だけど消えていない同じキーでアップロードすると、見た目は上書きですが、バージョニング有効なので古い内容も裏に残っています。次のステップで、その世代を表示してみます。
-
「バージョンを表示」で世代を確認し、古い版を取り出す
オブジェクト一覧の上部にある「バージョンを表示」のトグルをオンにします。すると、同じ
memo.txtに対して複数の行(バージョン ID 付き)が表示されます。古いバージョンを選んで「ダウンロード」し、その世代の中身(例:「下書き」)が取り出せることを確認します。トグルで見え方が変わる「バージョンを表示」がオフのときは現在のバージョンだけ、オンのときは過去も含めて全部が見えます。世代を扱うときは、まずこのトグルを切り替えるのがコツです。
-
古いバージョンを「現在」に戻す(復元)
以前のバージョンに戻したいときは、いくつかの方法があります。手軽なのは、ダウンロードした古い版を、同じ名前でもう一度アップロードして最新にする方法です。もしくは、「バージョンを表示」で新しいバージョンのほうを削除して、古い版を現在に繰り上げることもできます。どちらでも、狙った内容を現在のバージョンにできます。
「戻す」にも世代が残る古い版を上書きして戻す方法では、それも新しいバージョンとして積まれます。履歴がすべて残るので、操作をたどり直せるのがバージョニングの安心なところです。
-
削除して「削除マーカー」を確認し、元に戻す
「バージョンを表示」をオフにした状態で
memo.txtを削除すると、見かけ上は消えます。ここで「バージョンを表示」をオンにすると、最新として「削除マーカー」が乗り、その下に過去のバージョンが残っているのが分かります。この削除マーカーを選んで削除すると、memo.txtが現在のバージョンとして復活します。削除マーカーを消す=復活バージョニング有効時の「削除」は、中身を消すのではなく削除マーカーを置くだけ。だから削除マーカーを取り除けば元どおりになります。誤削除に強いのは、この仕組みのおかげです。
つまずきポイント
初学者がよく引っかかる箇所を先回りでまとめました。答えそのものは載せていませんが、「どこを見直せばよいか」の手がかりとして使ってください。
「上書きしたのに、古いバージョンが出てこない」
まず、オブジェクト一覧の「バージョンを表示」トグルがオンになっているかを確認しましょう(オフだと現在のバージョンしか見えません)。それでも 1 つしかない場合は、バージョニングを有効にする前にアップロードしていないか(有効化前のものは世代が分かれません)、本当に同じ名前で上書きしたか(別名だと別オブジェクトになります)を見直します。
「削除したはずなのに、ストレージが減らない」
バージョニング有効時の通常の削除は削除マーカーを置くだけで、過去のバージョンは残り続けます。つまりすべての世代がストレージとして課金対象です。本当に消したいときは、「バージョンを表示」をオンにして各バージョン(と削除マーカー)を個別に削除する必要があります。これは後片づけでも重要になります。
完了チェック
要件の再確認ではなく、画面のどこを見れば達成を確認できるかをまとめました。S3 コンソールを開いて、次を順に確かめましょう。
- バケットの「プロパティ」で、バージョニングが「有効」になっている。
- 「バージョンを表示」をオンにすると、同じ
memo.txtに複数のバージョン IDが並んでいる。 - 以前のバージョンをダウンロードでき、古い内容が取り出せる。
- オブジェクトを削除すると、「バージョンを表示」で「削除マーカー」が確認できる。
- 削除マーカーを外すと、
memo.txtが現在のバージョンとして復活する。
考えてみよう
手を動かすことに加えて、次の問いに自分の言葉で答えられるようにしておくと、理解がより深まります。
- バージョニングは「うっかり上書き・うっかり削除」に強い一方で、放っておくと困ることもあります。それはどんなことでしょうか。すべての世代が残る、という性質から考えてみましょう。
ヒント
古いバージョンも削除マーカーも、消すまで残り続けます。つまり世代が増えるほどストレージを使い、その分の料金もかかります。「全部残る安心」と「全部残るコスト」は裏表だ、という視点で考えてみましょう。古い版を自動で整理する仕組み(ライフサイクル)と組み合わせる発想にもつながります。 - バージョニング有効時の「削除」は、中身を消すのではなく「削除マーカー」を置く動きでした。この仕組みは、誤削除に対してどんな守りになっているでしょうか。
ヒント
削除マーカーを外すだけで元に戻せるので、削除は「ごみ箱に入れる」に近い、取り消し可能な操作になります。本当に消えるのは過去バージョンを個別に消したときだけ、という二段構えが守りになっている、と整理してみましょう。 - バージョニングがあると安心ですが、「絶対に消されたくない・改ざんされたくない」データには、さらに強い守りがほしくなる場面もあります。S3 に、一定期間は削除・上書きを禁止する仕組みがないか調べてみましょう。
ヒント
バージョニングは「戻せる」仕組みですが、「そもそも消させない・変えさせない」ためのロック機能も S3 にはあります。法令対応や重要記録の保全といった用途で使われます。「オブジェクトロック」「保持期間」といったキーワードで調べてみましょう。
後片づけ
バージョニングを有効にしたバケットは、すべてのバージョンを消さないと空にならず、バケットも削除できません。次の順で片づけます。
- すべてのバージョンを削除する:オブジェクト一覧で「バージョンを表示」をオンにし、過去のバージョンと削除マーカーを含めてすべて削除します(バケット一覧で対象を選び「空にする」を使うと、全バージョンをまとめて削除できます)。
- バケットを削除する:中が完全に空になったら、バケットを削除します。
過去のバージョン・削除マーカーまで消す
「バージョンを表示」がオフのまま削除しても、削除マーカーが乗るだけで過去バージョンは残ります。バケットを完全に空にするには、全バージョンと削除マーカーを消す必要があります。迷ったら、バケット一覧の「空にする」を使うと確実です。
コストに関する注意: S3 は、保存しているデータ量・リクエストの回数・データ転送量に応じて課金されます。バージョニングを有効にすると、すべてのバージョン(過去の世代)と削除マーカーが、それぞれ保存量としてカウントされます。つまり上書きを繰り返すほど保存量が増えるため、古い世代を放置すると料金がふくらむ点に注意してください。新規アカウントには無料利用枠(一般的に 5 GB のストレージ)があり、小さなテキストファイルでの学習ならごく少額ですが、使い終えたら上の「後片づけ」で全バージョンを削除しておきましょう。バケットやバージョニング設定の存在自体には料金はかかりません。