S3 オブジェクトの有効期限をAWS CLIで確認する

2018.09.03

S3 バケットのライフサイクルポリシーで、オブジェクトを他のストレージクラスに移動やオブジェクトをアーカイブ、オブジェクトの削除を定義することができます。

このライフサイクルルールを設定したオブジェクトの有効期限を head-object で確認することができますのでご紹介します。

バケットにライフサイクルが設定されているか確認

note: ライフサイクルの設定についてはS3 バケットのライフサイクルポリシーを作成する方法 を参考にしてください。

ライフサイクルは get-bucket-lifecycle-configuration で確認できます。

$ aws s3api get-bucket-lifecycle-configuration --bucket ${bucket_name}
{
"Rules": [
{
"Expiration": {
"Days": 60
},
"ID": "lifecycle-test-rule",
"Filter": {
"Prefix": ""
},
"Status": "Enabled",
"NoncurrentVersionExpiration": {
"NoncurrentDays": 30
},
"AbortIncompleteMultipartUpload": {
"DaysAfterInitiation": 7
}
}
]
}

今回の例では60日後にオブジェクトが削除されます。

オブジェクトの有効期限を確認する

オブジェクトの有効期限は head-object で確認できます。

$ aws s3api head-object --bucket ${bucket_name} --key ${key}
{
"AcceptRanges": "bytes",
"Expiration": "expiry-date=\"Sun, 14 Oct 2018 00:00:00 GMT\", rule-id=\"lifecycle-test-rule\"",
"LastModified": "Tue, 14 Aug 2018 19:57:04 GMT",
"ContentLength": 641,
"ETag": "\"f4cb543f3d9a2fcf9203dc39598c7d88\"",
"VersionId": "null",
"ContentEncoding": "utf-8",
"ContentType": "text/plane",
"ServerSideEncryption": "AES256",
"Metadata": {}
}

Expirationからオブジェクトの有効期限が確認することができました。

note: LastModifiedTue, 14 Aug 2018 19:57:04 GMT ですが、ExpirationSun, 14 Oct 2018 00:00:00 GMT になっているのは以下ドキュメントを参照してください。

ライフサイクル設定の要素 | ライフサイクルルール: オブジェクトの存在時間に基づく

Amazon S3 は、ルールに指定された日数をオブジェクトの次の新しいバージョンが作成された時間に加算し、得られた日時を翌日の午前 00:00 (UTC) に丸めることで、時間を算出します。たとえば、バケット内のオブジェクトの最新バージョンが 2014 年 1 月 1 日午前 10 時 30 分 (UTC) に作成されており、2014 年 1 月 15 日午前 10 時 30 分 (UTC) にそのバージョンに代わる次の新しいバージョンが作成された場合、移行ルールに 3 日を指定していると、オブジェクトの移行日は 2014 年 1 月 19 日 0 時 0 分 (UTC) になります。

まとめ

S3 オブジェクトの有効期限をAPIで確認する方法をご紹介しました。APIで取得できるので確認し易いと思います。

参考URL