AnyDigi
アイキャッチ
S3にライフタイムポリシーを追加する
2024年8月15日

S3バケットへの静的ファイルの保存は、料金がそこまで高くないため、不要なファイルも放置しがちです。 そんな時に不要なファイルを一定時間経過後に削除する便利な機能があります。 どんなユースケースかというと、 フロントで画像などのファイルをアップロードするときにプレビューなどで表示したいときがあります。 この場合、S3へ仮に保存して、そのURLでプレビューを表示させるということが1つのソリューションだと思います。 例えば、S3のtemporary/ディレクトリに保存し、正式に保存する場合はオブジェクトをtemporaryから所定のディレクトリへ移動させます。 しかし正式に保存されない場合はtemporaryディレクトリにファイルが残り続けてしまうため、これをライフサイクルで削除します。 これをterraformで実装するコードは以下になります。 ご参考になれば幸いです。

# ライフサイクルルールの追加
resource "aws_s3_bucket_lifecycle_configuration" "static_file_lifecycle" {
  bucket = aws_s3_bucket.static_file.id

  rule {
    id     = "Delete temporary files"
    prefix = "temporary/"
    status = "Enabled"

    expiration {
      days = var.temporary_file_expiration_days
    }
  }
}