Amazon S3にはバージョニングという機能があります。このバージョニング機能はバケット内のオブジェクトの複数のバージョンを 1 つのバケットに保持し、誤って削除または上書きしてしまった場合でもオブジェクトの復元を行える機能です。バージョニング機能の有効化を行うと、バケット内の一部ではなくすべてのオブジェクトを対象にバージョンの作成が行われます。
バージョニング機能を使う目的
バージョニング機能を用いない場合、データの上書きや削除などの人的ミスやアプリケーション側の不具合が発生した場合にデータを保護する事ができません。主な対策として作業のたびにクライアント自身でバックアップを作成する方法がありますが、作業のたびに行うのは大変手間であり、バックアップのためのストレージ容量の確保や管理なども必要でした。
Amazon S3のバージョニング機能を用いることでクライアント側は特別な操作を行うことなく、自動的にシステム側でバージョンの作成を行なってくれるため(マネージドサービス)、ストレージ容量の心配や手動によるバージョン管理の手間を省くことができます。
バージョニング機能の特徴
バージョニング機能の主な特徴や仕組みを解説していきます。
バージョニング機能はデフォルトではUnversioned(以下、無効)に設定されており、バージョニング機能は一度Versioning-enabled(以下、有効)にすると無効にすることはできませんが、Versioning-suspended(以下、停止)を行うことができます。また、バージョニング機能を有効にすることで、復元だけでなくオブジェクトの取得にバージョンを指定して行う事ができます。
例えば、画像データなどで加工を終えたあとに加工前の画像データが必要になった場合などにアップロードしたバージョンを遡り取得を行う事ができます。
バージョニング機能が無効な場合
バージョニング機能が無効な場合、全てのオブジェクトは現行のバージョンとして扱われます。この場合バージョンIDはnullとなります。バージョニング機能が無効な状態でオブジェクトを削除するとデータは完全に削除されてしまいます。
バージョニング機能が有効な場合
バージョニング機能を有効にすると現行のバージョンだけでなく、過去のバージョンも保持され各オブジェクトは1つの現行バージョンと0個以上の過去のバージョンを持つことになります。過去のバージョンが作成される主なケースとして同一名称のオブジェクトがputされた時や現行のオブジェクトが削除された時に作成されます。
バージョニング機能の使い方
バージョニング機能の使い方としてバージョンの復元と削除マーカーについて説明します。
バージョンの復元
過去のバージョンを復元したい場合は復元したいバージョンのコピーを行う方法と現行のバージョンを削除する方法があります。
復元したいバージョンのコピーを行った場合は現行のバージョンが繰り下げ式に過去のバージョンとなり、新しくコピーされたバージョンが現行のバージョンとなります。コピーしたバージョンへは新たなバージョンIDが付与され、コピー元のバージョンはそのまま維持されるため、同じ内容のデータを持つバージョンが二つ存在する事になります。現行のバージョンを削除する方法だと繰り上げ式に過去のバージョンが繰り上がり、現行のバージョンとなります。
削除マーカーによる論理削除
バージョニング機能を有効にしているバケットでオブジェクトの削除を行なってもオブジェクトは削除されず、代わりにAmazon S3により削除マーカーが挿入されます。この削除マーカーはオブジェクトが削除されたかのような論理削除を行います。この論理削除は物理削除とは異なり、完全にデータの削除が行われた訳ではないため削除マーカーを削除することで過去のバージョンの復元を行えます。この削除マーカーを削除する場合はバージョンIDの指定が必要で、指定をせずにオブジェクトの削除を行うと新たな削除マーカーが挿入されます。また、注意点として現行のバージョンが削除マーカーの場合はコピーによる復元を行えません。
まとめ
バージョニング機能とはバケット内のオブジェクトに対して複数のバージョンを保持することにより、誤ってデータの削除や上書きを行った場合でもデータの復元ができる機能です。
これまではクライアント側でバックアップを取ったりといったデータ保護のための対策を講じないといけなかったことが、バージョニング機能を用いることで簡単に行うことができます。また、データの復元だけでなく任意のバージョンを取得することも可能になるため、変更前のデータの取り出しを行うことも簡単にできます。
Amazon S3を使用する際にデフォルトではバージョニング機能は無効となっているため、この機会に是非有効に設定し、バージョニング管理を行なってみましょう。
【番外編】USBも知らなかった私が独学でプログラミングを勉強してGAFAに入社するまでの話
プログラミング塾に半年通えば、一人前になれると思っているあなた。それ、勘違いですよ。「なぜ間違いなの?」「正しい勉強法とは何なの?」ITを学び始める全ての人に知って欲しい。そう思って書きました。是非読んでみてください。
「フリーランスエンジニア」
近年やっと世間に浸透した言葉だ。ひと昔まえ、終身雇用は当たり前で、大企業に就職することは一種のステータスだった。しかし、そんな時代も終わり「優秀な人材は転職する」ことが当たり前の時代となる。フリーランスエンジニアに高価値が付く現在、ネットを見ると「未経験でも年収400万以上」などと書いてある。これに釣られて、多くの人がフリーランスになろうとITの世界に入ってきている。私もその中の1人だ。数年前、USBも知らない状態からITの世界に没入し、そこから約2年間、毎日勉学を行なった。他人の何十倍も努力した。そして、企業研修やIT塾で数多くの受講生の指導経験も得た。そこで私は、伸びるエンジニアとそうでないエンジニアをたくさん見てきた。そして、稼げるエンジニア、稼げないエンジニアを見てきた。
「成功する人とそうでない人の違いは何か?」
私が出した答えは、「量産型エンジニアか否か」である。今のエンジニア市場には、量産型エンジニアが溢れている!!ここでの量産型エンジニアの定義は以下の通りである。
比較的簡単に学習可能なWebフレームワーク(WordPress, Rails)やPython等の知識はあるが、ITの基本概念を理解していないため、単調な作業しかこなすことができないエンジニアのこと。
多くの人がフリーランスエンジニアを目指す時代に中途半端な知識や技術力でこの世界に飛び込むと返って過酷な労働条件で働くことになる。そこで、エンジニアを目指すあなたがどう学習していくべきかを私の経験を交えて書こうと思った。続きはこちらから、、、、
エンベーダー編集部
エンベーダーは、ITスクールRareTECHのインフラ学習教材として誕生しました。 「遊びながらインフラエンジニアへ」をコンセプトに、インフラへの学習ハードルを下げるツールとして運営されています。
関連記事
2020.02.25
完全未経験からエンジニアを目指す爆速勉強法
USBも知らなかった私が独学でプログラミングを勉強してGAFAに入社するまでの話
- キャリア・学習法
- エンジニア
2024.08.26
Azureサブスクリプションの理解とAWS・Google Cloudの管理単位の違い
この記事は、Azure、AWS、Google Cloudといった主要なクラウドプラットフォームを利用する方々、特にこれからクラウドを導入しようとしている企業のIT担当者やエンジニアを対象にしています。
- AWS
- GCP
- Azure
2024.04.28
CloudWatchにおける監視項目 絶対に押さえておくべきアラームとは?
この記事では、システム運用において必須であろうアラームについて解説していきます。
- AWS
2024.10.31
CloudFormation vs Terraform どっちを選ぶ?自動化ツールの違いと選定ポイント
この記事では、CloudFormationとTerraformの主な違いを整理し、それぞれの特徴やメリット・デメリットを理解することで、あなたのプロジェクトに最適なツールを選ぶためのガイドとなることを目指します。
- AWS
- インフラエンジニア