Skip to content

Commit 3c535ef

Browse files
committed
feat(static-site): cors config
1 parent caef280 commit 3c535ef

3 files changed

Lines changed: 42 additions & 4 deletions

File tree

static-site/README.md

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,21 +16,29 @@ See `variables.tf` for the full argument reference.
1616

1717
```hcl
1818
module "static_site" {
19-
source = "github.com/script47/aws-tf-modules/static-site"
19+
source = "github.com/script47/aws-tf-modules/static-site"
2020
2121
bucket_name = "example.org"
2222
hosted_zone = "my-hosted-zone"
23-
domains = ["example.org"]
23+
domains = ["example.org"]
2424
2525
geo_restriction = {
26-
type = "none"
26+
type = "none"
2727
locations = []
2828
}
2929
3030
viewer_certificate = {
3131
minimum_protocol_version = "TLSv1.2_2025"
3232
}
3333
34+
cors_config = {
35+
access_control_allow_credentials = false
36+
access_control_allow_headers = ["*"]
37+
access_control_allow_methods = ["GET", "HEAD", "OPTIONS"]
38+
access_control_allow_origins = ["*"]
39+
origin_override = true
40+
}
41+
3442
tags = {
3543
Project = "my-project"
3644
Service = "my-service"

static-site/cloudfront.tf

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,24 @@ resource "aws_cloudfront_response_headers_policy" "cloudfront" {
7979
name = "cf-resp-hdrs-${local.primary_domain_normalised}"
8080
comment = "Response headers policy for ${local.primary_domain}"
8181

82+
cors_config {
83+
access_control_allow_credentials = var.cors_config.access_control_allow_credentials
84+
85+
access_control_allow_headers {
86+
items = var.cors_config.access_control_allow_headers
87+
}
88+
89+
access_control_allow_methods {
90+
items = var.cors_config.access_control_allow_methods
91+
}
92+
93+
access_control_allow_origins {
94+
items = var.cors_config.access_control_allow_origins
95+
}
96+
97+
origin_override = var.cors_config.origin_override
98+
}
99+
82100
security_headers_config {
83101
content_type_options {
84102
override = true
@@ -102,4 +120,4 @@ resource "aws_cloudfront_response_headers_policy" "cloudfront" {
102120
}
103121

104122
provider = aws.default
105-
}
123+
}

static-site/variables.tf

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,18 @@ variable "viewer_certificate" {
4242
description = "Viewer certificate configuration for the CloudFront distribution"
4343
}
4444

45+
variable "cors_config" {
46+
description = "Optional CORS configuration for CloudFront response headers policy"
47+
type = object({
48+
access_control_allow_credentials = optional(bool, false)
49+
access_control_allow_headers = optional(list(string), ["*"])
50+
access_control_allow_methods = optional(list(string), ["GET", "HEAD", "OPTIONS"])
51+
access_control_allow_origins = optional(list(string), ["*"])
52+
origin_override = optional(bool, true)
53+
})
54+
default = {}
55+
}
56+
4557
variable "tags" {
4658
type = map(string)
4759
description = "The tags to apply to all resources created"

0 commit comments

Comments
 (0)