Terraform module for s3-bucket on aws
module "s3-bucket" {
source = "registry.patterneddesigns.ca/essentials/s3-bucket/aws"
version = "0.1.0"
}bucket_name
requiredName of the S3 bucket. Must be globally unique, 3-63 characters, lowercase letters, numbers, and hyphens only.
versioning_enabledEnable versioning for the bucket. Keeps multiple variants of an object for accidental deletion and overwrite protection.
encryption_typeEncryption type for the bucket. Use 'AES256' for S3-managed keys (SSE-S3) or 'aws:kms' for KMS-managed keys (SSE-KMS).
kms_key_arnKMS key ARN for encryption. Required when encryption_type is 'aws:kms'.
lifecycle_rulesLifecycle 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
cors_configurationCORS configuration for cross-origin access. Set to null to disable CORS. cors_rules is a list of objects with: - allowed_methods: HTTP methods allowed (GET, PUT, POST, DELETE, HEAD) - required - allowed_origins: Origins allowed to make requests - required - allowed_headers: Headers allowed in preflight requests (optional) - expose_headers: Headers exposed to the browser (optional) - max_age_seconds: Cache duration for preflight responses (optional)
access_loggingAccess logging configuration for audit trails. Set to null to disable logging. Object properties: - target_bucket: Bucket where logs are delivered (required) - target_prefix: Prefix for log objects (optional)
tagsTags to apply to the bucket.
bucket_arnARN of the S3 bucket. Use this for IAM policies, resource references, and cross-service integrations.
bucket_idID (name) of the S3 bucket. Use this for SDK calls, CLI commands, and resource references that require the bucket name.
bucket_domain_nameDomain name of the bucket in the format bucket-name.s3.amazonaws.com. Use this for direct URL access and CloudFront origins.
bucket_regional_domain_nameRegional domain name of the bucket in the format bucket-name.s3.region.amazonaws.com. Preferred for CloudFront origins and cross-region access.