オブジェクトの有効期限
ライフサイクル設定に基づいて、オブジェクトの存続期間が終了すると、Amazon S3 はバケットの S3 バージョニング状態に応じて自動的にアクションを実行します。
-
バージョニングされていないバケット – Amazon S3 はオブジェクトを削除キューに追加して非同期的に削除し、オブジェクトを完全に削除します。
-
バージョニングが有効なバケット – 現在のオブジェクトバージョンが削除マーカーではない場合、Amazon S3 は固有のバージョン ID を持つ削除マーカーを追加します。これにより、最新のバージョンが最新以外のバージョンとなり、削除マーカーが最新バージョンになります。
-
バージョニングが停止されたバケット — Amazon S3 はバージョン ID として null を使用する削除マーカーを作成します。この削除マーカーは、バージョン階層においてあらゆるオブジェクトバージョンをバージョン ID null に置き換えるため、オブジェクトが効率的に削除されます。
バージョニング対応のバケット (つまり、バージョニングが有効であるかバージョニングが停止されている) の場合、Amazon S3 による Expiration アクションの処理方法を決める考慮事項がいくつかあります。バージョニングが有効なバケットまたはバージョニングが停止されたバケットには、以下が適用されます。
-
オブジェクトの有効期限は、オブジェクトの最新のバージョンにのみ適用されます(最新以外のバージョンには影響しません)。
-
1 つ以上のオブジェクトバージョンがあり、削除マーカーが最新バージョンである場合、Amazon S3 はアクションを実行しません。
-
現在のオブジェクトバージョンが唯一のオブジェクトバージョンであり、削除マーカーでもある場合 (「期限切れオブジェクト削除マーカー」とも呼ばれます。すべてのオブジェクトバージョンが削除され、削除マーカーのみ残ります)、Amazon S3 は期限切れのオブジェクト削除マーカーを削除します。また、expiration アクションを使用して、期限切れオブジェクト削除マーカーをすべて削除するよう Amazon S3 に指示することもできます。例については、「例 7: 期限切れオブジェクト削除マーカーを削除する」を参照してください。
-
アクション要素
NoncurrentVersionExpiration
を使用すると、Amazon S3 が最新以外のオブジェクトのバージョンを永続的に削除するように指示できます。このように削除されたオブジェクトは復元することはできません。この有効期限切れは、オブジェクトが最新でなくなった以降の特定の日数に基づいて設定できます。日数以外にも、保持する最新以外のバージョンの最大数 (1~100 の間) を指定することもできます。この値は、Amazon S3 で関連付けられたアクションが実行できるまでに、最新でないバージョンがいくつ必要かを指定します。最新以外のバージョンの最大数を指定するには、Filter
要素も指定する必要があります。Filter
要素を指定しないで最新以外のバージョンの最大数を指定すると、Amazon S3 でInvalidRequest
エラーが発生します。アクション要素NoncurrentVersionExpiration
の使用方法の詳細については、「ライフサイクルアクションを記述する要素」を参照してください。 -
Amazon S3 は、S3 オブジェクトロック設定が適用されており、最新でないバージョンのオブジェクトに対しては、アクションを実行しません。
-
Pending
レプリケーションステータスのオブジェクトの場合、オブジェクトの現在のバージョンまたは以前のバージョンに対して Amazon S3 はアクションを実行しません。
詳細については、「S3 バケットでのバージョニングの使用」を参照してください。
重要
S3 ライフサイクル設定に複数のルールがある場合、1 つのオブジェクトが同じ日に複数の S3 ライフサイクルアクションの対象になることがあります。このような場合、Amazon S3 は以下の一般的なルールに従います。
-
完全な削除は、移行より優先されます。
-
移行は、削除マーカーの作成より優先されます。
-
オブジェクトが S3 Glacier Flexible Retrieval と S3 Standard-IA (または S3 One Zone-IA) 移行の両方の対象になる場合、Amazon S3 は S3 Glacier Flexible Retrieval 移行を選択します。
例については、「例 5: 重複するフィルター、競合するライフサイクルアクション、Amazon S3 がバージョン管理されていないバケットに対して行うこと」を参照してください。
既存のオブジェクトと新しいオブジェクト
ライフサイクル設定をバケットに追加すると、設定ルールは既存のオブジェクトとそれ以降に追加されるオブジェクトの両方に適用されます。例えば、特定のプレフィックスが付いたオブジェクトが作成から 30 日後に有効期限を迎えるようにする失効アクションを備えたライフサイクル設定ルールを本日追加すると、Amazon S3 により作成から 30 日以上が経過し、指定されたプレフィックスを持つ既存のオブジェクトがすべて削除キューに追加されます。
重要
バケットポリシーを使用して、S3 ライフサイクルルールによる削除や移行を防ぐことはできません。例えば、バケットポリシーがすべてのプリンシパルのすべてのアクションを拒否する場合でも、S3 ライフサイクル設定は通常どおり機能します。
オブジェクトの有効期限を確認する方法
オブジェクトでスケジュールされている有効期限を確認するには、HeadObject または GetObject の API オペレーションを使用します。これらの API オペレーションでは、オブジェクトがキャッシュ可能でなくなる日時が指定されたレスポンスヘッダーが返されます。
注記
有効期限が切れる日と Amazon S3 がオブジェクトを削除する日との間に遅延が生じることがあります。期限切れのオブジェクトに関連付けられている有効期限切れ、またはストレージ期間に対する料金は請求されません。
ライフサイクルルールを更新、無効化、または削除する前に、
LIST
API オペレーション (ListObjectsV2、ListObjectVersions、ListMultipartUploads など) または Amazon S3 インベントリ を使用して、ユースケースに基づき、Amazon S3 が移行済みで対象となるオブジェクトの有効期限が切れていることを確認します。
最小ストレージ期間料金
S3 Standard – IA、または S3 1 ゾーン – IA のストレージにあった期間が 30 日未満のオブジェクトを失効させる S3 ライフサイクル失効ルールを作成すると、30 日間の料金が発生します。S3 Glacier ストレージにあった期間が 90 日未満のオブジェクトを失効させるライフサイクル有効期限ルールを作成すると、90 日間の料金が発生します。S3 Glacier Deep Archive ストレージにあった期間が 180 日未満のオブジェクトを失効させるライフサイクル失効ルールを作成すると、180 日間の料金が発生します。
詳細については、「Amazon S3 の料金