このトピックでは、オブジェクトライフサイクルルールにおける構成要素について説明します。
ライフサイクルルールの XML 例
<LifecycleConfiguration>
<Rule>
<ID>rule1</ID>
<Prefix>logs/</Prefix>
<Status>Enabled</Status>
<Filter>
<Not>
<Prefix>logs1/</Prefix>
<Tag><Key>key1</Key><Value>value1</Value></Tag>
</Not>
</Filter>
<Expiration>
<Days>10</Days>
</Expiration>
</Rule>
<Rule>
<ID>rule2</ID>
<Prefix>doc/</Prefix>
<Status>Disabled</Status>
<Expiration>
<CreatedBeforeDate>2017-12-31T00:00:00.000Z</CreatedBeforeDate>
</Expiration>
</Rule>
<Rule>
<ID>rule3</ID>
<Prefix>logs2/</Prefix>
<Tag><Key>xx</Key><Value>1</Value></Tag>
<Status>Enabled</Status>
<Transition>
<Days>60</Days>
<StorageClass>Archive</StorageClass>
</Transition>
</Rule>
</LifecycleConfiguration>
上記の例には 3 つのルールが含まれています。
-
最初のルールは、プレフィックスが
logs/で、最終更新日時から 10 日が経過したオブジェクトを削除します。プレフィックスがlogs1/で、タグがkey1:value1のオブジェクトは削除されません。 -
2 番目のルールは、プレフィックスが
doc/で、2017 年 12 月 31 日より前に変更されたオブジェクトを削除するように構成されています。しかし、ステータスがDisabledのため、このルールは適用されません。 -
3 番目のルールは、プレフィックスが
logs2/で、タグがxx:1のオブジェクトのストレージクラスを、最終更新日から 60 日後にArchiveに移行します。
以降のセクションでは、ID や Operation 要素など、ライフサイクルルール内の構成要素について説明します。
ID 要素
バケットのライフサイクルルールの ID です。ID は最大 255 バイトです。ID 要素が指定されていないか、その値が空の場合、OSS は一意の ID を自動的に生成します。
Status 要素
ライフサイクルルールのステータスを示します。ステータスは Enabled または Disabled に設定できます。ルールが Disabled の場合、OSS はそのルールで定義されたアクションを無視します。
Prefix 要素
<Prefix> 要素を使用して、名前のプレフィックスに基づいて、バケット内のすべてまたは一部のオブジェクトにライフサイクルルールを適用します。
Filter 要素
Filter 要素は、ライフサイクルルールの条件を指定します。オブジェクトは、Filter 要素内のすべての条件を満たす場合にのみ、ルールに一致します。
Not 要素
プレフィックスとタグの両方に一致するルールから特定のオブジェクトを除外するには、Not 要素を使用します。Not 内で、ルールのアクションから除外するオブジェクトのプレフィックスとタグを指定します。
バケットに複数のライフサイクルルールを構成する場合、Not 要素は、それが定義されているルールにのみ適用されます。
複数のサブディレクトリを除外するために、各ルールで異なるサブディレクトリを除外する Not 要素を使用して複数のルールを構成しないでください。異なるルール内の Not 要素は独立しており、互いに影響しません。たとえば、次の構成は、dir/p1/ と dir/p2/ 内のファイルを保持しながら、30 日より古い dir/ 内のファイルを削除することを目的としています。しかし、これによりすべてのファイルが削除されてしまいます。
<LifecycleConfiguration>
<Rule>
<ID>rule1</ID>
<Prefix>dir/</Prefix>
<Filter>
<Not><Prefix>dir/p1/</Prefix></Not>
</Filter>
<Status>Enabled</Status>
<Expiration><Days>30</Days></Expiration>
</Rule>
<Rule>
<ID>rule2</ID>
<Prefix>dir/</Prefix>
<Filter>
<Not><Prefix>dir/p2/</Prefix></Not>
</Filter>
<Status>Enabled</Status>
<Expiration><Days>30</Days></Expiration>
</Rule>
</LifecycleConfiguration>
rule2 は dir/p2/ のみを除外するため、dir/p1/ 内のオブジェクトに一致します。rule1 は dir/p1/ のみを除外するため、dir/p2/ 内のオブジェクトに一致します。その結果、dir/ 配下のすべてのファイルが削除されます。これを修正するには、単一のルール内に複数の Not 要素を構成します。この機能を利用するには、有効化の申請が必要な場合があります。以下に例を示します。
<LifecycleConfiguration>
<Rule>
<ID>rule1</ID>
<Prefix>dir/</Prefix>
<Filter>
<Not><Prefix>dir/p1/</Prefix></Not>
<Not><Prefix>dir/p2/</Prefix></Not>
</Filter>
<Status>Enabled</Status>
<Expiration><Days>30</Days></Expiration>
</Rule>
</LifecycleConfiguration>
以下に構成例を示します。
-
ルール
rule1は、プレフィックスがdir1/のオブジェクトを、最終更新日から 30 日後に削除します。 -
ルール
rule2は、プレフィックスがdir1/のオブジェクトを、最終更新日から 20 日後に低頻度アクセス (IA)ストレージクラスに移行し、dir1/dir2/配下のオブジェクトを除外するように構成されています。しかし、このルールのステータスはDisabledであるため、アクティブではありません。
<LifecycleConfiguration>
<Rule>
<ID>rule1</ID>
<Prefix>dir1/</Prefix>
<Status>Enabled</Status>
<Expiration>
<Days>30</Days>
</Expiration>
</Rule>
<Rule>
<ID>rule2</ID>
<Prefix>dir1/</Prefix>
<Status>Disabled</Status>
<Filter>
<Not>
<Prefix>dir1/dir2/</Prefix>
</Not>
</Filter>
<Transition>
<Days>20</Days>
<StorageClass>IA</StorageClass>
</Transition>
</Rule>
</LifecycleConfiguration>
Not 要素は rule2 に対してのみ有効です。プレフィックスが dir1/ のオブジェクトは依然として rule1 の対象となり、最終更新日から 30 日後に削除されます。
詳細については、「最終更新日に基づくルール」をご参照ください。
時間要素
-
特定の日付による指定
<CreatedBeforeDate>子要素を使用して、固定の日付を指定します。ExpirationまたはTransitionアクションは、最終更新日がこの日付より前のオブジェクトに適用されます。 -
日数による指定
<Days>子要素を使用して、相対的な日数を指定します。ExpirationまたはTransitionアクションは、オブジェクトの最終更新日から N 日後に適用されます。
操作要素
ライフサイクルルール内の操作要素は、オブジェクトに対して特定のアクションを実行するよう OSS に指示します。これらのアクションの効果は、バケットのバージョン管理の状態によって異なります。以降のセクションでは、バケットのバージョン管理の状態に基づいたライフサイクルルールのアクションの動作を要約します。
-
バージョン管理が無効なバケット
アクション
説明
Transition
指定された日数後または特定の日付に、オブジェクトを指定されたストレージクラスに移行します。ライフサイクルルールが移行をサポートするストレージクラスの詳細については、「ライフサイクルルールを使用したオブジェクトのストレージクラスの自動変換」をご参照ください。
Expiration
指定された日数後または特定の日付に、一致するオブジェクトを完全に削除します。
-
バージョン管理されたバケット
以下では、バージョン管理されたバケット (バージョン管理が有効または一時停止されているバケット) 内のオブジェクトに関するライフサイクル関連の要素について説明します。
-
現行バージョンの失効および移行アクション
アクション
説明
Expiration
失効の動作は、オブジェクトの現行バージョンが削除マーカーであるかどうかによって異なります。
-
現行バージョンが削除マーカーでない場合:
-
バージョン管理が有効な場合、OSS は一意のバージョン ID を持つ削除マーカーを現行バージョンとして挿入します。元の現行バージョンは非現行バージョンになります。
-
バージョン管理が一時停止されている場合、OSS は null バージョン ID を持つ削除マーカーを現行バージョンとして挿入します。OSS は、オブジェクトに null バージョン ID を持つバージョンが 1 つのみ存在するように、既存の null バージョン ID を持つバージョンを上書きします。
-
-
現行バージョンが削除マーカーの場合:
-
オブジェクトに 1 つ以上の非現行バージョンがある場合、Expiration アクションがトリガーされても OSS は何も実行しません。
-
それがオブジェクトの唯一のバージョンである場合、
ExpirationルールにExpiredObjectDeleteMarker要素が true に設定されているか、ルールが現行バージョンを削除するように設定されていれば、OSS は自動的に削除マーカーを削除します。重要-
オブジェクトの現行バージョンを削除するか、バージョン非固有の削除操作を実行するようにライフサイクルルールを構成すると、そのアクションは現行バージョンを非現行バージョンに変換します。オブジェクトのすべての非現行バージョンを削除するか、バージョン固有の削除操作を実行するようにライフサイクルルールを構成すると、そのアクションはすべての非現行バージョンを完全に削除します。削除マーカーのみが現行バージョンとして残った場合、それは期限切れの削除マーカーと呼ばれます。
-
ExpiredObjectDeleteMarker子要素は、タグベースのルールと一緒に構成することはできません。
-
-
Transition
オブジェクトのライフサイクルで指定された日付または期間に達したときに、オブジェクトの現行バージョンを指定されたストレージクラスに移行します。
-
-
非現行バージョンの失効および移行アクション
アクション
説明
関連要素
NoncurrentVersionExpiration
オブジェクトの非現行バージョンを失効させます。
<NoncurrentDays>子要素は、OSS が非現行バージョンを完全に削除する前に保持する日数を指定します。この期間は、バージョンが非現行バージョンになった時点から開始されます。説明たとえば、PutObject の上書き操作により、あるバージョンが 2019 年 5 月 1 日に非現行バージョンになったとします。
NoncurrentVersionExpiration要素の<NoncurrentDays>が 3 に設定されている場合、OSS はこの非現行バージョンを 2019 年 5 月 4 日に完全に削除します。バージョンの継続性により、アップロード操作が行われるたびに、それまでの現行バージョンが非現行バージョンとなり、新しく追加されたバージョンがその後続バージョンになります。OSS は、後続バージョンの作成時刻を確認することで、あるバージョンがいつ非現行バージョンになったかを判断します。NoncurrentVersionTransition
オブジェクトの非現行バージョンのストレージクラスを移行します。
-
<NoncurrentDays>子要素は、バージョンが非現行バージョンになってからストレージクラスを移行するまで待機する日数を指定します。 -
<StorageClass>子要素は、オブジェクトのターゲットストレージクラスを指定します。
-
-