ライフサイクル設定の要素
Amazon S3 ライフサイクル設定は、単一または複数のライフサイクルルールで構成される XML として指定します。
<LifecycleConfiguration> <Rule> ... </Rule> <Rule> ... </Rule> </LifecycleConfiguration>
各ルールには次が含まれます。
-
ルール ID とルールが有効か無効かを示すステータスを含むルールメタデータ。ルールが無効な場合、Amazon S3 はルールで指定されているアクションを実行しません。
-
ルールが適用されるオブジェクトを特定するフィルター。フィルターを指定するには、オブジェクトサイズ、オブジェクトキープレフィックス、単一または複数のオブジェクトタグ、またはフィルターの組み合わせを使用できます。
-
指定されたアクションを Amazon S3 に実行させる場合、オブジェクトの有効期間内の日付または期間が指定された 1 つ以上の移行または失効アクション。
以下のセクションでは、S3 ライフサイクル設定における XML 要素について説明します。設定例については、「S3 ライフサイクル設定の例」を参照してください。
ID 要素
S3 ライフサイクル設定には最大 1,000 個のルールを記述できます。この制限は調整できません。<ID>
要素は、ルールを一意に識別します。ID の長さは、255 文字に制限されています。
Status 要素
<Status>
要素の値は、Enabled
または Disabled
のいずれかです。ルールが無効な場合、Amazon S3 はルールで定義されたアクションを実行しません。
Filter 要素
ライフサイクルルールは、ライフサイクルルールで指定した <Filter>
要素に基づいて、バケット内のすべてのオブジェクトまたはサブセットに適用できます。
オブジェクトは、キープレフィックス、オブジェクトタグ、またはそれらの組み合わせ (この場合、Amazon S3 は論理 AND
を使用してフィルタを組み合わせます)により、オブジェクトをフィルタできます。次の例を考えます。
-
キープレフィックスを使用したフィルターの指定 – この例は、キー名のプレフィックス (
logs/
) に基づいてオブジェクトのサブセットに適用される S3 ライフサイクルルールを示しています。例えば、ライフサイクルルールはオブジェクトlogs/mylog.txt
、logs/temp1.txt
、logs/test.txt
に適用されます。このルールは、オブジェクトexample.jpg
には適用されません。<LifecycleConfiguration> <Rule> <Filter> <Prefix>logs/</Prefix> </Filter>
transition/expiration actions
... </Rule> ... </LifecycleConfiguration>異なるキー名のプレフィックスに基づいてオブジェクトのサブセットにライフサイクルアクションを適用する場合は、別のルールを指定します。各ルールでは、プレフィックスベースのフィルタを指定します。例えば、キープレフィックスが
projectA/
とprojectB/
のオブジェクトのライフサイクルアクションを作成するには、次のとおり 2 つのルールを指定します。<LifecycleConfiguration> <Rule> <Filter> <Prefix>projectA/</Prefix> </Filter>
transition/expiration actions
... </Rule> <Rule> <Filter> <Prefix>projectB/</Prefix> </Filter>transition/expiration actions
... </Rule> </LifecycleConfiguration>オブジェクトキーの詳細については、「オブジェクトキー名の作成」を参照してください。
-
オブジェクトタグに基づくフィルターの指定 – 次の例では、ライフサイクルルールはタグ (
) と値 (key
) に基づいてフィルターを指定します。この場合、ルールは特定のタグを持つオブジェクトのサブセットにのみ適用されます。value
<LifecycleConfiguration> <Rule> <Filter> <Tag> <Key>
key
</Key> <Value>value
</Value> </Tag> </Filter>transition/expiration actions
... </Rule> </LifecycleConfiguration>複数のタグに基づいてフィルタを指定できます。次の例で示されるとおり、
<And>
要素でタグを囲む必要があります。ルールは、2 つのタグ (特定のタグキーと値を持つ) が付与されたオブジェクトでライフサイクルアクションを実行するように Amazon S3 に指示します。<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
を実行します。次の点に注意してください。-
各タグは、キーと値の両方で正確に一致する必要があります。
<Key>
要素のみを指定し、<Value>
要素を指定しない場合、ルールはタグキーと一致し、値が指定されていないオブジェクトにのみ適用されます。 -
ルールは、ルールで指定されたすべてのタグが付与されたオブジェクトのサブセットに適用されます。オブジェクトに追加のタグが指定されていても、ルールは引き続き適用されます。
注記
フィルタで複数のタグを指定する場合、各タグキーは一意である必要があります。
-
-
プレフィックスと単一または複数のタグの両方に基づくフィルターの指定 – ライフサイクルルールでは、キープレフィックスと単一または複数のタグの両方に基づいてフィルターを指定できます。繰り返しになりますが、次に示すとおり、これらすべてを
<And>
要素で囲む必要があります。<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 個以上にします。 -
空のフィルタ を指定できます。その場合、ルールはオブジェクト内のすべてのバケットに適用されます。
<LifecycleConfiguration> <Rule> <Filter> </Filter> <Status>Enabled</Status>
transition/expiration actions
</Rule> </LifecycleConfiguration> -
[object size] によりルールをフィルタリングするには、最小サイズ、(
ObjectSizeGreaterThan
) または最大サイズ (ObjectSizeLessThan
) を指定するか、またはオブジェクトのサイズの範囲を指定できます。オブジェクトサイズの値はバイト単位です。デフォルトでは、128 KB 未満のオブジェクトは、最小サイズ (
ObjectSizeGreaterThan
) または最大サイズ (ObjectSizeLessThan
) を指定しない限り、どのストレージクラスにも移行されません。詳細については、「例: 128 KB 未満のオブジェクトの移行を許可する」を参照してください。<LifecycleConfiguration> <Rule> <Filter> <ObjectSizeGreaterThan>500</ObjectSizeGreaterThan> </Filter> <Status>Enabled</Status>
transition/expiration actions
</Rule> </LifecycleConfiguration>注記
ObjectSizeGreaterThan
フィルターおよびObjectSizeLessThan
フィルターは、指定された値を除外します。例えば、S3 Standard ストレージクラスから S3 Standard-IA ストレージクラスに移動するためにオブジェクトのサイズを 128 KB から 1024 KB に設定した場合、1024 KB ちょうどのオブジェクトと 128 KB ちょうどのオブジェクトは S3 Standard-IA に移動されません。代わりに、このルールは 128 KB より大きく 1024 KB よりも小さいサイズのオブジェクトにのみ適用されます。オブジェクトサイズの範囲を指定する場合は、
ObjectSizeGreaterThan
整数はObjectSizeLessThan
値未満にする必要があります。複数のフィルタを使用する場合は、<And>
エレメントのフィルタを包む必要があります。次の例は、500 バイトから 64,000 バイトの範囲でオブジェクトを指定する方法を示しています。<LifecycleConfiguration> <Rule> <Filter> <And> <Prefix>
key-prefix
</Prefix> <ObjectSizeGreaterThan>500</ObjectSizeGreaterThan> <ObjectSizeLessThan>64000</ObjectSizeLessThan> </And> </Filter> <Status>Enabled</Status>transition/expiration actions
</Rule> </LifecycleConfiguration>
ライフサイクルアクションを記述する要素
次の定義済みのアクションのうち 1 つ以上を S3 ライフサイクルルールに指定することで、オブジェクトの有効期間中に特定のアクションを実行するように Amazon S3 に指示することができます。これらのアクションの効果は、バケットのバージョニング状態によって異なります。
-
Transition
アクション要素 – オブジェクトを別のストレージクラスに移行するには、Transition
アクションを指定します。オブジェクトの移行の詳細については、「サポートされている移行」を参照してください。オブジェクトの有効期間内の指定の日付または期間に到達すると、Amazon S3 は移行を実行します。バージョニング対応のバケット (バージョニングが有効なバゲットまたはバージョニングが停止されたバケット) の場合、
Transition
アクションは最新のオブジェクトバージョンに適用されます。以前のバージョンを管理する場合、Amazon S3 はNoncurrentVersionTransition
アクション (以下で説明されます) を定義します。
-
Expiration
アクション要素 –Expiration
アクションは、ルールで特定されたオブジェクトを期限切れにします。これは、Amazon S3 のいずれかのストレージクラスの該当するオブジェクトに適用されます。ストレージクラスの詳細については、「Amazon S3 ストレージクラスを使用する」を参照してください。Amazon S3 により有効期限切れになったオブジェクトはいずれも使用できなくなります。オブジェクトが完全に削除されるかどうかは、バケットのバージョニング状態によって異なります。-
バージョニング非対応のバケット –
Expiration
アクションを実行すると、Amazon S3 はオブジェクトを完全に削除します。 -
バージョニング対応バケット – バージョニング対応バケット (つまり、バージョニングが有効であるかバージョニングが停止されている) の場合、Amazon S3 による
Expiration
アクションの処理方法を決める考慮事項がいくつかあります。バージョニングが有効なバケットまたはバージョニングが停止されたバケットには、以下が適用されます。-
Expiration
アクションは、最新のバージョンにのみ適用されます (最新以外のバージョンには影響しません)。 -
1 つ以上のオブジェクトバージョンがあり、削除マーカーが最新バージョンである場合、Amazon S3 はアクションを実行しません。
-
現在のオブジェクトバージョンが唯一のオブジェクトバージョンであり、削除マーカーでもある場合 (「期限切れオブジェクト削除マーカー」とも呼ばれます。すべてのオブジェクトバージョンが削除され、削除マーカーのみ残ります)、Amazon S3 は期限切れのオブジェクト削除マーカーを削除します。また、expiration アクションを使用して、期限切れオブジェクト削除マーカーをすべて削除するよう Amazon S3 に指示することもできます。例については、「例 7: 期限切れオブジェクト削除マーカーを削除する」を参照してください。
詳細については、「S3 バケットでのバージョニングの使用」を参照してください。
有効期限を管理するために Amazon S3 をセットアップする場合は、次の点も考慮します。
-
バージョニングが有効なバケット
現在のオブジェクトバージョンが削除マーカーではない場合、Amazon S3 は固有のバージョン ID を持つ削除マーカーを追加します。これにより、最新のバージョンが最新以外のバージョンとなり、削除マーカーが最新バージョンになります。
-
バージョニングが停止されたバケット
バージョニングを停止したバケットでは、有効期限切れアクションにより Amazon S3 がバージョン ID として
null
を使用する削除マーカーを作成します。この削除マーカーは、バージョン階層においてあらゆるオブジェクトバージョンをバージョン ID null に置き換えるため、オブジェクトが効率的に削除されます。
-
-
さらに、Amazon S3 はバージョン対応のバケット (つまり、バージョニングが有効なバケットとバージョニングが停止されているバケット) で以前のオブジェクトバージョンを管理するために使用できる次のアクションを提供します。
-
NoncurrentVersionTransition
アクション要素 – このアクションを使用して、Amazon S3 がオブジェクトを指定したストレージクラスに移行するタイミングを指定します。この有効期限切れは、オブジェクトが最新でなくなった以降の特定の日数に基づいて設定できます。日数以外にも、保持する最新以外のバージョンの最大数 (1~100 の間) を指定することもできます。この値は、Amazon S3 で関連付けられたアクションが実行できるまでに、最新でないバージョンがいくつ必要かを決定します。Amazon S3 は、保存すると指定された数を超える最新でないバージョンをすべて移行します。最新以外のバージョンの最大数を指定するには、
Filter
要素も指定する必要があります。Filter
要素を指定しないで最新以外のバージョンの最大数を指定すると、Amazon S3 でInvalidRequest
エラーが発生します。オブジェクトの移行の詳細については、「サポートされている移行」を参照してください。
NoncurrentVersionTransition
アクション中の日数を指定した日付を Amazon S3 が計算する方法の詳細については、ライフサイクルルール: オブジェクトの存在時間に基づく を参照してください。 -
NoncurrentVersionExpiration
アクション要素 – Amazon S3 に最新以外のオブジェクトのバージョンを完全に削除することを指示するには、このアクションを使用します。このように削除されたオブジェクトは復元することはできません。この有効期限切れは、オブジェクトが最新でなくなった以降の特定の日数に基づいて設定できます。日数以外にも、保持する最新以外のバージョンの最大数 (1~100 の間) を指定することもできます。この値は、Amazon S3 で関連付けられたアクションが実行できるまでに、最新でないバージョンがいくつ必要かを指定します。Amazon S3 は、保存すると指定された数を超える最新でないバージョンをすべて完全に削除します。最新以外のバージョンの最大数を指定するには、
Filter
要素も指定する必要があります。Filter
要素を指定しないで最新以外のバージョンの最大数を指定すると、Amazon S3 でInvalidRequest
エラーが発生します。以前のオブジェクトをこのように遅れて削除すると、誤って削除または上書きを修正する必要がある場合に役立ちます。たとえば、最新以外のバージョンになってから 5 日後に削除する有効期間ルールを設定できます。例えば、2014 年 1 月 1 日 10:30 AM (UTC) に、
photo.gif
(バージョン ID 111111) というオブジェクトを作成したとします。2014 年 1 月 2 日 11:30 AM (UTC) に、photo.gif
(バージョン ID 111111) を誤って削除したとします。これにより、新しいバージョン ID (バージョン ID 4857693 など) の削除マーカーが作成されます。この場合、完全な削除が行われるまでの 5 日間は、元のバージョンのphoto.gif
(バージョン ID 111111) を復元することができます。2014 年 1 月 8 日 00:00 (UTC) に、有効期限切れのライフサイクルルールが実行され、photo.gif
(バージョン ID 111111) は完全に削除されます。これは、このバージョンが最新バージョンでなくなってから 5 日後です。NoncurrentVersionExpiration
アクションの日数を指定した日付を Amazon S3 が計算する方法の詳細については、ライフサイクルルール: オブジェクトの存在時間に基づく を参照してください。注記
オブジェクトの有効期限切れを決定するライフサイクル設定では、不完全なマルチパートアップロードは削除されません。不完全なマルチパートアップロードを削除するには、
AbortIncompleteMultipartUpload
というライフサイクル設定アクションを使用する必要があります。このアクションについては、このセクションの後半で説明します。
この移行アクションと有効期限切れアクション以外にも、次のライフサイクル設定アクションを使用して、不完全なマルチパートアップロードを停止するか、有効期限切れのオブジェクト削除マーカーを削除するように Amazon S3 に指示できます。
-
AbortIncompleteMultipartUpload
アクション要素 – この要素を使用すると、マルチパートアップロードの進行を許可する最大時間 (日数) を指定できます。対象となるマルチパートアップロード (ライフサイクルルールで指定されているキー名のprefix
で特定) が所定の期間内に正常に完了していない場合、Amazon S3 は不完全なマルチパートアップロードを中止します。詳細については、「マルチパートアップロードの中止」を参照してください。注記
このライフサイクルアクションは、オブジェクトタグを使用するフィルターが含まれるルールでは指定できません。
-
ExpiredObjectDeleteMarker
アクション要素 – バージョニングが有効になっているバケットでは、最新以外のバージョンが 0 の削除マーカーは、期限切れオブジェクト削除マーカーと呼ばれます。このライフサイクルアクションを使用して、期限切れオブジェクト削除マーカーを削除するように S3 に指示できます。例については、「例 7: 期限切れオブジェクト削除マーカーを削除する」を参照してください。注記
このライフサイクルアクションは、オブジェクトタグを使用するフィルターが含まれるルールでは指定できません。
オブジェクトが最新でなくなってからの期間を Amazon S3 が計算する方法
バージョニングが有効なバケットで、オブジェクトの複数のバージョンを所持することができます。最新バージョンが常に 1 個、最新以外のバージョンが 0 個以上存在します。オブジェクトをアップロードするたびに、最新バージョンは以前のバージョンとして保持され、新しく追加されたバージョンがその代わりに最新バージョンになります。オブジェクトが最新でなくなってからの日数を知るために、Amazon S3 はその次の最新バージョンがいつ作成されたかを調べます。Amazon S3 は、オブジェクトの次の最新バージョンが作成されてからの日数を、オブジェクトが最新でなくなってからの日数として使用します。
S3 ライフサイクル設定を使用する場合のオブジェクトの以前のバージョンの復元
「以前のバージョンの復元」で説明したとおり、次の 3 つの方法のいずれかを使用して、オブジェクトの以前のバージョンを取得できます。
-
方法 1 – オブジェクトの最新以外のバージョンを同じバケットにコピーします。コピーされたオブジェクトはそのオブジェクトの最新バージョンになり、すべてのオブジェクトバージョンが維持されます。
-
方法 2 – オブジェクトの現在のバージョンを完全に削除します。最新のオブジェクトバージョンを削除すると、結果として、以前のバージョンがそのオブジェクトの最新バージョンになります。
バージョニングが有効になっているバケットで S3 ライフサイクル設定ルールを使用している場合は、ベストプラクティスとして、方法 1 を使用することをお勧めします。
S3 ライフサイクルは、結果整合性モデル下で動作します。最新バージョンが完全に削除されても、変更がすべての Amazon S3 システムに反映されるまで消えない場合があります。(このため、Amazon S3 はこのような削除を一時的に認識しない場合があります)。一方で、以前のオブジェクトを有効期限切れにするように設定したライフサイクルルールは、復元したいオブジェクトを含む以前のオブジェクトを完全に削除する可能性があります。つまり、方法 1 でお勧めしたとおり、代替方法として古いバージョンをコピーする方が安全です。
ライフサイクルのアクションとバケットのバージョニング状態
次の表では、オブジェクトを含むバケットのバージョニングの状態に関連した、オブジェクトに対する S3 ライフサイクル設定ルールアクションの動作をまとめています。
アクション | バージョニング非対応の (バージョニングが有効でない) バケット | バージョニングが有効なバケット | バージョニングが停止されたバケット |
---|---|---|---|
指定した日付またはオブジェクトの有効期間内の期間に達した場合。 |
Amazon S3 は、オブジェクトを指定されたストレージクラスに移行します。 | Amazon S3 は、オブジェクトの最新バージョンを、指定されたストレージクラスに移行します。 | バージョニングが有効なバケットと同じ動作。 |
指定した日付またはオブジェクトの有効期間内の期間に達した場合。 |
Expiration アクションは、オブジェクトを削除します。削除されたオブジェクトは復元できません。 |
S3 は削除マーカーを作成します。これが最新バージョンとなり、既存の最新バージョンは最新以外のバージョンとして保持されます。 | このライフサイクルアクションは、バージョン ID null を持つ削除マーカーを作成し、これが最新バージョンになります。オブジェクトの最新バージョンのバージョン ID が null の場合、Expiration アクションはこのバージョンを完全に削除します。それ以外の場合、最新バージョンは以前のバージョンとして保持されます。 |
指定した日数の間、オブジェクトが最新ではないとして分類された場合、または保持する最新以外のバージョンの指定した最大数を超えた場合。 |
NoncurrentVersionTransition は何も実行しません。 |
Amazon S3 は、オブジェクトの以前のバージョンを、指定されたストレージクラスに移行します。 |
バージョニングが有効なバケットと同じ動作。 |
指定した日数の間、オブジェクトが最新ではないとして分類された場合、または保持する最新でないバージョンの指定した最大数を超えた場合。 |
NoncurrentVersionExpiration は何も実行しません。 |
NoncurrentVersionExpiration アクションは、オブジェクトの最新でないバージョンを完全に削除します。削除されたオブジェクトは復元できません。 |
バージョニングが有効なバケットと同じ動作。 |
ライフサイクルルール: オブジェクトの存在時間に基づく
Amazon S3 が指定したアクションを実行できる期間は、オブジェクトの作成 (または変更) からの日数で指定できます。
日数を S3 ライフサイクル設定の Transition
アクションおよび Expiration
アクションで指定する場合は、以下の点に注意してください。
-
指定する値は、オブジェクトの作成からアクションが発生するまでの日数です。
-
Amazon S3 は、ルールで指定された日数をオブジェクト作成時に加え、翌日の UTC 午前 0 時に対してその結果の時間を四捨五入して時間を算出します。例えば、あるオブジェクトが 2014 年 1 月 15 日 10:30 AM (UTC) に作成され、移行ルールで 3 日と指定した場合、オブジェクトの移行日は 2014 年 1 月 19 日 00:00 (UTC) となります。
注記
Amazon S3 は、各オブジェクトの最終更新日のみを維持します。例えば、Amazon S3 コンソールでは、オブジェクトの [プロパティ] ペインに [最終更新日時] が表示されています。新しいオブジェクトを最初に作成する際は、この日付はオブジェクトの作成日を表示します。オブジェクトを置き換えた場合、日付はそれに応じて変わります。つまり、オブジェクトの作成日と [最終更新日時] は同期しています。
日数をライフサイクル設定の NoncurrentVersionTransition
アクションおよび NoncurrentVersionExpiration
アクションで指定する場合は、以下の点に注意してください。
-
指定する値は、オブジェクトのバージョンが最新ではなくなった日時 (つまり、オブジェクトが上書きまたは削除された日時) から、Amazon S3 が指定したオブジェクトに対してアクションを実行するまでの日数です。
-
Amazon S3 は、オブジェクトの次の最新バージョンが作成された時刻にルールで指定された日数を加算して、その結果の時刻を四捨五入して翌日の UTC 午前 0 時に対して加えて時刻を算出します。例えば、バケット内に 2014 年 1 月 1 日の 10:30 AM (UTC) に作成されたオブジェクトの最新バージョンがあるとします。この最新バージョンを置き換えるオブジェクトの新しいバージョンが 2014 年 1 月 15 日の 10:30 AM (UTC) に作成され、移行ルールで 3 日を指定した場合、オブジェクトの移行日は 2014 年 1 月 19 日 00:00 (UTC) と算出されます。
ライフサイクルルール: 特定の日付に基づく
S3 ライフサイクルルールでアクションを指定する際に、Amazon S3 がアクションを実行する日付を指定できます。特定の日付になると、Amazon S3 は (フィルタ条件に基づいて) すべての対象オブジェクトにアクションに適用します。
過去の日付を使用して S3 ライフサイクルアクションを指定すると、すべての対象オブジェクトは、直ちにそのライフサイクルアクションの対象となります。
重要
日付ベースのアクションは、1 回限りのアクションではありません。Amazon S3 は、日付が過ぎた後も、ルールのステータスが Enabled
である限り、継続して日付ベースのアクションを適用します。
例えば、すべてのオブジェクトを削除する日付ベースの Expiration
アクションを指定するとします (このルールにはフィルターが指定されていないと仮定します)。Amazon S3 は特定の日付に、バケットのすべてのオブジェクトを期限切れにします。Amazon S3 は、バケット内に作成した新しいオブジェクトも続けて有効期限切れにします。ライフサイクルアクションを停止するには、ライフサイクルルールからアクションを削除するか、ルールを無効にするか、ライフサイクル設定からルールを削除する必要があります。
日付の値は、ISO 8601 形式に従う必要があります。この時刻は常に午前 0 時 (UTC) となります。
注記
Amazon S3 コンソールを使用して日付ベースのライフサイクルルールを作成することはできません。ただし、このようなルールを表示、無効化、または削除することはできます。