← ハンズオン一覧に戻る

AWS Hands-on / Storage

上書き・削除した前のファイルを取り戻す

S3 の「バージョニング」を有効にすると、同じ名前で上書きしても古い内容が消えずに世代として残り、間違って削除しても元に戻せます。うっかり上書き・うっかり削除からファイルを守る仕組みを、実際に上書きと復元を繰り返して体感します。

● Lv.2 基本的なリソースを作れる人 ⏱ 所要 30〜50 分 すべてコンソールで完結
01 — Prerequisites

はじめる前に

  • 必須AWS アカウントを持っていること
  • 必須マネジメントコンソールにサインインできること
  • 必須S3 でバケットを作り、ファイルをアップロード・ダウンロードした経験があること
  • あると良い同じ名前で内容を少しずつ変えた、テキストファイルを用意できる(バージョンの違いを見るため。本文に手順あり)
  • あると良い「バックアップ」「世代管理」という言葉のイメージがある

※ このハンズオンは すべてコンソールだけで完結します。コマンド操作は使いません。

02 — References

参照する公式ドキュメント

手順に迷ったときや、用語の意味を確かめたいときに開きましょう。

※ リンク切れの場合は、ページタイトルで検索してください。

03 — Background

背景・シナリオ

大事なファイルを、間違って古い内容で上書きしてしまった——あるいは、必要なファイルをうっかり削除してしまった。こうした「うっかり」は誰にでも起こります。ふつうのファイル置き場では、上書きや削除をすると前の状態は失われ、取り返しがつきません。

S3 のバージョニングを有効にしておくと、同じ名前のファイルを上書きしても、古い内容は「以前のバージョン」として残り続けます。削除しても、実際には「削除した印(削除マーカー)」が付くだけで、中身は消えていません。だからいつでも前の状態に戻せます。今回は、上書きと削除をわざとやってみて、ちゃんと取り戻せることを確認します。

上書きしたのに、古い内容はどこに残るの?

バージョニングが有効なバケットでは、上書きのたびに新しいバージョンが積み重なり、それぞれに固有の「バージョン ID」が付きます。いちばん新しいものが「現在のバージョン」として表示され、古いものも裏に残っています。

削除したのに消えていないって、どういうこと?

バージョニング有効時の削除は、「削除マーカー」という印を最新版として置く動きです。見かけ上は消えますが、過去のバージョンはそのまま残っています。削除マーカーを取り除けば、元のファイルが復活します。

Goal

バケットでバージョニングを有効にし、同じ名前のファイルを上書きしても以前のバージョンが残って取り出せること、削除しても削除マーカーを外せば元に戻せることを、コンソール上で確認する。

04 — Architecture

つくる構成

同じ名前(キー)の memo.txt を、内容を変えて何度かアップロードします。バージョニングが有効だと、上書きのたびに古い内容が下に積み重なり、削除しても「削除マーカー」が乗るだけで過去は残ります。

  1. 削除マーカーmemo.txt を「削除」 最新として削除マーカーが乗り、見かけ上は消える。外せば下の v3 が現在に戻る。
  2. v3(現在)3 回目の上書き 「会議メモ:日程を確定」
  3. v22 回目の上書き 「会議メモ:候補日を追記」
  4. v1最初のアップロード 「会議メモ:下書き」
バージョニングが「無効」だと、上書き・削除のたびに古い内容は失われます。
「有効」だと、すべての世代が残るので、いつでも過去のバージョンに戻せます。
05 — Requirements

要件

以下の流れで、「上書きしても残る」「削除しても戻せる」を確認してください。

No要件
1リージョンは「東京(ap-northeast-1)」を使用する。
2S3 バケットを 1 つ作成する(名前は世界で一意。例:my-versioning-yourname-20260620)。
3バケットで バージョニングを有効化する。
4同じ名前(キー)のファイル(例:memo.txt)を、内容を変えて 2 回以上アップロードし、複数のバージョンを作る。
5「バージョンを表示」で履歴を確認し、以前のバージョンをダウンロードして、古い内容が取り出せることを確認する。
6オブジェクトを削除し、削除マーカーが付くことを確認したうえで、削除マーカーを外して元に戻す
06 — Steps

構築の進め方

「有効にする → 上書きして世代を作る → 戻す → 削除して戻す」の順に試します。表示の切り替え(バージョン表示)がカギになります。

  1. マネジメントコンソールにサインインし、リージョンを合わせる

    ブラウザで AWS マネジメントコンソールにサインインし、画面右上のリージョンが「アジアパシフィック(東京)ap-northeast-1」になっていることを確認します。

  2. バケットを作り、バージョニングを有効にする

    S3 コンソールで「バケットを作成」し、世界で一意な名前を付けます。作成時の画面、または作成後に「プロパティ」タブ →「バケットのバージョニング」を編集 →「有効にする」でバージョニングをオンにします。

    有効化は「これ以降」に効く

    バージョニングを有効にすると、それ以降のアップロード・削除に世代管理が効きます。有効化する前に置いたファイルは「バージョン ID なし(null)」として扱われる点だけ頭の隅に置いておきましょう。今回は有効化してからアップロードします。

  3. 同じ名前のファイルを、内容を変えて何度かアップロードする

    テキストエディタで memo.txt を作り(例:1 行目に「下書き」)アップロードします。次に、同じ memo.txt の中身を書き換えて(例:「候補日を追記」)、同じ名前のままもう一度アップロードします。これを 2〜3 回繰り返すと、世代が積み重なります。

    「上書き」だけど消えていない

    同じキーでアップロードすると、見た目は上書きですが、バージョニング有効なので古い内容も裏に残っています。次のステップで、その世代を表示してみます。

  4. 「バージョンを表示」で世代を確認し、古い版を取り出す

    オブジェクト一覧の上部にある「バージョンを表示」のトグルをオンにします。すると、同じ memo.txt に対して複数の行(バージョン ID 付き)が表示されます。古いバージョンを選んで「ダウンロード」し、その世代の中身(例:「下書き」)が取り出せることを確認します。

    トグルで見え方が変わる

    「バージョンを表示」がオフのときは現在のバージョンだけ、オンのときは過去も含めて全部が見えます。世代を扱うときは、まずこのトグルを切り替えるのがコツです。

  5. 古いバージョンを「現在」に戻す(復元)

    以前のバージョンに戻したいときは、いくつかの方法があります。手軽なのは、ダウンロードした古い版を、同じ名前でもう一度アップロードして最新にする方法です。もしくは、「バージョンを表示」で新しいバージョンのほうを削除して、古い版を現在に繰り上げることもできます。どちらでも、狙った内容を現在のバージョンにできます。

    「戻す」にも世代が残る

    古い版を上書きして戻す方法では、それも新しいバージョンとして積まれます。履歴がすべて残るので、操作をたどり直せるのがバージョニングの安心なところです。

  6. 削除して「削除マーカー」を確認し、元に戻す

    「バージョンを表示」をオフにした状態で memo.txt削除すると、見かけ上は消えます。ここで「バージョンを表示」をオンにすると、最新として「削除マーカー」が乗り、その下に過去のバージョンが残っているのが分かります。この削除マーカーを選んで削除すると、memo.txt が現在のバージョンとして復活します。

    削除マーカーを消す=復活

    バージョニング有効時の「削除」は、中身を消すのではなく削除マーカーを置くだけ。だから削除マーカーを取り除けば元どおりになります。誤削除に強いのは、この仕組みのおかげです。

07 — Pitfalls

つまずきポイント

初学者がよく引っかかる箇所を先回りでまとめました。答えそのものは載せていませんが、「どこを見直せばよいか」の手がかりとして使ってください。

Pitfall 01 — 過去のバージョンが見当たらない

「上書きしたのに、古いバージョンが出てこない」

まず、オブジェクト一覧の「バージョンを表示」トグルがオンになっているかを確認しましょう(オフだと現在のバージョンしか見えません)。それでも 1 つしかない場合は、バージョニングを有効にする前にアップロードしていないか(有効化前のものは世代が分かれません)、本当に同じ名前で上書きしたか(別名だと別オブジェクトになります)を見直します。

Pitfall 02 — 削除したのに、まだ容量・料金がかかっている

「削除したはずなのに、ストレージが減らない」

バージョニング有効時の通常の削除は削除マーカーを置くだけで、過去のバージョンは残り続けます。つまりすべての世代がストレージとして課金対象です。本当に消したいときは、「バージョンを表示」をオンにして各バージョン(と削除マーカー)を個別に削除する必要があります。これは後片づけでも重要になります。

08 — Checklist

完了チェック

要件の再確認ではなく、画面のどこを見れば達成を確認できるかをまとめました。S3 コンソールを開いて、次を順に確かめましょう。

  • バケットの「プロパティ」で、バージョニングが「有効」になっている。
  • 「バージョンを表示」をオンにすると、同じ memo.txt複数のバージョン IDが並んでいる。
  • 以前のバージョンをダウンロードでき、古い内容が取り出せる。
  • オブジェクトを削除すると、「バージョンを表示」で「削除マーカー」が確認できる。
  • 削除マーカーを外すと、memo.txt現在のバージョンとして復活する。
09 — Think

考えてみよう

手を動かすことに加えて、次の問いに自分の言葉で答えられるようにしておくと、理解がより深まります。

  1. バージョニングは「うっかり上書き・うっかり削除」に強い一方で、放っておくと困ることもあります。それはどんなことでしょうか。すべての世代が残る、という性質から考えてみましょう。
    ヒント
    古いバージョンも削除マーカーも、消すまで残り続けます。つまり世代が増えるほどストレージを使い、その分の料金もかかります。「全部残る安心」と「全部残るコスト」は裏表だ、という視点で考えてみましょう。古い版を自動で整理する仕組み(ライフサイクル)と組み合わせる発想にもつながります。
  2. バージョニング有効時の「削除」は、中身を消すのではなく「削除マーカー」を置く動きでした。この仕組みは、誤削除に対してどんな守りになっているでしょうか。
    ヒント
    削除マーカーを外すだけで元に戻せるので、削除は「ごみ箱に入れる」に近い、取り消し可能な操作になります。本当に消えるのは過去バージョンを個別に消したときだけ、という二段構えが守りになっている、と整理してみましょう。
  3. バージョニングがあると安心ですが、「絶対に消されたくない・改ざんされたくない」データには、さらに強い守りがほしくなる場面もあります。S3 に、一定期間は削除・上書きを禁止する仕組みがないか調べてみましょう。
    ヒント
    バージョニングは「戻せる」仕組みですが、「そもそも消させない・変えさせない」ためのロック機能も S3 にはあります。法令対応や重要記録の保全といった用途で使われます。「オブジェクトロック」「保持期間」といったキーワードで調べてみましょう。
10 — Clean up

後片づけ

バージョニングを有効にしたバケットは、すべてのバージョンを消さないと空にならず、バケットも削除できません。次の順で片づけます。

  1. すべてのバージョンを削除する:オブジェクト一覧で「バージョンを表示」をオンにし、過去のバージョンと削除マーカーを含めてすべて削除します(バケット一覧で対象を選び「空にする」を使うと、全バージョンをまとめて削除できます)。
  2. バケットを削除する:中が完全に空になったら、バケットを削除します。
Caution — 「現在のバージョン」を消すだけでは空にならない

過去のバージョン・削除マーカーまで消す

「バージョンを表示」がオフのまま削除しても、削除マーカーが乗るだけで過去バージョンは残ります。バケットを完全に空にするには、全バージョンと削除マーカーを消す必要があります。迷ったら、バケット一覧の「空にする」を使うと確実です。

コストに関する注意: S3 は、保存しているデータ量・リクエストの回数・データ転送量に応じて課金されます。バージョニングを有効にすると、すべてのバージョン(過去の世代)と削除マーカーが、それぞれ保存量としてカウントされます。つまり上書きを繰り返すほど保存量が増えるため、古い世代を放置すると料金がふくらむ点に注意してください。新規アカウントには無料利用枠(一般的に 5 GB のストレージ)があり、小さなテキストファイルでの学習ならごく少額ですが、使い終えたら上の「後片づけ」で全バージョンを削除しておきましょう。バケットやバージョニング設定の存在自体には料金はかかりません。