[アップデート]S3 Express One Zone に S3 ライフサイクルルールを設定できるようになりました
Amazon S3 Express One Zone で、S3 ライフサイクルルールの設定が可能になりました。オブジェクトの自動削除や不完全なマルチパートアップロードの削除がディレクトリバケットに対しても設定できます。
S3 Express One Zone のライフサイクルルール
S3 ライフサイクルルールと比べて機能は限定的です。
できること
- 指定した日数を経過したオブジェクトの自動削除
- 不完全なマルチパートアップロードの削除
従来の S3 ライフサイクルルールとの違い
- マネージメントコンソールから設定不可
- ストレージクラス間の移行は非対応(ストレージクラスの種類がありません)
- バケットポリシーの設定が必須
ライフサイクルルールを設定してオブジェクトを自動削除してみた
現在は AWS CLI を使用した設定のみ可能です。以下の手順で実装していきます。
- バケットポリシーの設定
- ライフサイクルルールの作成
- ルールの適用
残念、マネージメントコンソールには設定項目がありません。
バケットポリシーの設定
まず、バケットポリシーを編集して S3 ライフサイクルサービスのプリンシパルからアクセスを許可する設定を追加します。
{
"Version":"2008-10-17",
"Statement":[
{
"Effect":"Allow",
"Principal": {
"Service":"lifecycle.s3.amazonaws.com"
},
"Action":"s3express:CreateSession",
"Condition": {
"StringEquals": {
"s3express:SessionMode": "ReadWrite"
}
},
"Resource":"arn:aws:s3express:ap-northeast-1:123456789012:bucket/mountpoint-for-s3--apne1-az4--x-s3"
}
]
}
ライフサイクルルールの設定
オブジェクトの有効期限を定義するルールを作成します。1 日経過したオブジェクトを削除するライフサイクルルールを作成しました。
{
"Rules": [
{
"Expiration": {
"Days": 1
},
"ID": "Lifecycle expiration rule",
"Filter": {},
"Status": "Enabled"
}
]
}
作成したルールを対象のディレクトリバケットに適用します。
aws s3api put-bucket-lifecycle-configuration --region ap-northeast-1 --bucket mountpoint-for-s3--apne1-az4--x-s3 --lifecycle-configuration file://lc-policy.json --checksum-algorithm crc32c
空
ライフサイクルルールが設定されている確認します。
$ aws s3api get-bucket-lifecycle-configuration --region ap-northeast-1 --bucket mountpoint-for-s3--apne1-az4--x-s3
{
"Rules": [
{
"Expiration": {
"Days": 1
},
"ID": "Lifecycle expiration rule",
"Filter": {},
"Status": "Enabled"
}
]
}
実行結果確認
ライフサイクルルールを設定したディレクトリバケットは2023/11/29
に保存したオブジェクトが 1 つありました。ライフサイクルルールは 1 日経過したオブジェクトが削除されるため、既存のオブジェクトにも適用され削除されるはずです。
6 時間後に確認するとオブジェクトが削除されていました。
削除のログを確認する
S3 データイベントを保存していたので、Athena からデータイベントを確認してみました。CreateSession
とDeleteObjects
のログが記録されいました。
ちなみに S3 のデータイベントは CloudTrail のイベント履歴から確認はできません。今回のライフサイクルルールによる削除ログを確認したければ、CloudTrail の証跡で S3 データイベントの保存設定と、Athena からデータイベントのログ確認が必要になります。
- CloudTrail を利用して Amazon S3 Express One Zone のデータイベントログを記録してみた | DevelopersIO
- CloudTrail のイベント履歴から、S3 バケットのオブジェクトに対するアクションを確認可能か教えてください | DevelopersIO
まとめ
S3 Express One Zone のライフサイクルルール機能は、以下のユースケースで使えるのではないでしょうか。
- 不完全なマルチパートアップロードの自動クリーンアップ
- キャッシュファイルの定期的なクリーンアップ
- 開発・テスト環境の一時データの自動削除
おわりに
現在は AWS CLI からの設定のみでしたので、将来的にはマネージメントコンソールから設定できるようになるといいですね。