このトピックでは、オブジェクトのライフサイクルルールの設定ファイルで設定できる要素について説明します。
XML形式の例
<LifecycleConfiguration>
<ルール>
<ID>rule1</ID>
<Prefix>logs/</Prefix>
<Status>Enabled</Status>
<フィルター>
<しない>
<プレフィックス> logs1/</プレフィックス>
<Tag><Key>key1</Key><Value>value1</Value></Tag>
</Not>
</フィルター>
<Expiration>
<Days>10</Days>
</有効期限>
</ルール>
<ルール>
<ID>rule2</ID>
<Prefix>doc/</Prefix>
<Status>Disabled</Status>
<Expiration>
<CreatedBeforeDate>2017-12-31T00:00:00.000Z</CreatedBeforeDate>
</有効期限>
</ルール>
<ルール>
<ID>rule3</ID>
<プレフィックス> logs2/</プレフィックス>
<Tag><Key>xx</Key><Value>1</Value></Tag>
<Status>Enabled</Status>
<Transition>
<Days>60</Days>
<StorageClass> アーカイブ </StorageClass>
</トランジション>
</ルール>
</LifecycleConfiguration>
次の項目では、上記の例の3つのライフサイクルルールについて説明します。
最初のライフサイクルルールは、logs/ prefixを含む名前で、10日前に最後に変更されたオブジェクトを削除するために使用されます。 名前がlogs1 /プレフィックスを含み、タグがkey1:value1であるオブジェクトは削除されません。
2番目のライフサイクルルールは、名前にdoc /プレフィックスが含まれ、2017年12月31日より前に最後に変更されたオブジェクトを削除するために使用されます。 このルールは無効になり、有効になりません。
3番目のライフサイクルルールを使用して、次の条件を満たすオブジェクトのストレージクラスをアーカイブに変換します。オブジェクト名にはlogs2 /プレフィックスが含まれ、オブジェクトのタグはxx:1で、オブジェクトは60日前に最後に変更されました。
次のセクションでは、IDやOperation要素など、オブジェクトのライフサイクルルールの構成ファイルで構成できる要素について説明します。
ID
ID要素は、バケットに設定されたライフサイクルルールのIDを指定します。 ライフサイクルルールのIDの長さは最大255バイトです。 この要素を設定しない場合、またはこの要素を空のままにした場合、Object Storage Service (OSS) はライフサイクルルールの一意のIDを自動的に生成します。
Status
Status要素は、ライフサイクルルールのステータスを指定します。 ステータスを有効または無効に設定できます。 Status要素がEnabledに設定されているライフサイクルルールのみが有効になります。
接頭辞
Prefix要素は、バケット内のすべてのオブジェクトまたは特定のオブジェクトにライフサイクルルールが適用されるオブジェクト名のプレフィックスを指定します。
フィルター
Filter要素は、ライフサイクルルールのフィルタ条件を指定します。 Filter要素で指定されたすべての条件を満たすオブジェクトは、ルールに一致します。
ない
ライフサイクルルールを使用して、名前に特定のプレフィックスが含まれ、特定のタグがあるオブジェクトを処理する場合、特定のオブジェクトをスキップすることができます。 この場合、Not要素でスキップするオブジェクトのプレフィックスとタグを指定できます。
複数のライフサイクルルールが設定されている場合、Not要素は、Not要素が指定されているライフサイクルルールに対してのみ有効になります。
例:
IDがrule1のライフサイクルルールを設定し、プレフィックスが
dir1
であるオブジェクトを最後に変更してから30日後に削除するように指定します。IDがrule2のライフサイクルルールを設定し、オブジェクトが最後に変更されてから20日後に、名前に
dir1
プレフィックスが含まれるオブジェクトのストレージクラスを低頻度アクセス (IA) に変換するように指定し、dir1/dir2 /ディレクトリ内のオブジェクトのストレージクラスをnot要素を指定して変換しないように指定します。
<LifecycleConfiguration>
<Rule>
<ID>rule1</ID>
<プレフィックス> dir1/</プレフィックス>
<Status>Enabled</Status>
<Expiration>
<Days>30</Days>
</Expiration>
</Rule>
<Rule>
<ID>rule2</ID>
<プレフィックス> dir1/</プレフィックス>
<Status>Disabled</Status>
<フィルター>
<しない>
<プレフィックス> dir1/dir2/</プレフィックス>
</Not>
</フィルター>
<Transition>
<日> 20</日>
<StorageClass>IA</StorageClass>
</Transition>
</ルール>
</LifecycleConfiguration>
その結果、Not要素はrule2のみに有効になります。 名前がdir1プレフィックスを含むオブジェクトは、オブジェクトがrule1に基づいて最後に変更されてから30日後に削除されます。
詳細については、「最終変更時刻に基づくライフサイクルルール」をご参照ください。
時間
日付
<CreatedBeforeDate> 子要素は、固定日付を指定します。 日付より前に最後に変更されたすべてのオブジェクトが削除されるか、日付より前に最後に変更されたオブジェクトのストレージクラスが変換されます。
日
<Days> 子要素は、オブジェクトが最後に変更された後のオブジェクトの有効期間を指定します。 有効期間が終了すると、オブジェクトが削除されるか、オブジェクトのストレージクラスが変換されます。
操作
ライフサイクルルールに一致するオブジェクトに対して、ライフサイクルルールに1つ以上のOperation要素を設定できます。 OSSは、オブジェクトの有効期限が切れると、オブジェクトに対して指定された操作を実行します。 操作の効果は、オブジェクトが格納されているバケットのバージョン管理ステータスによって異なります。 次の表は、バケットのバージョン管理ステータスが、オブジェクトのライフサイクルルールで指定されている操作にどのように影響するかを示しています。
バージョン管理が無効になっているバケット
操作
説明
移行
ライフサイクルルールに一致するオブジェクトのストレージクラスは、ライフサイクルルールで指定された日付または有効期間に基づいてオブジェクトが期限切れになると変換されます。 ライフサイクルルールで指定できるストレージクラスの詳細については、「ストレージクラスの変換」をご参照ください。
有効期限
ライフサイクルルールに一致するオブジェクトは、ライフサイクルルールで指定された日付または有効期間に基づいてオブジェクトが期限切れになると削除されます。
バージョン管理が有効になっているバケット
次の表では、バージョン化されたバケット内のオブジェクトのライフサイクルルールで指定できるOperation要素について説明します。 バージョン管理バケットには、バージョン管理が有効になっているバケットと、バージョン管理が中断されているバケットが含まれます。
オブジェクトの現在のバージョンでの削除またはストレージクラス変換操作
操作
説明
有効期限
期限切れのオブジェクトに対して実行される操作は、オブジェクトの現在のバージョンが削除マーカーであるかどうかによって異なります。
オブジェクトの現在のバージョンが削除マーカーでない場合、OSSは次のルールに基づいてバージョンを処理します。
オブジェクトを格納するバケットのバージョン管理が有効になっている場合、一意のバージョンIDを持つ削除マーカーが挿入されます。 次に、オブジェクトの現在のバージョンが、挿入された削除マーカーに置き換えられます。
オブジェクトを格納するバケットのバージョン管理が一時停止されている場合、OSSはバージョンIDがnullの削除マーカーを挿入します。 挿入された削除マーカーは、バージョンIDがnullのオブジェクトの現在のバージョンを上書きして、バージョンIDがnullのオブジェクトのバージョンが1つだけ存在するようにします。
オブジェクトの現在のバージョンが削除マーカーである場合、OSSは次のルールに基づいてバージョンを処理します。
以前のバージョンのオブジェクトが1つ以上存在する場合、ライフサイクルルールで指定された操作はトリガーされません。
オブジェクトのバージョンが1つしか存在しない場合、ライフサイクルルールで指定された日付または有効期間に基づいて削除マーカーの有効期限が切れるか、ライフサイクルルールでExpiredObjectDeleteMarker子要素がtrueに設定されている場合、削除マーカーは削除されます。
重要オブジェクトに設定されたライフサイクルルールのExpiration操作がトリガーされてオブジェクトの現在のバージョンが削除された場合、または指定されたオブジェクトバージョンなしで削除操作が開始された場合、オブジェクトの現在のバージョンはオブジェクトの以前のバージョンになります。 オブジェクトに設定されたライフサイクルルールのExpiration操作がトリガーされてオブジェクトの以前のバージョンが削除された場合、または削除操作が指定された以前のバージョンのオブジェクトで開始された場合、オブジェクトの以前のバージョンは完全に削除され、オブジェクトの期限切れの削除マーカーのみが保持されます。
ExpiredObjectDeleteMarker子要素を設定し、同時にライフサイクルルールでタグを指定することはできません。
移行
ライフサイクルルールに一致するオブジェクトの現在のバージョンのストレージクラスは、ライフサイクルルールで指定された日付または有効期間に基づいてオブジェクトが期限切れになると変換されます。
以前のバージョンのオブジェクトでの削除またはストレージクラス変換操作
操作
説明
関連付けられた子要素
NoncurrentVersionExpiration
ライフサイクルルールに一致するオブジェクトは、ライフサイクルルールで指定された日付または有効期間に基づいて以前のバージョンが期限切れになると削除されます。
<NoncurrentDays> 子要素は、現在のバージョンが以前のバージョンになってから、以前のバージョンが完全に削除されるまでの日数を指定します。
説明たとえば、バージョンは2019年5月1日より前のオブジェクトの現在のバージョンでした。 2019年5月1日、PutObject操作が呼び出され、このバージョンは以前のバージョンになりました。 NoncurrentVersionExpiration要素で、<NoncurrentDays> は3に設定されます。 2019年5月4日、バージョンは完全に削除されました。 PutObject操作がオブジェクトに対して呼び出されるたびに、オブジェクトの現在のバージョンが最新の以前のバージョンになります。 アップロードされたバージョンがオブジェクトの現在のバージョンになります。 OSSは、次のバージョンが作成された時刻に基づいて、バージョンが以前のバージョンになる時期を判断します。
NoncurrentVersionTransition
ライフサイクルルールに一致するオブジェクトのストレージクラスは、ライフサイクルルールで指定された日付または有効期間に基づいて、オブジェクトの以前のバージョンが期限切れになると変換されます。
<NoncurrentDays> 子要素は、現在のバージョンが以前のバージョンになってから、オブジェクトのストレージクラスが変換されるまでの日数を指定します。
<StorageClass> 子要素は、オブジェクトのストレージクラスが変換されるストレージクラスを指定します。