オブジェクト・ストレージ・オブジェクト・ライフサイクル管理

オブジェクト・ライフサイクル管理を使用して、オブジェクトのアーカイブおよび削除を自動的に管理する方法について学習します。

Object Lifecycle Managementを使用してオブジェクト・ストレージおよびアーカイブ・ストレージのデータを管理することで、ストレージ・コストとデータの手動管理にかかる時間を削減できます。

オブジェクト・ライフサイクル管理は、定義したルールに基づいて自動アクションを実行することで機能します。これらのルールは、オブジェクト・ストレージに対し、コミットされていないマルチパート・アップロードを削除、別のストレージ層にオブジェクトを移動、および特定のバケット内でサポートされているリソースをユーザーにかわって削除するよう指示します。バケットのライフサイクル・ルールは、総称してオブジェクトのライフサイクル・ポリシーと呼ばれます。オブジェクト・ライフサイクル管理でサポートされているリソースには、オブジェクト、オブジェクト・バージョン、およびコミットされていないか失敗したマルチパート・アップロードが含まれます。

たとえば、次のことを自動的に実行するルールを定義できます:

  • .doc拡張子を持つ標準層オブジェクトを、作成または最終更新の60日後に頻出しないアクセス層またはアーカイブ層に移動します。

  • 標準層オブジェクトを、作成または最終更新の30日後にアーカイブ層に移動し、それらのアーカイブされたオブジェクトを180日後に自動的に削除します。

  • 標準層オブジェクトを、作成または最終更新の90日後に頻発しないアクセス層に移動します。

  • オブジェクト・バージョンが最新バージョンから以前のバージョンに遷移してから120日後に、以前のオブジェクト・バージョンをすべて削除します。

  • コミットされていないか失敗したマルチパート・アップロードを5日後に削除します。

  • バケットの削除に備えて、バケット内のすべてのオブジェクトおよびオブジェクト・バージョンを削除します。

各オブジェクト・ストレージまたはアーカイブ・ストレージ・バケットには、最大1,000個のルールで構成される単一のライフサイクル・ポリシーを設定できます。オブジェクト関連のルールには、オブジェクト名の接頭辞パターン一致の条件を指定できます。コミットされていないマルチパート・アップロードのルールでは、接頭辞パターン一致の条件はサポートされません。

必要に応じて、コンソールで個々のルールを作成、編集、削除、有効化および無効化できます。CLIまたはAPIを使用してライフサイクル・ポリシーを更新するには、既存のポリシーを新しいポリシーで上書きします。バケットに適用するすべてのポリシー・ルールが新しいポリシーに含まれていることを確認します。
ノート

通常、ルールはトリガーされてから10分以内に実行されます。ただし、これはベスト・エフォート・ベースで、時間がかかる場合があります。ルールは、ほとんどのバケットのすべてのオブジェクトに対して24時間以内に適用できますが、非常に大きなバケットの場合は時間がかかる場合があります。異常な状況では、特にルールが一度に多数のオブジェクトに影響を与える場合は、予想よりも時間が長くなる可能性があります。ルールがトリガーされてもまだ処理されていない場合でも、オブジェクトが存在する階層に対して引き続き請求されます。

オブジェクト・ライフサイクル・ポリシー・タスク

次のオブジェクト・ライフサイクル管理タスクを実行できます:

必須IAMポリシー

重要

オブジェクト・ライフサイクル管理は、代理でオブジェクトをアーカイブおよび削除する権限をオブジェクト・ストレージ・サービスに付与するまで、使用できません。詳細は、サービス権限を参照してください。

ポリシーを初めて使用する場合は、ポリシーの開始共通ポリシーを参照してください。

ユーザー権限

Oracle Cloud Infrastructureを使用するには、管理者によってポリシーでセキュリティ・アクセス権が付与されている必要があります。このアクセス権は、コンソール、あるいはSDK、CLIまたはその他のツールを使用したREST APIのいずれを使用している場合でも必要です。権限を持っていない、または認可されていないというメッセージが表示された場合は、持っているアクセス権のタイプと作業しているコンパートメントを管理者に確認してください。

管理者の場合:

  • ポリシーオブジェクト・ストレージの管理者がバケットとオブジェクトを管理するにより、指定したグループは、バケットおよびオブジェクトを使用したすべてのこと(ライフサイクル・ポリシーの追加および管理を含む)を実行できます。
  • 個別の権限を付与するより限定的なポリシーを作成する場合:
    • ライフサイクル・ポリシーを使用して、ユーザーのかわりに以前のオブジェクト・バージョンを削除するには、OBJECT_VERSION_DELETEが必要です。
    • オブジェクトのストレージ層を変更するには、OBJECT_UPDATE_TIERが必要です。

オブジェクト・ストレージのユーザー権限の詳細は、オブジェクト・ストレージ、アーカイブ・ストレージおよびデータ転送の詳細を参照してください。

サービス権限

オブジェクト・ライフサイクル・ポリシーを実行するには、代理でオブジェクトをアーカイブおよび削除する権限をサービスに付与する必要があります。これを行うには、テナンシのルート・コンパートメントに次のポリシーを作成します:

Allow service objectstorage-<region_identifier> to manage object-family in compartment <compartment_name>

オブジェクト・ストレージはリージョナル・サービスであるため、ライフサイクル・ポリシーを使用する各リージョンでオブジェクト・ストレージ・サービスを認可する必要があります。オブジェクト・ストレージにより、データが権限のないリージョンから読み取られないことが保証されます。

テナンシのルート・コンパートメントのポリシーを書き込む権限がない場合は、Oracle Cloud Infrastructure管理者に連絡してください。Oracle Cloud Infrastructureリージョンのリージョン識別子の値を決定するには、リージョンおよび可用性ドメインを参照してください。

ポリシー動詞 manageを使用するかわりに、サービスに個別の権限を付与できます。例:

Allow service objectstorage-<region_identifier> to manage object-family in compartment <compartment_name> where any {request.permission='BUCKET_INSPECT', request.permission='BUCKET_READ', request.permission='OBJECT_INSPECT', request.permission='OBJECT_UPDATE_TIER', request.permission='OBJECT_DELETE', request.permission='OBJECT_VERSION_DELETE'}

オプション

オブジェクト・ライフサイクル・ポリシー・ルールを作成する場合、次のオプションがあります:

  • ライフサイクル・ルールが作成されると、そのルールのデフォルト名(たとえばlifecycle-rule-20190321-1559)が生成されます。このルール名は、ルールが作成された現在の年、月、日および時刻を識別します。そのシステム生成の名前を新しいルールに使用することも、別の名前を指定することもできます。

  • 次を実行するライフサイクル・ルールを作成できます:

    • バケット内のすべてのオブジェクトを移動または削除します。

    • 指定したオブジェクト名フィルタに一致するバケット内のオブジェクトを移動または削除します。オブジェクト名の接頭辞とパターン一致の両方を使用して、オブジェクトを選択できます。詳細は、オブジェクト名フィルタの使用を参照してください。

    • コミットされていないか失敗したマルチパート・アップロードを削除します。詳細は、オブジェクト・ストレージのマルチパート・アップロードを参照してください。

    オブジェクト・バージョニングがバケットで有効化または一時停止されている場合は、次を実行するライフサイクル・ルールを作成することもできます:
    • バケット内のすべてのオブジェクトの以前のバージョンを移動または削除します。

    • 指定した名前フィルタに一致するバケット内のオブジェクトの以前のバージョンを移動または削除します。オブジェクト名の接頭辞とパターン一致の両方を使用して、オブジェクトを選択できます。詳細は、オブジェクト名フィルタの使用を参照してください。

    詳細は、オブジェクト・ストレージのバージョニングを参照してください。
  • 指定したアクションが実行されるまでの日数を指定します。

  • 作成時に新しいルールを有効にするか無効にするかを決定します。

オブジェクト名フィルタの使用

オブジェクト名フィルタを使用して、ライフサイクル・ルールが適用されるオブジェクト、オブジェクト・バージョンまたは以前のオブジェクト・バージョンのサブセットを指定します。ルール・ターゲット(オブジェクト、オブジェクト・バージョンまたは以前のオブジェクト・バージョン)ごとに別個のオブジェクト名フィルタ・ルールを作成します。

重要

ルールをすべてのオブジェクト、すべてのオブジェクト・バージョンまたは以前のすべてのオブジェクト・バージョン・ターゲットに適用する場合は、オブジェクト名フィルタを指定しないでください。

2種類のオブジェクト名フィルタがサポートされています:

  • 接頭辞一致は、オブジェクト名の左端の文字との完全一致です。接頭辞一致はワイルドカード文字をサポートしていません。オブジェクト・ストレージのバケットおよびオブジェクトはフラットな構造に存在しますが、接頭辞を使用すると、スラッシュ(/)と併用したときにディレクトリ構造をシミュレートできます。詳細は、接頭辞および階層を使用したオブジェクト・ネーミングを参照してください。

  • パターン一致はオブジェクト名全体での一致ですが、必要に応じてワイルドカード文字やその他のパターン一致構造を使用して、オブジェクト名内の0個以上の文字と一致させることができます。

ノート

オブジェクト名フィルタは、オブジェクト名全体に対して機能します。接頭辞(仮想フォルダおよびサブフォルダとしてコンソールに表示される)は、オブジェクト名の一部です。

たとえば、>marathon>participants>p_21.jpgというパスの場合、オブジェクトの名前はp_21.jpgではなく/marathon/participants/p_21.jpgです。

オブジェクト名フィルタは任意の順序で追加できます。オブジェクト・ライフサイクル管理は、次のようにルールの優先度を評価します:

  1. パターン除外

  2. パターン包含

  3. 接頭辞包含

接頭辞一致を使用したオブジェクトのフィルタ処理

ライフサイクル管理関連の操作の実行時に、照合の目的で接頭辞文字列を使用できます。オブジェクト名の接頭辞部分で照合して、特定の一括操作を実行することもできます。

  • 次のオブジェクト名の例では、接頭辞にディレクトリ構造をシミュレートするための1つ以上のスラッシュ(/)が含まれています。文字列marathon/またはmarathon/participants/は、ライフサイクル・ルールでの照合目的の接頭辞として機能します:
    marathon/finish_line.jpg
    marathon/podium.jpg
    marathon/participants/p_21.jpg
    marathon/participants/p_29.jpg
  • 次のオブジェクト名の例では、文字列gloves_27_は、ライフサイクル・ルールでの照合目的の接頭辞として機能します:
    gloves_27_dark_green.jpg
    gloves_27_light_blue.jpg
    gloves_27_deep_purple.jpg
    gloves_27_bright_orange.jpg
            

パターン一致を使用したオブジェクトのフィルタ処理

オブジェクト・ストレージでは、オブジェクトを含めるか除外するために、次のパターン一致文字がサポートされます:

文字 説明 パターンの例 一致する 一致しない
* 0文字以上の文字と一致します *.tmp

foo.tmp

foo/bar/baz.tmp

tmp

Atmp

temp/*.tmp

temp/working.tmp

temp/new/file.tmp

file.tmp

temp.tmp

temp/new.draft

*.xls

.xls

/home/user/file.xls

xls

.xl

/archive/*

/archive/sub/dir/

/archive/1/2/3/4/foo.txt

/src/archive/a

archive/b

? 任意の1文字と一致します X?Z

XyZ

X_Z

XZ

XYYZ

\ 次の文字をエスケープします \\dir\\sub\\*

\dir\sub\ABC

\dir\sub\

dir\sub\abc

dirsub

[...]

文字のグループと一致します。これには次があります:

  • 文字のセット。例: [Zafg9@]。カッコ内の任意の文字と一致します。
  • 文字の範囲。例: [a-f]。範囲内の任意の文字と一致します:
    • [a-f]は[abcdef]と同等です。

    • 文字範囲では、CHARACTER-CHARACTERのパターンのみがサポートされます:

      • [ab-yz]は無効です
      • [a-mn-z]は無効です
    • 文字範囲は^またはコロン(:)で開始できません。

    • ハイフン(-)を範囲に含めるには、先頭または最後の文字にします。

[-ab3]

-

a

b

3

-a

-ab

3b

backup.tar.gz.[0-9]

backup.tar.gz.0

backup.tar.gz.5

backup.tar.gz.9

backup.tar.gz10

backup.tar.gz

page-[0-9]*

page-0

page-2

page-22

page-2X

page-

page-A1

\[a-z\] [a-z]

a

z

[a-z

オブジェクト名フィルタの制限

オブジェクト名フィルタには、次の制限が適用されます。

  • オブジェクト名フィルタでは、最大20のパターンを使用できます。

  • パターンは1024文字に制限されています。無効なパターンの例は次のとおりです:

    • \
    • [^a-z]
    • [z-a]
    • [:isalpha:]

オブジェクト・ライフサイクル管理ポリシーの作業

ライフサイクル・ポリシー・ルールは、コンソール、コマンドライン・インタフェース(CLI)、SDKまたはAPIを使用して、作成、削除、編集または無効化できます。

オブジェクト・ライフサイクル管理の削除ポリシーは、オブジェクトの最終変更時間(UTC (協定世界時)に基づいて動作し、作成時間または最終上書き時間のいずれかを取得します。変更時間は、UTCで一番近い日に切り上げられます。

プラットフォームは、1日に1回ライフサイクル・ポリシーを実行します。ライフサイクル・ポリシーを構成または編集する際、変更が有効になり、最初の実行が開始されるまでに最大24時間かかる場合があります。ポリシー・アクションの完了にかかる時間は、評価および操作するオブジェクトの数によって異なります。

警告

ライフサイクル・ポリシーによって代理で削除されたオブジェクトは、リカバリできません。ライフサイクル・ポリシーを作成および編集する際には、保持するデータを誤って削除しないようにしてください。本番でポリシーを使用する前に、開発データでライフサイクル・ポリシーをテストすることをお薦めします。