resource "aws_s3_bucket" "this" { bucket = var.bucket_name } resource "aws_s3_bucket_versioning" "this" { bucket = aws_s3_bucket.this.id versioning_configuration { status = var.versioning_enabled ? "Enabled" : "Disabled" } } resource "aws_s3_bucket_server_side_encryption_configuration" "this" { bucket = aws_s3_bucket.this.id rule { apply_server_side_encryption_by_default { sse_algorithm = "AES256" } } } resource "aws_s3_bucket_public_access_block" "this" { bucket = aws_s3_bucket.this.id block_public_acls = true block_public_policy = true ignore_public_acls = true restrict_public_buckets = true } resource "aws_s3_bucket_lifecycle_configuration" "this" { count = var.retention_days > 0 ? 1 : 0 bucket = aws_s3_bucket.this.id rule { id = "expire-objects" status = "Enabled" filter {} transition { days = 30 storage_class = "STANDARD_IA" } expiration { days = var.retention_days } } }