With Lifecycle Rules

module "data_lake" {
  source  = "registry.patterneddesigns.ca/essentials/s3-bucket/aws"
  version = "3.0.0"

  bucket_name        = "data-lake-raw"
  versioning_enabled = true
  encryption_type    = "aws:kms"
  kms_key_arn        = module.kms.key_arn

  lifecycle_rules = [
    {
      id      = "logs-cleanup"
      prefix  = "logs/"
      enabled = true

      expiration_days = 90
    },
    {
      id      = "archive-old-data"
      prefix  = "data/"
      enabled = true

      transition_days  = 30
      transition_class = "STANDARD_IA"
    },
    {
      id      = "deep-archive"
      prefix  = "backups/"
      enabled = true

      transition_days  = 90
      transition_class = "GLACIER"
    },
    {
      id      = "cleanup-incomplete-uploads"
      prefix  = ""
      enabled = true

      abort_incomplete_multipart_upload_days = 7
    }
  ]
}