バケットに S3 ライフサイクル設定を設定する
Amazon S3 コンソール、AWS Command Line Interface (AWS CLI)、AWS SDK、または Amazon S3 REST API を使用して、バケットに Amazon S3 ライフサイクル設定を指定できます。S3 ライフサイクル設定については、「オブジェクトのライフサイクルの管理」を参照してください。
S3 ライフサイクル設定では、ライフサイクルルールを使用して、オブジェクトの存続期間中に Amazon S3 が実行するアクションを定義します。例えば、オブジェクトを別のストレージクラスに移行したり、オブジェクトをアーカイブしたり、指定した期間後にオブジェクトを期限切れ (削除) したりするルールを定義できます。
S3 ライフサイクルに関する考慮事項
ライフサイクル設定を設定する前に、次の点に注意してください。
ライフサイクル設定の伝播の遅延
バケットに対してライフサイクル設定を追加する場合、新しい、あるいは更新された S3 ライフサイクル設定がすべての Amazon S3 システムに完全に伝達されるまでには、通常、多少のタイムラグがあります。ライフサイクル設定が完全に有効になるまで、数分間程度の遅延を想定してください。この遅延は、S3 ライフサイクル設定を削除するときにも発生することがあります。
移行または有効期限の遅延
ライフサイクルルールが満たされてから、ルールのアクションが完了するまでに遅延が生じる場合があります。例えば、ライフサイクルルールによって一連のオブジェクトの有効期限が 1 月 1 日に切れるとします。有効期限ルールは 1 月 1 日に満たされますが、Amazon S3 は数日後または数週間後までこれらのオブジェクトを実際に削除しない場合があります。この遅延は、S3 ライフサイクルがオブジェクトを移行または有効期限のためのキューに非同期的に入れるために発生します。請求の変更は、通常、アクションが完了していなくても、ライフサイクルルールが満たされた際に適用されます。詳細については、「請求の変更」を参照してください。アクティブなライフサイクルルールによって行われた更新の影響をモニタリングするには、「ライフサイクルルールによって実行されたアクションをモニタリングするにはどうすればよいですか?」を参照してください。
ライフサイクルルールの更新、無効化、または削除
ライフサイクルルールを無効にする、あるいは削除すると、わずかなタイムラグの後に、Amazon S3 は新しいオブジェクトの削除や移行のスケジューリングを停止します。スケジュール済みのオブジェクトはスケジュール解除され、削除または移行されません。
注記
ライフサイクルルールを更新、無効化、または削除する前に、LIST
API オペレーション (ListObjectsV2、ListObjectVersions、ListMultipartUploads など) または S3 インベントリを使用したデータのカタログ化と分析 を使用して、ユースケースに基づき、Amazon S3 が移行済みで対象となるオブジェクトの有効期限が切れていることを確認します。ライフサイクルルールの更新、無効化、削除に問題がある場合は、「Amazon S3 ライフサイクル問題のトラブルシューティング」を参照してください。
既存のオブジェクトと新しいオブジェクト
ライフサイクル設定をバケットに追加すると、設定ルールは既存のオブジェクトとそれ以降に追加されるオブジェクトの両方に適用されます。例えば、特定のプレフィックスが付いたオブジェクトが作成から 30 日後に有効期限を迎えるようにする失効アクションを備えたライフサイクル設定ルールを本日追加すると、Amazon S3 により作成から 30 日以上が経過し、指定されたプレフィックスを持つ既存のオブジェクトがすべて削除キューに追加されます。
ライフサイクルルールの影響のモニタリング
アクティブなライフサイクルルールによって行われた更新の影響をモニタリングするには、「ライフサイクルルールによって実行されたアクションをモニタリングするにはどうすればよいですか?」を参照してください。
請求の変更
ライフサイクル設定のルールが満たされてから、実際にアクションが実行されるまでの間には、遅延が発生する場合があります。ただし、アクションが実行されていなくても、ライフサイクル設定のルールが満たされた段階で、請求にはすぐに変更が反映されます。
たとえば、オブジェクトの有効期限が切れると、オブジェクトがすぐに削除されなくても、そのストレージは課金対象から外されます。同様に、オブジェクトの移行期間を過ぎると、オブジェクトがすぐに S3 Glacier Flexible Retrieval ストレージクラスに移行されていなくても、S3 Glacier Flexible Retrieval ストレージ料金が請求されます。
ただし、S3 Intelligent-Tiering ストレージクラスへのライフサイクルの移行については例外です。オブジェクトが S3 Intelligent-Tiering ストレージクラスに移行するまで、請求の変更は行われません。
複数のルールまたは競合するルール
S3 ライフサイクル設定に複数のルールがある場合、1 つのオブジェクトが同じ日に複数の S3 ライフサイクルアクションの対象になることがあります。このような場合、Amazon S3 は以下の一般的なルールに従います。
-
完全な削除は、移行より優先されます。
-
移行は、削除マーカーの作成より優先されます。
-
オブジェクトが S3 Glacier Flexible Retrieval と S3 Standard-IA (または S3 One Zone-IA) 移行の両方の対象になる場合、Amazon S3 は S3 Glacier Flexible Retrieval 移行を選択します。
例については、「重複するフィルタ、競合するライフサイクルアクションの例」を参照してください。
S3 ライフサイクル設定を設定する方法
Amazon S3 コンソール、AWS Command Line Interface (AWS CLI)、AWS SDK、または Amazon S3 REST API を使用して、バケットに Amazon S3 ライフサイクル設定を指定できます。
AWS CloudFormation テンプレートと例の詳細については、「AWS CloudFormation ユーザーガイド」の「AWS CloudFormation テンプレートの使用」および「AWS::S3::Bucket」を参照してください。
共有プレフィックス (共通の文字列から始まるオブジェクト名) またはタグを使用して、バケット内のすべてのオブジェクトまたはオブジェクトのサブセットに対してライフサイクルルールを定義できます。ライフサイクルルールでは、現在のバージョンまたは以前のバージョンのオブジェクトに対して独自のアクションを定義できます。詳細については、次を参照してください:
ライフサイクルルールを作成するには
-
AWS Management Console にサインインし、Amazon S3 コンソール (https://console.aws.amazon.com/s3/
) を開きます。 -
[Buckets (バケット)] リストで、ライフサイクルルールを作成するバケットの名前を選択します。
-
[Management (管理)] タブを選択して、[Create lifecycle rule (ライフサイクルルールを作成する)] を選択します。
-
[Lifecycle rule name (ライフサイクルルール名)] に、ルールの名前を入力します。
その名前はバケット内で一意である必要があります。
-
ライフサイクルルールのスコープを選択します。
-
特定のプレフィックスまたはタグを持つすべてのオブジェクトにこのライフサイクルルールを適用するには、[スコープを特定のプレフィックスまたはタグに制限] を選択します。
-
スコープをプレフィックスで制限するには、[Prefix (プレフィックス)] にプレフィックスを入力します。
-
スコープをタグで制限するには、[Add tag (タグの追加)] を選択してタグのキーと値を入力します。
オブジェクト名のプレフィックスの詳細については、「Amazon S3 オブジェクトに命名する」を参照してください。オブジェクトロックの詳細については、タグを使用してストレージを分類するをご参照ください。
-
-
このライフサイクルルールをバケット内のすべてのオブジェクトに適用するには、[このルールは、バケット内のすべてのオブジェクトに適用されます] を選択して、[このライフサイクルルールがバケット内のすべてのオブジェクトに適用されることを了承します] を選択します。
-
-
オブジェクトサイズでルールをフィルタリングするには、[最小オブジェクトサイズを指定]、[最大オブジェクトサイズを指定]、または両方のオプションを選択します。
-
[最小オブジェクトサイズ] または [最大オブジェクトサイズ] の値を指定する際は、0 バイトより大きく、5 TB 未満の範囲の値を指定する必要があります。この値はバイト、KB、MB、または GB で指定できます。
-
両方の値を指定する際は、最大オブジェクトサイズを最小オブジェクトサイズよりも大きい値に設定する必要があります。
注記
[最小オブジェクトサイズ] フィルターおよび [最大オブジェクトサイズ] フィルターは、指定された値を除外します。例えば、[最小オブジェクトサイズ] で 128 KB のオブジェクトを期限切れにするようにフィルターを設定した場合、128 KB ちょうどのオブジェクトは期限切れになりません。代わりに、このルールは 128 KB より大きいサイズのオブジェクトにのみ適用されます。
-
-
[Lifecycle rule actions (ライフサイクルルールのアクション)] で、ライフサイクルルールで実行するアクションを以下から選択します。
-
オブジェクトの現在のバージョンをストレージクラス間で移行する
-
オブジェクトの以前のバージョンをストレージクラス間で移動する
-
オブジェクトの現在のバージョンを期限切れにする
注記
S3 バージョニングが有効化されていないバケットの場合、現在のバージョンの有効期限が切れると、Amazon S3 はオブジェクトを完全に削除します。詳細については、「ライフサイクルのアクションとバケットのバージョニング状態」を参照してください。
-
オブジェクトの以前のバージョンを完全に削除する
-
期限切れの削除マーカーまたは未完了のマルチパートアップロードを削除する
選択したアクションに応じて、異なるオプションが表示されます。
-
-
オブジェクトの現在のバージョンをストレージクラス間で移行するには、[オブジェクトの現在のバージョンをストレージクラス間で移行する] で以下を行います。
-
[ストレージクラスへの移行] で、移行するストレージクラスを選択します。利用できる移行のリストについては、「サポートされているライフサイクル移行」を参照してください。以下のストレージクラスから選択できます。
-
S3 Standard – IA
-
S3 Intelligent-Tiering
-
S3 1 ゾーン - IA
-
S3 Glacier インスタント取得
-
S3 Glacier Flexible Retrieval
-
S3 Glacier Deep Archive
-
-
[Days after object creation (オブジェクトが作成されてからの日数)] に、オブジェクトの作成から移行までの日数を入力します。
ストレージクラスの詳細については、「Amazon S3 ストレージクラスの理解と管理」を参照してください。オブジェクトの現在のバージョンだけ、以前のバージョンだけ、または現在と以前の両方のバージョンについて、移行を定義できます。バージョニングを使用すると、1 つのバケットで複数バージョンのオブジェクトを維持できます。バージョニングの詳細については、「S3 コンソールの使用」を参照してください。
重要
S3 Glacier Instant Retrieval、S3 Glacier Flexible Retrieval あるいは Glacier Deep Archive ストレージクラスを選択した場合は、オブジェクトは Amazon S3 に保持されます。Amazon S3 Glacier サービスを別途使用して直接アクセスすることはできません。詳細については、「Amazon S3 ライフサイクルを使用したオブジェクトの移行」を参照してください。
-
-
ストレージクラス間で最新以外のオブジェクトを移行するには、[オブジェクトの非現行バージョンをストレージクラス間で移行する] で以下を行います。
-
[ストレージクラスへの移行] で、移行するストレージクラスを選択します。利用できる移行のリストについては、「サポートされているライフサイクル移行」を参照してください。以下のストレージクラスから選択できます。
-
S3 Standard – IA
-
S3 Intelligent-Tiering
-
S3 1 ゾーン - IA
-
S3 Glacier インスタント取得
-
S3 Glacier Flexible Retrieval
-
S3 Glacier Deep Archive
-
-
[Days after object becomes noncurrent] に、オブジェクトの作成日から移行日までの日数を入力します。
-
-
オブジェクトの現行バージョンを期限切れにするには、[Expire current versions of objects] (オブジェクトの現行バージョンを期限切れにする) で、[Number of days after object creation] (オブジェクトの作成後の日数) に日数を入力します。
重要
バージョニング非対応のバケットの場合、アクションを実行すると、Amazon S3 はオブジェクトを完全に削除します。ライフサイクルアクションの詳細については、「ライフサイクルアクションを記述する要素」を参照してください。
-
オブジェクトの以前のバージョンを完全に削除するには、[Permanently delete noncurrent versions of objects] (現在のバージョンではないオブジェクトを完全に削除する) で、[Days after objects become noncurrent] (オブジェクトが最新バージョンでなくなってからの日数) に日数を入力します。オプションで、[Number of newer versions to retain] (保持する新しいバージョンの数) に値を入力して、保持する新しいバージョンの数を指定できます。
-
[Delete expired delete markers or incomplete multipart uploads (期限切れの削除マーカーまたは未完了のマルチパートアップロードを削除する)] で、[Delete expired object delete markers (期限切れのオブジェクト削除マーカーを削除する)] と [Delete incomplete multipart uploads (不完全なマルチパートアップロードを削除)] を選択します。次に、マルチパートアップロードの開始から未完了のマルチパートアップロードを終了してクリーンアップするまでの日数を入力します。
マルチパートアップロードの詳細については、「マルチパートアップロードを使用したオブジェクトのアップロードとコピー」を参照してください。
-
[Create rule] を選択します。
ルールにエラーがない場合は、Amazon S3 によって有効にされ、[Management (管理)] タブの [Lifecycle rules (ライフサイクルルール)] に表示されます。
次の AWS CLI コマンドを使用して、S3 ライフサイクル設定を管理できます。
-
put-bucket-lifecycle-configuration
-
get-bucket-lifecycle-configuration
-
delete-bucket-lifecycle
AWS CLI の設定の手順については、「Amazon S3 API リファレンス」の「AWS CLI を使用した Amazon S3 での開発」を参照してください。
Amazon S3 ライフサイクル設定は XML ファイルである点に注意してください。ただし、AWS CLI を使用する場合、XML 形式を指定することはできません。代わりに JSON 形式を指定する必要があります。XML ライフサイクル設定の例と、AWS CLI コマンドで指定できる同等の JSON の設定は、次のとおりです。
次のサンプル S3 ライフサイクル設定を検討してください。
例 1
例 2
以下のように put-bucket-lifecycle-configuration
をテストできます。
設定をテストする
-
JSON のライフサイクル設定をファイル (
など) に保存します。lifecycle.json
-
以下の AWS CLI コマンドを実行して、バケットにライフサイクル設定を指定します。
を、ユーザー自身の情報に置き換えます。user input placeholders
$
aws s3api put-bucket-lifecycle-configuration \ --bucketamzn-s3-demo-bucket
\ --lifecycle-configuration file://lifecycle.json
-
検証するには、次のとおり
get-bucket-lifecycle-configuration
AWS CLI コマンドを使用して S3 ライフサイクル設定を取得します。$
aws s3api get-bucket-lifecycle-configuration \ --bucketamzn-s3-demo-bucket
-
S3 ライフサイクル設定を削除するには、次のとおり
delete-bucket-lifecycle
AWS CLI コマンドを使用します。aws s3api delete-bucket-lifecycle \ --bucket
amzn-s3-demo-bucket
「Amazon Simple Storage Service API リファレンス」の以下のトピックでは、S3 ライフサイクル設定に関連する REST API オペレーションについて説明しています。
S3 ライフサイクルのトラブルシューティング
S3 ライフサイクルの使用時に発生する可能性がある一般的な問題については、「Amazon S3 ライフサイクル問題のトラブルシューティング」を参照してください。