バケットのバージョン管理が有効になっている場合、Object Storage Service (OSS) は、上書きまたは削除されたデータを以前のバージョンとして保存します。 ストレージコストを削減し、リストオブジェクトのバケットパフォーマンスを向上させるために、ライフサイクルルールを設定して、期限切れの削除マーカーと不要になった以前のバージョンを削除できます。
前提条件
バケットのバージョン管理が有効になっています。 詳細については、「バージョン管理の有効化」をご参照ください。
シナリオ
たとえば、次の図に示すように、ユーザーが2月8日にバージョン管理が有効なexamplebucketバケットにexample.txtファイルをアップロードし、その後同じ年にexample.txtオブジェクトに対して複数の上書き操作、またはオブジェクトに対して複数の単純な削除操作を実行しました。 OSSは、上書き操作または削除操作ごとにグローバルに一意のバージョンIDを生成し、上書きおよび削除されたデータを以前のバージョンとしてバケットに保存しました。 次の図のバージョンIDは、説明のためのものです。
ビジネス要件を満たすために、ユーザーはexample.txtオブジェクトのバージョンを管理して次の目標を達成したいと考えています。
5月8日と9月10日に生成されたバージョンのみを保持します。
5月8日に生成された最新の以前のバージョンを現在のバージョンに復元します。
使用上の注意
ライフサイクルルールを設定してオブジェクトのバージョンを管理する場合は、次の項目に注意してください。
オブジェクトの現在のバージョンの有効期限ポリシー
バージョン管理が有効なバケットで、ライフサイクルルールで指定された有効期限ポリシーがオブジェクトの現在のバージョンに実装されている場合、OSSはオブジェクトに削除マーカーを追加し、現在のバージョンを以前のバージョンとして保存します。 削除マーカーがオブジェクトの現在のバージョンになります。
バージョン管理が一時停止されたバケットで、ライフサイクルルールで指定された有効期限ポリシーがオブジェクトの現在のバージョンに実装されている場合、OSSは、バージョンIDがnullの削除マーカーを新しい現在のバージョンとしてオブジェクトに追加します。 バージョンIDがnullである既存のバージョンがオブジェクトにある場合、バージョンIDはグローバルに一意であるため、既存のバージョンは削除マーカーによって上書きされます。
以前のバージョンのオブジェクトの有効期限ポリシー
バージョン管理が有効または一時停止されているバケットでは、ライフサイクルで指定された有効期限ポリシーが以前のバージョンのオブジェクトに実装されている場合、以前のバージョンは完全に削除され、復元できません。
ライフサイクルルールの詳細については、「最終変更時刻に基づくライフサイクルルール」をご参照ください。
手順
指定したオブジェクトバージョンを保持する
たとえば、現在の日付は9月10日です。 この場合、ユーザーは次の手順を実行して、5月8日と9月10日にアップロードされたバージョンのみを保持するようにライフサイクルルールを設定できます。
OSSコンソールにログインします。
左側のナビゲーションウィンドウで、バケットリスト をクリックします。 [バケット] ページで、[examplebucket] をクリックします。
左側のナビゲーションツリーで、
を選択します。ライフサイクルページで、ルールの作成 をクリックします。 [ルールの作成] パネルで、次の表の説明に従ってパラメーターを設定し、他のパラメーターのデフォルト設定を保持します。
セクション
パラメーター
設定方法
基本設定
ステータス
[Enabled] を選択します。
ポリシー
バケット全体に適用 を選択します。
現在のバージョンのポリシー
ファイル時間ポリシー
[削除マーカーのクリーンアップ] を選択します。
以前のバージョンに対するポリシー
ファイル時間ポリシー
有効期間 を選択します。
ライフサイクルベースのルール
値を90に設定します。 オブジェクトは、以前のバージョンとして保存されてから90日後に期限切れになり、期限切れの翌日に削除されます。
フラグメントに対するポリシー
フラグメント期限切れポリシー
有効期間 を選択します。
フラグメントに対するルール
値を90に設定します。 マルチパートアップロードタスクで生成されたパーツは、生成されてから90日後に期限切れになり、その翌日に削除されます。
OK をクリックします。
特定のオブジェクトバージョンを復元する
5月8日にexample.txt用に生成された以前のバージョンを現在のバージョンに復元するには、次の手順を実行します。
examplebucketバケットの左側のナビゲーションツリーで、ファイル > オブジェクト を選択します。
[オブジェクト] ページで、現在のバージョンに復元するオブジェクトのバージョンを見つけます。
オブジェクトバージョンの [操作] 列で 回復 をクリックします。
参考資料
API操作を呼び出してオブジェクトを復元できます。 以前のバージョンのオブジェクトを現在のバージョンに復元するには、以前のバージョンのオブジェクトを、そのオブジェクトが格納されているバケットにコピーします。 OSSは、オブジェクトの以前のバージョンを現在のバージョンとして保存します。 詳細については、「CopyObject」をご参照ください。