diff --git a/docs/terraform.md b/docs/terraform.md index 4e9c4cbe..b699fe52 100644 --- a/docs/terraform.md +++ b/docs/terraform.md @@ -88,7 +88,7 @@ | [cors\_max\_age\_seconds](#input\_cors\_max\_age\_seconds) | Time in seconds that browser can cache the response for S3 bucket | `number` | `3600` | no | | [custom\_error\_response](#input\_custom\_error\_response) | List of one or more custom error response element maps |
list(object({
error_caching_min_ttl = string
error_code = string
response_code = string
response_page_path = string
}))
| `[]` | no | | [custom\_origin\_headers](#input\_custom\_origin\_headers) | A list of origin header parameters that will be sent to origin | `list(object({ name = string, value = string }))` | `[]` | no | -| [custom\_origins](#input\_custom\_origins) | A list of additional custom website [origins](https://www.terraform.io/docs/providers/aws/r/cloudfront_distribution.html#origin-arguments) for this distribution. |
list(object({
domain_name = string
origin_id = string
origin_path = string
custom_headers = list(object({
name = string
value = string
}))
custom_origin_config = object({
http_port = number
https_port = number
origin_protocol_policy = string
origin_ssl_protocols = list(string)
origin_keepalive_timeout = number
origin_read_timeout = number
})
}))
| `[]` | no | +| [custom\_origins](#input\_custom\_origins) | A list of additional custom website [origins](https://www.terraform.io/docs/providers/aws/r/cloudfront_distribution.html#origin-arguments) for this distribution. |
list(object({
domain_name = string
origin_id = string
origin_path = string
origin_access_control_id = string
custom_headers = list(object({
name = string
value = string
}))
custom_origin_config = object({
http_port = number
https_port = number
origin_protocol_policy = string
origin_ssl_protocols = list(string)
origin_keepalive_timeout = number
origin_read_timeout = number
})
}))
| `[]` | no | | [default\_root\_object](#input\_default\_root\_object) | Object that CloudFront return when requests the root URL | `string` | `"index.html"` | no | | [default\_ttl](#input\_default\_ttl) | Default amount of time (in seconds) that an object is in a CloudFront cache | `number` | `60` | no | | [delimiter](#input\_delimiter) | Delimiter to be used between ID elements.
Defaults to `-` (hyphen). Set to `""` to use no delimiter at all. | `string` | `null` | no | diff --git a/examples/complete/custom-origins.tf b/examples/complete/custom-origins.tf index 2bbeb5d5..f4bfe032 100644 --- a/examples/complete/custom-origins.tf +++ b/examples/complete/custom-origins.tf @@ -1,10 +1,13 @@ locals { additional_custom_origins_enabled = local.enabled && var.additional_custom_origins_enabled default_custom_origin_configuration = { - domain_name = null - origin_id = null - origin_path = null - custom_headers = [] + domain_name = null + origin_id = null + origin_path = null + # Example configuration with Origin Access Control for Lambda@Edge: + # origin_access_control_id = aws_cloudfront_origin_access_control.example.id + origin_access_control_id = null + custom_headers = [] custom_origin_config = { http_port = 80 https_port = 443 diff --git a/main.tf b/main.tf index 6a7cee4a..12d80708 100644 --- a/main.tf +++ b/main.tf @@ -551,9 +551,10 @@ resource "aws_cloudfront_distribution" "default" { dynamic "origin" { for_each = var.custom_origins content { - domain_name = origin.value.domain_name - origin_id = origin.value.origin_id - origin_path = lookup(origin.value, "origin_path", "") + domain_name = origin.value.domain_name + origin_id = origin.value.origin_id + origin_path = lookup(origin.value, "origin_path", "") + origin_access_control_id = lookup(origin.value, "origin_access_control_id", null) dynamic "custom_header" { for_each = lookup(origin.value, "custom_headers", []) content { diff --git a/variables.tf b/variables.tf index 0e5bf1a5..f0380952 100644 --- a/variables.tf +++ b/variables.tf @@ -446,9 +446,10 @@ variable "ordered_cache" { variable "custom_origins" { type = list(object({ - domain_name = string - origin_id = string - origin_path = string + domain_name = string + origin_id = string + origin_path = string + origin_access_control_id = optional(string) custom_headers = list(object({ name = string value = string @@ -465,6 +466,8 @@ variable "custom_origins" { default = [] description = <<-EOT A list of additional custom website [origins](https://www.terraform.io/docs/providers/aws/r/cloudfront_distribution.html#origin-arguments) for this distribution. + The `origin_access_control_id` field specifies the Origin Access Control configuration to use for this origin. + This is used to configure secure access between CloudFront and the origin. EOT }