継続は力なり

タイトル通り定期的な更新を心掛けるブログです。

S3 バケット内オブジェクト削除のライフサイクルをタグでコントロールする

タダです.

S3 に格納しているオブジェクトの中で,タグをつけたものをライフサイクルルールで削除したいという要望が業務でありました.S3 のライフサイクルでオブジェクトを削除する時にバケット全体のオブジェクトへ適用することは経験があったのですが,ライフサイクルルールをタグ指定でやるのは初だったのでこの記事で設定をまとめていきます.

ライフサイクル の設定

消したいオブジェクトは S3 にアップされる時に delete:true というタグをつけてもらうようにしていたので,タグで制御するようにルールを作りました.また,オブジェクトが削除するのを1日ごとにするためのライフサイクルールのアクションを定義しました.

f:id:sadayoshi_tada:20210818221147p:plain f:id:sadayoshi_tada:20210818221345p:plain

なお,ライフサイクルの考え方としてはドキュメントに記載があり,オブジェクト作成してからの日数で計算されてアクションが実行される点が注意でオブジェクトが S3 上にできてから1日経過後の日本時刻に消えない!っていうのは自分も勘違いしていました.

Amazon S3 は、ルールに指定された日数をオブジェクトの作成時間に加算し、得られた日時を翌日の午前 00:00 UTC (協定世界時) に丸めることで、時間を算出します。たとえば、あるオブジェクトが 2014 年 1 月 15 日午前 10 時 30 分 (UTC) に作成され、移行ルールに 3 日と指定した場合、オブジェクトの移行日は 2014 年 1 月 19 日 0 時 0 分 (UTC) となります。

docs.aws.amazon.com

実際にアップロードしたオブジェクトの管理概要の項目を見ると,8/18 PM 08:38に作られたものだから1日加算し,かつその日時から翌日の午前 00:00 UTC (協定世界時)に丸めた時間(JST だと +9時間後)が有効期限日で表示されるようになりました.

f:id:sadayoshi_tada:20210818221823p:plain

ライフサイクルの実行確認

自分が確認する限りですが,指定の時間ぴったりになくならずラグが多少あるなと思いました.とはいえ,指定したタグのオブジェクトで削除されることが確認できました.

まとめ

S3 のライフサイクルルールを,タグをつけたオブジェクトに対して実行する設定を試したので記事にしました.特定のファイルだけ削除したいといった用途に使えており,柔軟なファイル操作をマネージドに任せられて助かっています.同じような事象に悩む方の参考になれば嬉しいです!