こんにちは!s.ichimuraです。
今回は、OCI(Oracle Cloud Infrastructure)のObjectStorageで利用可能なバージョニング機能について紹介します。
目次
はじめに
ObjectStorageを利用している際に、オブジェクトを誤ったデータで上書きしてしまう、間違ってオブジェクトを削除してしまうという事故が起こる可能性があります。
このような、もしもの時にリカバリーが効く仕組みがバージョニング機能です。
今回は、バージョニング機能について設定、操作、管理についてご紹介いたします。
バージョニングの設定
バージョニングはバケット単位で適応される設定になります。
設定自体は、バケットの作成時に項目にある「オブジェクト・バージョニングの有効化」を有効にするだけとなります。
バージョンの有効化は、既に作成済バケットに対してもバケットの詳細画面からいつでも有効化することができます。
この場合、バージョニング有効化前のバケットに格納されていたオブジェクトも、有効化後に更新/削除を行うとバージョニングされます。

バージョニングの操作
バージョニングの各種操作について記載します。
バージョニングの方法
まずは、バージョニング方法についてです。
バージョニングの方法自体はとても簡単です。
バージョニングが有効化されているバケットで、バージョニングしたいオブジェクトと同名でオブジェクトをアップロードするだけとなります。
バージョンとしては、新しくアップロードされたオブジェクトを「最新のバージョン」、元々存在した同名のオブジェクトを「旧バージョン」として扱います。
既に作成済のバケットに途中でバージョニングを有効化した場合も、その時点でアップロードされているオブジェクトが「最新のバージョン」となり、以降は上記と同じ様にバージョニングされていきます。
バージョンの確認
次に、バージョンの確認についてです。
バージョンの確認は、各オブジェクトの三点リーダーから「バージョンの表示」という項目を選択すると対象オブジェクトのバージョン一覧が確認できます。
この時、最新のバージョンには「最新バージョン」というラベルが貼られています。

バージョニングしたオブジェクトの削除
次に、バージョニングしたオブジェクトの削除についてです。
オブジェクトの削除は、2種類の削除があります。「論理的な削除」と「物理的な完全削除」です。
論理的な削除
論理的な削除は、バケットのアクションからオブジェクトの削除を行った場合の削除となります。
この場合の削除では、オブジェクトの一覧からは消えますがデータとしては削除されておらずオブジェクトに対して「削除マーカー」というラベルが付与されます。
この「削除マーカー」は、「このオブジェクトを削除扱いとする」というマーカーであり実際のデータは全バージョン含めて存在しております。
そのため、オブジェクトを復元することができます。

物理的な完全削除
物理的な完全削除は、バージョンの確認で表示されている全バージョンの削除を行った場合の削除となります。
オブジェクトの全バージョンの削除を行うと、オブジェクトは完全に削除され復元することはできなくなります。

バージョニングしたオブジェクトの復元
最後にオブジェクトの復元についてです。
オブジェクトの復元も2種類あります。「旧バージョンへの復元」と「論理的な削除をしたオブジェクトの復元」です。
旧バージョンへの復元
旧バージョンへの復元は、復元したいオブジェクトのバージョンの確認で表示されている「最新バージョン」を削除します。
この「最新バージョン」を削除することで1つ前のバージョンが「最新バージョン」となり旧バージョンにリカバリすることができます。
注意点としては、削除した「最新バージョン」は物理的な完全削除となりますので、もし残したい場合は削除前にダウンロードしてください。


論理的な削除をしたオブジェクトの復元
論理的な削除をした「オブジェクトを復元したい場合は、バケットのアクションから「削除したオブジェクトの表示」を選択します。
選択すると、オブジェクトの一覧に論理的に削除したオブジェクトが表示されるようになります。
表示された削除済オブジェクトから復元したいオブジェクトのバージョンを確認し、バージョン一覧に表示されている「削除マーカー」を削除します。
この「削除マーカー」を削除することで元々「最新バージョン」であったバージョンが「最新バージョン」として復元されます。


バージョニングの管理
バージョンの管理として、バケットのライフサイクルポリシーを利用する事が可能です。
バージョニングを有効化したバケットでは、ライフサイクルポリシーのターゲットに「最新バージョンのオブジェクト」「以前のバージョンのオブジェクト」という2つの項目が追加されます。
| 名称 | 説明 |
|---|---|
| 最新バージョンのオブジェクト |
最新バージョンに対するのライフサイクル・アクションが可能。 このライフサイクルで削除したオブジェクトには削除マーカが付与される。 |
| 以前のバージョンのオブジェクト |
以前のバージョン全てに対するライフサイクル・アクションが可能。 このライフサイクルで削除したオブジェクトは物理的な完全削除となる。 |

※バージョニングが有効化されていない場合のライフサイクルポリシーのターゲット

バージョニングの制約
バージョニング機能を利用する上でいくつか制約があります。
ここでは、特に重要な制約についてご紹介します。
その他制約、詳細は参考のサイトからご確認ください。
| 制約 | 内容 |
|---|---|
| 有効化できるストレージ層 |
バージョニング機能が利用できるバケットのストレージ層は、「標準」と「アーカイブ」となる。 |
| オブジェクトのコピー |
オブジェクトを別バケットにコピーする際は、指定したバージョンのオブジェクトのみがコピーされる。 |
| オブジェクトのレプリケーション |
オブジェクトのレプリケーションでは、以前のバージョンのオブジェクトはレプリケートできない。 ※レプリケーションの宛先バケットは、バージョニングの有効化はできない。 |
| 保持ルール |
「バージョニングの有効化」と「保持ルール」はどちらか片方しかバケットに設定できない。 |
| 価格 |
全てのバージョンが請求の対象となる。 「削除マーカー」が付与されているオブジェクトも課金の対象となる。 |
まとめ
最後に本記事のまとめとなります。
ObjectStorageのバージョニング機能を利用することで、大切なデータを保護することが可能となります。
特に、定期的に更新されるデータや重要データを扱うバケットに有用となります。
ぜひ皆様もObjectStorageを利用する際は、要件に応じてバージョニング機能の活用をご検討ください。
参考
オブジェクト・ストレージ・バージョニング
https://docs.oracle.com/ja-jp/iaas/Content/Object/Tasks/usingversioning.htm