このトピックでは、オブジェクトのライフサイクルルール構成ファイルで設定できる要素について説明します。
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 番目のルールは、2017 年 12 月 31 日より前に変更された、プレフィックスが
doc/のオブジェクトを削除するように指定します。ただし、このルールのステータスは無効になっているため、このルールは有効になりません。3 番目のルールは、プレフィックスが
logs2/、タグがxx:1で、最終更新日が 60 日前のオブジェクトのストレージクラスをアーカイブストレージに変更します。
次のセクションでは、ID 要素や Operation 要素など、ライフサイクルルールに関連する構成要素について詳しく説明します。
ID
バケットに設定されたライフサイクルルールの ID。ID には最大 255 バイトを含めることができます。ID 要素が指定されていないか、値が空の場合、OSS は一意の ID を自動的に生成します。
ステータス
Status 要素は、ライフサイクルルールのステータスを指定します。ステータスは Enabled または Disabled に設定できます。Status 要素が Enabled に設定されているライフサイクルルールのみが有効になります。
プレフィックス
指定した <Prefix> 要素に基づいて、ライフサイクルルールがバケット内のすべてまたは一部のオブジェクトに適用されます。
フィルター
Filter 要素は、ライフサイクルルールのフィルター条件を指定します。Filter 要素で指定されたすべての条件を満たすオブジェクトがルールに一致します。
Not
ライフサイクルルールを使用して、名前に特定のプレフィックスが含まれ、特定のタグを持つオブジェクトを処理するときに、特定のオブジェクトをスキップしたい場合があります。この場合、Not 要素でスキップしたいオブジェクトの名前プレフィックスとタグを指定できます。
バケットに複数のライフサイクルルールが設定されている場合、Not 要素は関連付けられたルールにのみ有効です。
例:
ルール 1 は、プレフィックスが
dir1のオブジェクトを最終更新日から 30 日後に削除するように設定します。ルール 2 は、プレフィックスが
dir1のオブジェクトを最終更新日から 20 日後に低頻度アクセスストレージクラスに変換するように設定し、Not 要素を介してdir1/dir2/配下のオブジェクトのストレージクラスを変換しないように指定します。
<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 要素はルール 2 にのみ有効になります。dir1 プレフィックスを含む名前のオブジェクトは、ルール 1 に基づいてオブジェクトの最終更新日から 30 日後に削除されます。
詳細については、「最終更新時間に基づくライフサイクルルール」をご参照ください。
時間
日付
<CreatedBeforeDate>子要素を使用して特定の日付を指定し、この日付より前に最終更新されたオブジェクトに対して有効期限切れ (Expiration) またはストレージクラス変換 (Transition) 操作を実行します。日数
<Days>子要素を使用して相対的な日数を指定し、指定されたオブジェクトが最終更新されてから N 日後に有効期限切れまたはストレージクラス変換操作を実行します。
操作
ライフサイクルルールに一致するオブジェクトに対して、ライフサイクルルールに 1 つ以上の操作要素を設定できます。オブジェクトの有効期限が切れると、OSS はオブジェクトに対して指定された操作を実行します。これらの操作の効果は、バケットのバージョン管理ステータスによって異なります。次の表では、バケットのバージョン管理ステータスがオブジェクトのライフサイクルルールで指定された操作にどのように影響するかを説明します。
バージョン管理が無効になっているバケット
操作
説明
Transition
ライフサイクルルールに一致するオブジェクトのストレージクラスは、ライフサイクルルールで指定された日付または有効期間に基づいてオブジェクトの有効期限が切れると変換されます。ライフサイクルルールで指定できるストレージクラスの詳細については、「ライフサイクルルールによるストレージクラスの自動変換」をご参照ください。
Expiration
ライフサイクルルールに一致するオブジェクトは、ライフサイクルルールで指定された日付または有効期間に基づいてオブジェクトの有効期限が切れると削除されます。
バージョン管理が有効になっているバケット
次の表では、バージョン管理されたバケット内のオブジェクトのライフサイクルルールで指定できる Operation 要素について説明します。バージョン管理されたバケットには、バージョン管理が有効になっているバケットと、バージョン管理が一時停止されているバケットが含まれます。
オブジェクトの現在のバージョンに対する削除またはストレージクラス変換操作
操作
説明
Expiration
有効期限切れのオブジェクトに対して実行される操作は、オブジェクトの現在のバージョンが削除マーカーであるかどうかによって異なります。
オブジェクトの現在のバージョンが削除マーカーでない場合、OSS は次のルールに基づいてバージョンを処理します。
オブジェクトを格納するバケットでバージョン管理が有効になっている場合、OSS は一意のバージョン ID を持つ削除マーカーを現在のバージョンとして挿入し、元の現在のバージョンは以前のバージョンになります。
オブジェクトを格納するバケットでバージョン管理が一時停止されている場合、OSS は null バージョン ID を持つ削除マーカーを現在のバージョンとして挿入し、元の現在のバージョンの null バージョン ID を持つバージョンは上書きされ、オブジェクトに null バージョン ID を持つバージョンが 1 つだけになるようにします。
オブジェクトの現在のバージョンが削除マーカーである場合、OSS は次のルールに基づいてバージョンを処理します。
オブジェクトの以前のバージョンが 1 つ以上存在する場合、ライフサイクルルールで指定された操作はトリガーされません。
オブジェクトにバージョンが 1 つしかない場合、Expiration を通じて ExpiredObjectDeleteMarker が true に設定されたルールが設定されている場合、または Expiration を通じて現在のバージョンを削除するルールが設定されている場合、OSS は削除マーカーを自動的に削除します。
重要オブジェクトの現在のバージョンについて、それを削除するライフサイクルルールを設定するか、バージョンを指定せずに削除操作を開始すると、現在のバージョンは以前のバージョンとして設定されます。オブジェクトのすべての以前のバージョンについて、それらを削除するライフサイクルルールを設定するか、指定されたバージョンで削除操作を開始すると、すべての以前のバージョンは完全に削除されます。この時点で、一意の削除マーカーのみが現在のバージョンとして残り、これは期限切れの削除マーカーです。
ExpiredObjectDeleteMarker 子要素は、タグルールと同時に設定することはできません。
Transition
ライフサイクルルールに一致するオブジェクトの現在のバージョンのストレージクラスは、ライフサイクルルールで指定された日付または有効期間に基づいてオブジェクトの有効期限が切れると変換されます。
オブジェクトの以前のバージョンに対する削除またはストレージクラス変換操作
操作
説明
関連する子要素
NoncurrentVersionExpiration
ライフサイクルルールに一致するオブジェクトは、ライフサイクルルールで指定された日付または有効期間に基づいて以前のバージョンが期限切れになると削除されます。
<NoncurrentDays>子要素は、相対的な有効期限を指定します。これは、バージョンが現在のバージョンから以前のバージョンに変更されてから完全に削除されるまでの保持期間を表します。説明たとえば、あるバージョンがもともと現在のバージョンであり、PutObject の上書き操作により 2019 年 5 月 1 日に以前のバージョンになったとします。NoncurrentVersionExpiration 要素で
<NoncurrentDays>の有効期限が 3 日に設定されている場合、このバージョンは 2019 年 5 月 4 日に完全に削除されます。バージョンの継続性のため、アップロード操作が実行されるたびに、現在のバージョンが最初の以前のバージョンになり、新しく追加されたバージョンがその後継バージョンになります。OSS は、後継バージョンの作成時間を確認することで、バージョンがいつ以前のバージョンになったかを判断します。NoncurrentVersionTransition
ライフサイクルルールに一致するオブジェクトのストレージクラスは、ライフサイクルルールで指定された日付または有効期間に基づいてオブジェクトの以前のバージョンが期限切れになると変換されます。
< NoncurrentDays>子要素は、相対的な変換時間を指定します。これは、バージョンが現在のバージョンから以前のバージョンに変更されてからストレージクラスの変換が実行されるまでの期間を表します。<StorageClass>子要素は、オブジェクトが変換されるストレージクラスを指定します。