概要
- 特定のタグを付与したオブジェクトをS3 ライフサイクルルールで削除
- LambdaなどからAPIでオブジェクト削除を実行する際は、Lambdaの実行時間等が掛かりますが、ライフサイクルルールを使うことで無料で削除可能
- なお、削除までに少なくとも1日掛かります。
ライフサイクルルールの設定
ライフサイクルルールを設定したいAmazon S3バケットをコンソールで開きます。
ライフサイクルの作成を選択し、以下のように空欄を埋めていきます。なお、ここではオブジェクトにis_translated: True
というタグがあった場合、ルールの対象とします。
このルールにより、1日でオブジェクトの有効期限切れと設定すると、最終更新日から1日過ぎた日の午前9時(JST)に削除フラグが付与され、削除されます。(バージョニングを有効にしている場合、完全には消えません。
- アクションが実行される、オブジェクト作成からの日数です。
- Amazon S3 は、ルールに指定された日数をオブジェクトの作成時間に加算し、得られた日時を翌日の午前 00:00 UTC (協定世界時) に丸めることで、時間を算出します。たとえば、あるオブジェクトが 2014 年 1 月 15 日午前 10 時 30 分 (UTC) に作成され、移行ルールに 3 日と指定した場合、オブジェクトの移行日は 2014 年 1 月 19 日 0 時 0 分 (UTC) となります。
(https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/userguide/intro-lifecycle-rules.html)
実際に見てみる
実際にバケットにルールを適応して、オブジェクトにタグを付与します。そうすると、以下のように有効期限日が表示されます。
09:00 JSTに削除と書いてありますが、実際はかなり遅延があるようです。私が試したときは、約3~5時間ほどの遅延がありました。