variable "distributions" { description = "Map of CloudFront distribution definitions" type = map(object({ comment = optional(string, "") enabled = optional(bool, true) http_version = optional(string, "http2and3") price_class = optional(string, "PriceClass_100") aliases = optional(list(string), []) acm_certificate_arn = optional(string, null) waf_web_acl_id = optional(string, null) logging_bucket = optional(string, null) logging_prefix = optional(string, "cloudfront/") origins = list(object({ origin_id = string domain_name = string s3_oac_id = optional(string, null) # OAC ID for S3 origins custom_origin = optional(object({ http_port = optional(number, 80) https_port = optional(number, 443) protocol_policy = optional(string, "https-only") ssl_protocols = optional(list(string), ["TLSv1.2"]) }), null) origin_path = optional(string, null) custom_headers = optional(map(string), {}) })) default_cache_behavior = object({ target_origin_id = string viewer_protocol_policy = optional(string, "redirect-to-https") allowed_methods = optional(list(string), ["GET", "HEAD"]) cached_methods = optional(list(string), ["GET", "HEAD"]) cache_policy_id = optional(string, null) compress = optional(bool, true) ttl_min = optional(number, 0) ttl_default = optional(number, 86400) ttl_max = optional(number, 31536000) }) ordered_cache_behaviors = optional(list(object({ path_pattern = string target_origin_id = string viewer_protocol_policy = optional(string, "redirect-to-https") allowed_methods = optional(list(string), ["GET", "HEAD"]) cached_methods = optional(list(string), ["GET", "HEAD"]) cache_policy_id = optional(string, null) compress = optional(bool, true) ttl_min = optional(number, 0) ttl_default = optional(number, 86400) ttl_max = optional(number, 31536000) })), []) geo_restriction = optional(object({ restriction_type = optional(string, "none") locations = optional(list(string), []) }), { restriction_type = "none", locations = [] }) })) default = {} } variable "origin_access_controls" { description = "Map of Origin Access Controls for S3 origins" type = map(object({ name = string description = optional(string, "") origin_access_control_origin_type = optional(string, "s3") signing_behavior = optional(string, "always") signing_protocol = optional(string, "sigv4") })) default = {} } variable "tags" { description = "Resource tags to apply to all resources" type = map(string) default = {} }