Amazon Simple Storage Service (Amazon S3) バケットにライフサイクル設定ルールを設定しました。このルールでは、オブジェクトを別のストレージクラスに移行したり、オブジェクトの失効または削除を行ったりします。しかし、オブジェクトがそのルール通りに変更されませんでした。コスト管理やコンプライアンス用途で、ルールが機能しているかどうかを確認する必要があります。
簡単な説明
Amazon S3 ライフサイクルアクションは非同期アクションです。非同期アクションでは、ライフサイクル設定ルールの失効日または移行日を過ぎているオブジェクトの削除が遅れる場合があります。ただし、ライフサイクルルールの条件を満たすと、アクションが完了していなくても、AWS は請求を変更します。
Amazon S3 ライフサイクルルールは、毎日 1 回のみ実行されます。なお、Amazon S3 はオブジェクトの移行日または失効日を翌日の午前 0 時 (UTC) に切り上げます。ライフサイクルルールが完了したかどうかを確認する前に、十分な時間が経過していることを確認してください。十分な時間が経過してもライフサイクルルールが完了していない場合は、ライフサイクルルールのオブジェクトにプレフィックスフィルターが正しく設定されていることを確認してください。
プレフィックスフィルターにより、ライフサイクルルールの影響を受けるオブジェクトが決まります。例えば、images/ というプレフィックスフィルターを指定した場合、ライフサイクルルールはプレフィックス images/ 以下のオブジェクトにのみ適用されます。
注: プレフィックスフィルターの最後には、/ 文字を指定する必要があります。プレフィックスフィルターの先頭に / 文字を指定すると、Amazon S3 はライフサイクルルールを正常に評価できません。
解決策
注: AWS コマンドラインインターフェイス (AWS CLI) コマンドの実行中にエラーが発生した場合は、「AWS CLI のエラーのトラブルシューティング」を参照してください。また、AWS CLI の最新バージョンを使用していることを確認してください。
現行バージョンのオブジェクトが失効する時期は、HeadObject API、AWS コマンドラインインターフェイス (AWS CLI)、Amazon S3 コンソールのいずれかを使用して確認できます。
注: ヘッダーは現在のオブジェクトバージョンでのみ使用でき、最新でないオブジェクトや削除マーカーでは使用できません。バージョンをリクエストまたは表示しても、Amazon S3 は headobject のレスポンスを返しません。AWS CLI または AWS API を使用して headobject リクエストを送信する場合、リクエストにバージョン ID を含めないでください。コンソールを使用するときは、[バージョンの表示] をオンにしないでください。
注: 移行の対象となるオブジェクトの移行日を確認するための特定のレスポンスヘッダーはありません。
AWS CLI を使用する
次の AWS CLI コマンド head-object を実行してオブジェクトの有効期限を確認します。
aws s3api head-object --bucket bucketname --key file.txt
注: bucketname をバケットの名前に、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 コンソールを使用する
次の手順を実行します。
- Amazon S3 コンソールを開きます。
- [バケット] リストで該当するバケットの名前を選択します。
- 確認するオブジェクトの名前を選択します。
- [プロパティ] タブを選択します。
- [オブジェクト管理の概要] セクションの [管理設定] で、[有効期限ルール] と [有効期限] フィールドを確認します。
[有効期限] フィールドは、Amazon S3 がオブジェクトを削除キューに入れ、そのオブジェクトを非同期削除する日付を示します。[有効期限ルール] フィールドは、オブジェクトに適用されたライフサイクルルールを示します。
注: 現行バージョンのオブジェクトのみが、HEAD リクエストや GET リクエストに対してレスポンスヘッダー Expires を返します。以前のバージョンと削除マーカーは、このレスポンスヘッダーを返しません。なお、移行の対象となるオブジェクトの移行日を確認するための特定のレスポンスヘッダーはありません。
関連情報
バケットに S3 ライフサイクル設定を設定する
ライフサイクルルールによって実行されたアクションをモニタリングするにはどうすればよいですか?