lifecycle_rules

Type list(object({ prefix = optional(string, "") expiration_days = optional(number) transition_days = optional(number) transition_class = optional(string) }))
Default null
Module s3-bucket

Lifecycle rules for object management. Each rule can define expiration or transition policies. Each object supports: - prefix: Object key prefix filter (optional) - expiration_days: Days until object expiration (optional) - transition_days: Days until storage class transition (optional) - transition_class: Target storage class for transition (optional) Valid transition classes: STANDARD_IA, ONEZONE_IA, INTELLIGENT_TIERING, GLACIER_IR, GLACIER, DEEP_ARCHIVE

Overview

Lifecycle rules automate object transitions between storage classes and object expiration. Use them to optimize storage costs and manage data retention.

Default Value

lifecycle_rules = []

Rule Structure

lifecycle_rules = [
  {
    prefix                = "logs/"
    expiration_days       = 90
  },
  {
    prefix                = "archives/"
    transition_days       = 30
    transition_class      = "GLACIER"
  }
]

Storage Classes

ClassUse CaseMin Duration
STANDARD_IAInfrequent access30 days
ONEZONE_IANon-critical, infrequent30 days
INTELLIGENT_TIERINGUnknown access patternsNone
GLACIER_IRInstant retrieval archives90 days
GLACIERLong-term archives90 days
DEEP_ARCHIVERarely accessed archives180 days

Common Patterns

Log Retention

{
  prefix          = "logs/"
  expiration_days = 365
}

Tiered Archival

{
  prefix           = "data/"
  transition_days  = 90
  transition_class = "GLACIER"
}

Best Practices

  • Use prefix filters for targeted rules
  • Consider minimum storage duration charges
  • Test rules with abort incomplete multipart upload
  • Use lifecycle rules with versioning to manage old versions

Full Module Example

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

  # lifecycle_rules
  lifecycle_rules = "..."

  # Other required inputs
  bucket_name = "..."
}