S3上にアクセスログを定期的に書き込むようなシステムがあったとして、古いアクセスログを自動的に消す仕組みを作ってみたいと思います。
これらを実現するために S3バケットにライフサイクルルールを設定し、古いログを削除するよう設定します。
ライフサイクルルールの設定手順
ライフサイクルルールの設定はバケット単位で設定します。
バケットの「管理」の「ライフサイクル」から「ライフサイクルルールの追加」を選択します。
ライフサイクルルールの「ルール名」に任意のルールを設定します。
フィルターの追加も任意で構いません。
これを設定するとtest/
ディレクトリ以下のオブジェクトにのみライフサイクルを設定するといった設定ができます。
以降の設定は今回はそのまま「次へ」を選択します。
Glacierなどに以降するライフサイクルを設定する場合にはここで設定を行います。
ライフサイクルルールで削除の設定を行います。
「オブジェクトの現行バージョンを執行する」の箇所が重要です。
たとえば30日より前のログが不要である場合には30を設定します。
今回はテストのために1日経過したオブジェクトを削除するように設定しています。
設定を確認して、「保存」を選択します。
実行結果
これが
一日後…
「s3_index.html」が削除されていることがわかります。
まとめ
ライフサイクル機能をつかうことで手動で過去ログを削除するといったわずわらしさから開放されます。
消し忘れや誤った削除も発生しませんので是非活用してみてください。