Amazon S3にはバージョニングという機能があります。このバージョニング機能はバケット内のオブジェクトの複数のバージョンを 1 つのバケットに保持し、誤って削除または上書きしてしまった場合でもオブジェクトの復元を行える機能です。バージョニング機能の有効化を行うと、バケット内の一部ではなくすべてのオブジェクトを対象にバージョンの作成が行われます。
バージョニング機能を使う目的
バージョニング機能を用いない場合、データの上書きや削除などの人的ミスやアプリケーション側の不具合が発生した場合にデータを保護する事ができません。主な対策として作業のたびにクライアント自身でバックアップを作成する方法がありますが、作業のたびに行うのは大変手間であり、バックアップのためのストレージ容量の確保や管理なども必要でした。
Amazon S3のバージョニング機能を用いることでクライアント側は特別な操作を行うことなく、自動的にシステム側でバージョンの作成を行なってくれるため(マネージドサービス)、ストレージ容量の心配や手動によるバージョン管理の手間を省くことができます。
バージョニング機能の特徴
バージョニング機能の主な特徴や仕組みを解説していきます。
バージョニング機能はデフォルトではUnversioned(以下、無効)に設定されており、バージョニング機能は一度Versioning-enabled(以下、有効)にすると無効にすることはできませんが、Versioning-suspended(以下、停止)を行うことができます。また、バージョニング機能を有効にすることで、復元だけでなくオブジェクトの取得にバージョンを指定して行う事ができます。
例えば、画像データなどで加工を終えたあとに加工前の画像データが必要になった場合などにアップロードしたバージョンを遡り取得を行う事ができます。
バージョニング機能が無効な場合
バージョニング機能が無効な場合、全てのオブジェクトは現行のバージョンとして扱われます。この場合バージョンIDはnullとなります。バージョニング機能が無効な状態でオブジェクトを削除するとデータは完全に削除されてしまいます。
バージョニング機能が有効な場合
バージョニング機能を有効にすると現行のバージョンだけでなく、過去のバージョンも保持され各オブジェクトは1つの現行バージョンと0個以上の過去のバージョンを持つことになります。過去のバージョンが作成される主なケースとして同一名称のオブジェクトがputされた時や現行のオブジェクトが削除された時に作成されます。
バージョニング機能の使い方
バージョニング機能の使い方としてバージョンの復元と削除マーカーについて説明します。
バージョンの復元
過去のバージョンを復元したい場合は復元したいバージョンのコピーを行う方法と現行のバージョンを削除する方法があります。
復元したいバージョンのコピーを行った場合は現行のバージョンが繰り下げ式に過去のバージョンとなり、新しくコピーされたバージョンが現行のバージョンとなります。コピーしたバージョンへは新たなバージョンIDが付与され、コピー元のバージョンはそのまま維持されるため、同じ内容のデータを持つバージョンが二つ存在する事になります。現行のバージョンを削除する方法だと繰り上げ式に過去のバージョンが繰り上がり、現行のバージョンとなります。
削除マーカーによる論理削除
バージョニング機能を有効にしているバケットでオブジェクトの削除を行なってもオブジェクトは削除されず、代わりにAmazon S3により削除マーカーが挿入されます。この削除マーカーはオブジェクトが削除されたかのような論理削除を行います。この論理削除は物理削除とは異なり、完全にデータの削除が行われた訳ではないため削除マーカーを削除することで過去のバージョンの復元を行えます。この削除マーカーを削除する場合はバージョンIDの指定が必要で、指定をせずにオブジェクトの削除を行うと新たな削除マーカーが挿入されます。また、注意点として現行のバージョンが削除マーカーの場合はコピーによる復元を行えません。
まとめ
バージョニング機能とはバケット内のオブジェクトに対して複数のバージョンを保持することにより、誤ってデータの削除や上書きを行った場合でもデータの復元ができる機能です。
これまではクライアント側でバックアップを取ったりといったデータ保護のための対策を講じないといけなかったことが、バージョニング機能を用いることで簡単に行うことができます。また、データの復元だけでなく任意のバージョンを取得することも可能になるため、変更前のデータの取り出しを行うことも簡単にできます。
Amazon S3を使用する際にデフォルトではバージョニング機能は無効となっているため、この機会に是非有効に設定し、バージョニング管理を行なってみましょう。
エンベーダー編集部
エンベーダーは、ITスクールRareTECHのインフラ学習教材として誕生しました。 「遊びながらインフラエンジニアへ」をコンセプトに、インフラへの学習ハードルを下げるツールとして運営されています。
関連記事
2020.02.25
完全未経験からエンジニアを目指す爆速勉強法
USBも知らなかった私が独学でプログラミングを勉強してGAFAに入社するまでの話
- キャリア・学習法
- エンジニア
2023.10.28
TerraformでAWS RDS/Auroraの時限起動を設定し、コストを削減
この記事では、AWSのデータベースサービスであるRDSとAuroraについて簡単に触れた後、なぜコスト削減が大事なのか、そしてそのためにどうやってTerraformを使うのかを紹介していきます。
- AWS
2024.02.07
AWSでLogstashの環境構築と使い方を学ぶ
Logstashという強力なツールを用いて、効果的なログ収集、加工、および可視化の方法を学びます。AWS上でのLogstashの設定から、基本的な使い方まで、実践的な知識を提供することを目指しています。
- インフラエンジニア
- AWS
2023.11.26
Amazon EKSで学ぶコンテナ管理
この記事では、EKSの基本概念から始めて、実際に手を動かして学べるハンズオンまでをカバーします。初心者でもEKSを理解し、実際に使えるようになることを目指しています。
- AWS