メニュー
Amazon Simple Storage Service
開発者ガイド (API Version 2006-03-01)

ライフサイクル設定の要素

ライフサイクル設定は、1 つ以上のライフサイクルルールで構成される XML として指定します。

Copy
<LifecycleConfiguration> <Rule> ... </Rule> <Rule> ... </Rule> </LifecycleConfiguration>

各ルールには次が含まれます。

  • ルール ID を含むルールメタデータと、ルールが有効か無効かを示すステータス。ルールが無効な場合、Amazon S3 はルールに指定されているアクションを実行しません。

  • ルールが適用されるオブジェクトを特定するフィルター。オブジェクトキープレフィックス、1 つ以上のオブジェクトタグ、またはその両方を使用してフィルターを指定できます。

  • 指定されたアクションを Amazon S3 が実行するようにする場合、オブジェクトの有効期間で日時が指定された 1 つ以上の移行または有効期間アクション。

以下のセクションでは、ライフサイクル設定における XML 要素について説明します。サンプルライフサイクル設定については、「ライフサイクル設定の例」を参照してください。

ID 要素

ライフサイクル設定には最大 1,000 個のルールを記述できます。<ID> 要素は、ルールを一意に識別します。ID の長さは、255 文字に制限されています。

Status 要素

<Status> 要素の値は、Enabled または Disabled です。ルールが無効な場合、Amazon S3 はルールで定義されたアクションを実行しません。

フィルター要素

ライフサイクルルールは、ライフサイクルルールで指定する <Filter> 要素に基づいて、バケット内のすべてのオブジェクトまたはサブセットに適用できます。

オブジェクトは、キープレフィックス、オブジェクトタグ、またはそれらの組み合わせ (この場合、Amazon S3 は論理 AND を使用してフィルターを組み合わせます) によってフィルタリングできます。次の例を考えます。

  • キープレフィックスを使用したフィルターの指定 – この例は、キー名プレフィックス (logs/) に基づいてオブジェクトのサブセットに適用されるライフサイクルルールを示しています。たとえば、ライフサイクルルールはオブジェクト logs/mylog.txtlogs/temp1.txtlogs/test.txt に適用されます。このルールは、オブジェクト example.jpg には適用されません。

    Copy
    <LifecycleConfiguration> <Rule> <Filter> <Prefix>logs/</Prefix> </Filter> transition/expiration actions. ... </Rule> ... </LifecycleConfiguration>

    異なるキー名プレフィックスに基づいてオブジェクトのサブセットにライフサイクルアクションを適用する場合は、別個のルールを指定します。各ルールでは、プレフィックスベースのフィルターを指定します。たとえば、キープレフィックス projectA/ および projectB/ を持つオブジェクトのライフサイクルアクションを記述するには、次に示すように 2 つのルールを指定します。

    Copy
    <LifecycleConfiguration> <Rule> <Filter> <Prefix>projectA/</Prefix> </Filter> transition/expiration actions. ... </Rule> <Rule> <Filter> <Prefix>projectB/</Prefix> </Filter> transition/expiration actions. ... </Rule> </LifecycleConfiguration>

    オブジェクトキーの詳細については、「オブジェクトキー」を参照してください。

  • オブジェクトタグに基づくフィルターの指定 – 次の例では、ライフサイクルルールはタグ (key) および値 (value) に基づいてフィルターを指定します。この場合、ルールは特定のタグを持つオブジェクトのサブセットにのみ適用されます。

    Copy
    <LifecycleConfiguration> <Rule> <Filter> <Tag> <Key>key</Key> <Value>value</Value> </Tag> </Filter> transition/expiration actions. ... </Rule> </LifecycleConfiguration>

    複数のタグに基づいてフィルターを指定できます。次の例に示すように、<AND> 要素でタグをラップする必要があります。ルールは、2 つのタグ (特定のタグキーと値を持つ) が付与されたオブジェクトでライフサイクルアクションを実行するように Amazon S3 に指示します。

    Copy
    <LifecycleConfiguration> <Rule> <Filter> <And> <Tag> <Key>key1</Key> <Value>value1</Value> </Tag> <Tag> <Key>key2</Key> <Value>value2</Value> </Tag> ... </And> </Filter> transition/expiration actions. </Rule> </Lifecycle>

    ライフサイクルルールは、指定された両方のタグが付与されたオブジェクトに適用されます。Amazon S3 は論理 AND を実行します。次の点に注意してください。

    • タグは、キーと値の両方に正確に一致する必要があります。

    • ルールは、ルールで指定された 1 つ以上のタグが付与されたオブジェクトのサブセットに適用されます。オブジェクトには追加のタグが付与されている可能性がありますが、問題ありません。

    注記

    フィルターで複数のタグを指定する場合、各タグキーは一意である必要があります。

  • プレフィックスと 1 つ以上のタグの両方おに基づくフィルターの指定 – ライフサイクルルールでは、キープレフィックスと 1 つ以上のタグの両方に基づいてフィルターを指定できます。繰り返しになりますが、次に示すようにこれらを <And> 要素でラップする必要があります。

    Copy
    <LifecycleConfiguration> <Rule> <Filter> <And> <Prefix>key-prefix</Prefix> <Tag> <Key>key1</Key> <Value>value1</Value> </Tag> <Tag> <Key>key2</Key> <Value>value2</Value> </Tag> ... </And> </Filter> <Status>Enabled</Status> transition/expiration actions. </Rule> </LifecycleConfiguration>

    Amazon S3 は、論理 AND を使用してこれらのフィルターを組み合わせます。つまり、ルールは特定のキープレフィックスと特定のタグを持つオブジェクトのサブセットに適用されます。フィルターのプレフィックスは最大 1 個、タグは 0 個以上である点に注意してください。

  • 空のフィルターを指定できます。その場合、ルールはオブジェクト内のすべてのバケットに適用されます。

    Copy
    <LifecycleConfiguration> <Rule> <Filter> </Filter> <Status>Enabled</Status> transition/expiration actions. </Rule> </LifecycleConfiguration>

ライフサイクルアクションを記述する要素

次の定義済みのアクションのうち 1 つ以上をライフサイクルルールに指定することで、オブジェクトの有効期間中に特定のアクションを実行するように Amazon S3 に指示することができます。これらのアクションの効果は、バケットのバージョニング状態によって異なります。

  • Transition アクションの要素 – オブジェクトを別のストレージクラスに移行するには、Transition アクションを指定します。オブジェクトの移行の詳細については、「サポートされている移行と関連する制約」を参照してください。オブジェクトの有効期間の指定された日時に到達すると、Amazon S3 は移行を実行します。

    バージョニング対応のバケット(バージョニングが有効なバゲットまたはバージョニングが停止されたバケット)の場合、Transition アクションは最新のオブジェクトバージョンに適用されます。以前のバージョンを管理する場合、Amazon S3 は NoncurrentVersionTransition アクションを定義します(以下で説明)。

  • Expiration アクション要素 - Expiration アクションは、ルールで特定されたオブジェクトを有効期限切れにします。Amazon S3 により有効期限切れのオブジェクトはすべて使用できなくなります。オブジェクトが完全に削除されるかどうかは、バケットのバージョニング状態によって異なります。

    重要

    オブジェクトの有効期限を決定するライフサイクルポリシーでは、不完全なマルチパートアップロードは削除されません。不完全なマルチパートアップロードを削除するには、AbortIncompleteMultipartUpload というライフサイクル設定アクションを使用する必要があります。これについては、このセクションで説明します。

    • バージョニング非対応のバケットExpiration アクションを実行すると、オブジェクトが Amazon S3 によって完全に削除されます。

    • バージョニング対応バケット – バージョニング対応バケット (つまり、バージョニングが有効であるかバージョニングが停止されている) の場合、Amazon S3 による expiration アクションの処理方法を決める考慮事項がいくつかあります。詳細については、「バージョニングの使用」を参照してください。バージョニングの状態に関係なく、次のようになります。

      • Expiration アクションは、現在のバージョンにのみ適用されます (最新でないオブジェクトバージョンには影響を与えません)。

      • 1 つ以上のオブジェクトバージョンがあり、削除マーカーが最新バージョンである場合、Amazon S3 はアクションを何も実行しません。

      • 現在のオブジェクトバージョンが唯一のオブジェクトバージョンであり、削除マーカーでもある場合 (「期限切れオブジェクト削除マーカー」とも呼ばれます。すべてのオブジェクトバージョンが削除され、削除マーカーのみ残ります)、Amazon S3 は期限切れのオブジェクト削除マーカーを削除します。また、expiration アクションを使用して、期限切れオブジェクト削除マーカーをすべて削除するよう Amazon S3 に指示することもできます。例については、「例 7: 期限切れオブジェクト削除マーカーの削除」を参照してください。

        重要

        Amazon S3 は、オブジェクトの失効後 48 時間経過するとすぐに、失効したオブジェクト削除マーカーを削除します。

      expiration を管理する Amazon S3 の他の考慮事項は次のとおりです。

      • バージョニングが有効なバケット

        現在のオブジェクトバージョンが削除マーカーでない場合、Amazon S3 は一意のバージョン ID を持つ削除マーカーを追加し、現在のバージョンを最新でないとマークし、削除マーカーを現在のバージョンとマークします。

      • バージョニングが停止されたバケット

        バージョニングが停止されたバケットでは、expiration アクションを実行すると、Amazon S3 によりバージョン ID が null の削除マーカーが作成されます。この削除マーカーは、バージョン階層においてあらゆるオブジェクトバージョンをバージョン ID null に置き換えるため、オブジェクトが効率的に削除されます。

さらに、Amazon S3 はバージョン対応のバケット (つまり、バージョニングが有効なバケットとバージョニングが停止されているバケット) で以前のオブジェクトバージョンを管理するために使用できる次のアクションを提供します。

  • NoncurrentVersionTransition アクション要素 – Amazon S3 がオブジェクトを指定されたストレージクラスに移行する前、オブジェクトを現在のストレージクラスに残す時間(オブジェクトが以前のオブジェクトになったときからの時間)を指定するには、このアクションを使用します。オブジェクトの移行の詳細については、「サポートされている移行と関連する制約」を参照してください。

  • NoncurrentVersionExpiration アクション要素 – Amazon S3 が以前のオブジェクトバージョンを完全に削除する前、それらのバージョンを保持する時間(オブジェクトが以前のオブジェクトになったときからの時間)を指定するには、このアクションを使用します。削除されたオブジェクトは復元できません。

    以前のオブジェクトをこのように遅れて削除すると、誤って削除または上書きしたため修正する必要がある場合に役立ちます。たとえば、以前のバージョンになってから 5 日後に削除する有効期間ルールを設定できます。例として、2014 年 1 月 1 日午前 10 時 30 分(UTC)に、photo.gif(バージョン ID 111111)というオブジェクトを作成したとします。そして、2014 年 1 月 2 日午前 11 時 30 分(UTC)に、photo.gif(バージョン ID 111111)を誤って削除したとします。これにより、新しいバージョン ID(たとえばバージョン ID 4857693)の削除マーカーが作成されます。この場合、完全な削除が行われるまでの 5 日間は、元のバージョンの photo.gif(バージョン 111111)を復元することができます。2014 年 1 月 8 日 0 時 0 分(UTC)に、有効期限切れのライフサイクルルールが実行され、photo.gif(バージョン ID 111111)が完全に削除されます。これは、このバージョンが最新バージョンでなくなってから 5 日後です。

    重要

    オブジェクトの有効期限を決定するライフサイクルポリシーでは、不完全なマルチパートアップロードは削除されません。不完全なマルチパートアップロードを削除するには、AbortIncompleteMultipartUpload というライフサイクル設定アクションを使用する必要があります。これについては、このセクションで説明します。

transition アクションと expiration アクションに加えて、次のライフサイクル設定アクションを使用して、完了しないマルチパートアップロードを中止するよう Amazon S3 に指示できます。

  • AbortIncompleteMultipartUpload アクション要素 – この要素は、マルチパートアップロードの進行を許可する最大時間 (日数) を指定する場合に使用します。該当するマルチパートアップロード (ライフサイクルルールで指定されたキー名 prefix により決定されます) が事前定義された期間内に正常に完了しない場合、Amazon S3 は完了しないマルチパートアップロードを中止します。詳細については、「バケットライフサイクルポリシーを使用した完了しないマルチパートアップロードの中止」を参照してください。

    注記

    オブジェクトタグに基づいてフィルターを指定するルールでは、このライフサイクルアクションを指定できません。

  • ExpiredObjectDeleteMarker アクション要素 – バージョニングが有効なバケットでは、最新でないバージョンが 0 の削除マーカーは、期限切れオブジェクト削除マーカーと呼ばれます。このライフサイクルアクションを使用して、期限切れオブジェクト削除マーカーを削除するよう S3 に指示することもできます。例については、「例 7: 期限切れオブジェクト削除マーカーの削除」を参照してください。

    注記

    オブジェクトタグに基づいてフィルターを指定するルールでは、このライフサイクルアクションを指定できません。

オブジェクトが最新でなくなってからの期間を Amazon S3 が計算する方法

バージョニングが有効なバケットには、オブジェクトの複数のバージョンが存在することができます。最新バージョンが常に 1 個存在し、他に 0 個以上の以前のバージョンがあります。オブジェクトをアップロードするたびに、最新バージョンは以前のバージョンとして保持され、新しく追加されたバージョンがその代わりに最新バージョンになります。オブジェクトが最新でなくなってからの日数を知るために、Amazon S3 はその次の最新バージョンがいつ作成されたかを調べます。Amazon S3 は、オブジェクトの次の最新バージョンが作成されてからの日数を、オブジェクトが最新でなくなってからの日数として使用します。

ライフサイクル設定を使用する場合のオブジェクトの以前のバージョンの復元

トピック「以前のバージョンの復元」で詳しく説明しているように、オブジェクトの以前のバージョンを取得するには次のいずれかの方法を使用できます。

  1. オブジェクトの以前のバージョンを同じバケットにコピーする方法。コピーされたオブジェクトはそのオブジェクトの最新バージョンになり、すべてのオブジェクトバージョンが維持されます。

  2. オブジェクトの最新バージョンを完全に削除する方法。最新のオブジェクトバージョンを削除すると、結果として、以前のバージョンがそのオブジェクトの最新バージョンになります。

バージョニングが有効なバケットを含むライフサイクル設定ルールを使用するときは、最初の方法を使用することをベストプラクティスとしてお勧めします。

Amazon S3 の結果整合性セマンティクスのために、最新バージョンを完全に削除しても、変更がプロパゲートされるまで最新バージョンは消去されない(Amazon S3 が削除に気づかない)可能性があります。その間に、以前のオブジェクトを有効期限切れにするように設定したライフサイクルルールによって、復元したいオブジェクトを含む以前のオブジェクトが完全に削除される可能性があります。したがって、最初の方法で推奨したとおり、代替方法として古いバージョンをコピーした方が安全です。

次の表は、ライフサイクル設定ルールのアクションのオブジェクトに対する動作を、オブジェクトを含むバケットのバージョニング状態との関連でまとめたものです。

ライフサイクルアクションとバケットのバージョニング状態

アクション バージョニング非対応のバケット(バージョニングが有効でない) バージョニングが有効なバケット バージョニングが停止されたバケット

Transition

指定した日付またはオブジェクトの有効期間内の期間に達した場合.

Amazon S3 は、オブジェクトを指定されたストレージクラスに移行します。 Amazon S3 は、オブジェクトの最新バージョンを指定されたストレージクラスに移行します。 バージョニングが有効なバケットと同じ動作。

Expiration

指定した日付またはオブジェクトの有効期間内の期間に達した場合.

Expiration はオブジェクトを削除し、削除されたオブジェクトは復元できません。 最新バージョンが削除マーカーでない場合、Amazon S3 は削除マーカーを作成し、それが最新バージョンになります。既存の最新バージョンは以前のバージョンとして保持されます。 ライフサイクルはバージョン ID が null の削除マーカーを作成し、それが最新バージョンになります。オブジェクトの最新バージョンのバージョン ID が nullの場合、Expiration アクションはこのバージョンを完全に削除します。それ以外の場合、最新バージョンは以前のバージョンとして保持されます。

NoncurrentVersionTransition

オブジェクトが最新でなくなったときから指定した日数が経過したとき.

NoncurrentVersionTransition は何も実行しません。

Amazon S3 は、オブジェクトの以前のバージョンを指定されたストレージクラスに移行します。

バージョニングが有効なバケットと同じ動作。

NoncurrentVersionExpiration

オブジェクトが最新でなくなったときから指定した日数が経過したとき.

NoncurrentVersionExpiration は何も実行しません。 NoncurrentVersionExpiration アクションは、オブジェクトの以前のバージョンを削除し、削除されたオブジェクトは復元できません。 バージョニングが有効なバケットと同じ動作。

ライフサイクルルール: オブジェクトの存在時間に基づく

Amazon S3 がアクションを実行できる期間を、そのオブジェクトの作成(または変更)からの日数で指定できます。

日数をライフサイクル設定の Transition アクションおよび Expiration アクションで指定する場合は、以下の点に注意してください。

  • アクションが実行される、オブジェクト作成からの日数です。

  • Amazon S3 は、ルールに指定された日数をオブジェクトの作成時間に加算し、得られた日時を翌日の午前 00:00 UTC(協定世界時)に丸めることで、時間を算出します。たとえば、あるオブジェクトが 2014 年 1 月 15 日午前 10 時 30 分(UTC)に作成され、移行ルールに 3 日と指定した場合、オブジェクトの移行日は 2014 年 1 月 19 日 0 時 0 分(UTC)となります。

注記

Amazon S3 は、各オブジェクトの最終更新日のみを維持します。たとえば、Amazon S3 コンソールでは、オブジェクトの最終更新日が [Properties] ペインの [Last Modified] に表示されます。新しいオブジェクトを最初に作成したときには、この日付はオブジェクトが作成された日を表します。オブジェクトを置き換えた場合、日付はそれに応じて変わります。したがって、ここで作成日とは、最終更新日と同じ意味です。

日数をライフサイクル設定の NoncurrentVersionTransition アクションおよび NoncurrentVersionExpiration アクションで指定する場合は、以下の点に注意してください。

  • オブジェクトのバージョンが最新でなくなった (すなわちオブジェクトが上書きされるか削除された) ときからの日数を、Amazon S3 がアクションを指定したオブジェクトに対して実行する時間として指定します。

  • Amazon S3 は、ルールに指定された日数をオブジェクトの次の新しいバージョンが作成された時間に加算し、得られた日時を翌日の午前 00:00(UTC)に丸めることで、時間を算出します。たとえば、バケット内のオブジェクトの最新バージョンが 2014 年 1 月 1 日午前 10 時 30 分(UTC)に作成されており、2014 年 1 月 15 日午前 10 時 30 分(UTC)にそのバージョンに代わる次の新しいバージョンが作成された場合、移行ルールに 3 日を指定していると、オブジェクトの移行日は 2014 年 1 月 19 日 0 時 0 分(UTC)になります。

ライフサイクルルール: 特定の日付に基づく

ライフサイクルルールでアクションを指定するときは、S3 がアクションを実行する日付を指定できます。特定の日付になると、S3 は (フィルタ条件に基づいて) すべての対象オブジェクトにアクションに適用します。

過去の日付でライフサイクルアクションを指定すると、すべての対象オブジェクトは、直ちにそのライフサイクルアクションの適用対象になります。

重要

日付ベースのアクションは、1 回限りのアクションではありません。S3 は、日付が過ぎた後も、ルールのステータスが Enabled である限り継続して日付ベースのアクションを適用します。

たとえば、すべてのオブジェクトを削除する日付ベースの Expiration アクションを指定してすべてのオブジェクトを削除するとします (ルールでフィルタは指定されないとします)。S3 は特定の日付に、バケットのすべてのオブジェクトを期限切れにします。また、バケットで作成される新しいオブジェクトも継続して期限切れにします。ライフサイクルアクションを停止するには、ライフサイクル設定からアクションを削除する、ルールを無効にする、またはライフサイクル設定からルールを削除する必要があります。

日付の値は、ISO 8601 形式に従う必要があります。この時刻は常に午前 0 時 (UTC) となります。

注記

Amazon S3 コンソールでは日付ベースのライフサイクルルールを作成することはできませんが、そのようなルールの表示、無効化、削除は可能です。