1 日以上前に適用したのに Amazon S3 バケットのライフサイクルルールが機能しないのはなぜですか?

所要時間1分
0

Amazon Simple Storage Service (Amazon S3) バケットにライフサイクル設定ルールを設定して、オブジェクトを別のストレージクラスに移行するか、オブジェクトを期限切れにしました。しかし、オブジェクトはルールに従って変更されませんでした。

解決方法

これは、ライフサイクルルールが満たされてからルールのアクションが完了するまでの間に遅延がある場合に発生します。ライフサイクルルールが満たされた時点で請求の変更が適用されますが、アクションが完了していなくても適用されます。

例:

  • オブジェクトの有効期限に関するライフサイクルルールが設定されている場合は、有効期限が過ぎてもストレージ料金は発生しません。これは、オブジェクトがすぐに期限切れにならない場合にも当てはまります。
  • オブジェクトを GLACIER ストレージクラスに移行するライフサイクルルールでは、オブジェクトの移行時間が経過すると Amazon S3 Glacier ストレージ料金が課金されます。これは、オブジェクトがすぐに GLACIER ストレージクラスに移行されない場合でも発生します。
    注: オブジェクトを INTELLIGENT_TIERING ストレージクラスに移行するライフサイクルトランジションを設定した場合は、請求の変更はオブジェクトが INTELLIGENT_TIERING ストレージクラスに移行するまで発生しません。これは例外です。

S3 ライフサイクルは 1 日に 1 回のみ実行されます。さらに、Amazon S3 はオブジェクトの移行日または有効期限を翌日の午前 0 時 (UTC) に四捨五入します。たとえば、2020 年 1 月 1 日 10:30 UTC に、3 日後にオブジェクトを移行するライフサイクルルールを使用してオブジェクトを作成したとします。このオブジェクトの場合、移行日は 2020 年 1 月 5 日 00:00 UTC です。ライフサイクルルールが満たされているかどうかを確認する前に、十分な時間が経過していることを確認してください。

十分な時間が経過してもライフサイクルルールが満たされない場合は、ライフサイクルルールのオブジェクトにプレフィックスフィルターが正しく設定されていることを確認してください。 

重要:

  • ライフサイクルルールでプレフィックスフィルターを指定しない場合、ルールはバケット内のすべてのオブジェクトに適用されます。
  • images/ というプレフィックスフィルターを指定した場合、ライフサイクルルールはプレフィックス images/ 以下のすべてのオブジェクトに適用されます。
    **注:プレフィックスフィルターの最後には必ず/**文字を指定してください。プレフィックスフィルターの先頭に / 文字を指定すると、ライフサイクルルールは正しく評価されません。

HeadObject API または Amazon S3 コンソールを使用して、現在のバージョンのオブジェクトがいつ期限切れになるかを確認できます。

**注:**AWS コマンドラインインターフェイス (AWS CLI) コマンドの実行中にエラーが発生した場合は、最新の AWS CLI バージョンを使用しているかどうかを確認してください

次の AWS CLI コマンドを実行して、オブジェクトの有効期限を確認します。

$ aws s3api head-object --bucket bucketname --key file.txt

出力は次のようになります。

 {  
 "AcceptRanges": "bytes",  
 "Expiration": "expiry-date=\"Wed, 15 Mar 2023 00:00:00 GMT\", rule-id=\"MyExpirationRule\"",  
 "LastModified": "2023-02-22T17:20:34+00:00",  
 "ContentLength": 6,  
 "ETag": "\"edae42exa0d2b93b123346740107dacf\"",  
 "VersionId": "SoshCRUrlabc1v4ZzYEA123PvWcaeF6F",  
 "ContentType": "text/plain",  
 "ServerSideEncryption": “AES256”,  
 "Metadata": {}  
}

[Expiration] レスポンスヘッダーには、[expiry-date][rule-id] が含まれています。expiry-date フィールドは、Amazon S3 がオブジェクトを削除するためにキューに入れる日付を示しており、オブジェクトの非同期削除を行います。[rule-id] フィールドは、オブジェクトに適用されるライフサイクルルールを示します。

Amazon S3 コンソールを使用してオブジェクトの有効期限を確認するには、次の手順を実行します。

  1. Amazon S3 コンソールを開きます。
  2. [バケット] リストから、バケットの名前を選択します。
  3. 確認するオブジェクトの名前を選択します。
  4. [プロパティ] タブを選択します。
  5. [オブジェクト管理の概要] セクションの [管理設定] で、[有効期限ルール][有効期限] フィールドを確認します。

[有効期限] フィールドには、Amazon S3 がオブジェクトを削除キューに入れ、オブジェクトを非同期で削除する日付が表示されます。**[有効期限ルール]**フィールドは、オブジェクトに適用されるライフサイクルルールを示しています。

注: HEAD リクエストや GET リクエストに対して、期限切れのオブジェクトのみが**[有効期限]** レスポンスヘッダーを返します。以前のバージョンと削除マーカーは、このレスポンスヘッダーを返しません。また、移行対象となるオブジェクトのレスポンスヘッダーは取得できません。

S3 Storage Lens ダッシュボードを使用して、アクティブなライフサイクルルールとライフサイクルルールによって行われた更新の進行状況を監視できます。

関連情報

バケットにライフサイクル設定を設定する

AWS公式
AWS公式更新しました 1年前