@@ -100,10 +100,6 @@ resource "aws_cloudfront_distribution" "app_cloudfront_distribution" {
100
100
origin_protocol_policy = " https-only"
101
101
origin_ssl_protocols = [" TLSv1" , " TLSv1.1" , " TLSv1.2" ]
102
102
}
103
- custom_header {
104
- name = " X-Origin-Verify"
105
- value = var. OriginVerifyKey
106
- }
107
103
}
108
104
default_root_object = " index.html"
109
105
aliases = [var . CorePublicDomain ]
@@ -140,6 +136,10 @@ resource "aws_cloudfront_distribution" "app_cloudfront_distribution" {
140
136
cache_policy_id = aws_cloudfront_cache_policy. headers_no_cookies . id
141
137
origin_request_policy_id = " b689b0a8-53d0-40ab-baf2-68738e2966ac"
142
138
compress = true
139
+ function_association {
140
+ event_type = " viewer-request"
141
+ function_arn = aws_cloudfront_function. origin_key_injection . arn
142
+ }
143
143
}
144
144
ordered_cache_behavior {
145
145
path_pattern = " /api/v1/organizations"
@@ -150,6 +150,10 @@ resource "aws_cloudfront_distribution" "app_cloudfront_distribution" {
150
150
cache_policy_id = " 658327ea-f89d-4fab-a63d-7e88639e58f6"
151
151
origin_request_policy_id = " b689b0a8-53d0-40ab-baf2-68738e2966ac"
152
152
compress = true
153
+ function_association {
154
+ event_type = " viewer-request"
155
+ function_arn = aws_cloudfront_function. origin_key_injection . arn
156
+ }
153
157
}
154
158
ordered_cache_behavior {
155
159
path_pattern = " /api/*"
@@ -160,6 +164,10 @@ resource "aws_cloudfront_distribution" "app_cloudfront_distribution" {
160
164
cache_policy_id = aws_cloudfront_cache_policy. no_cache . id
161
165
origin_request_policy_id = " b689b0a8-53d0-40ab-baf2-68738e2966ac"
162
166
compress = true
167
+ function_association {
168
+ event_type = " viewer-request"
169
+ function_arn = aws_cloudfront_function. origin_key_injection . arn
170
+ }
163
171
}
164
172
price_class = " PriceClass_100"
165
173
}
@@ -176,10 +184,6 @@ resource "aws_cloudfront_distribution" "ical_cloudfront_distribution" {
176
184
origin_protocol_policy = " https-only"
177
185
origin_ssl_protocols = [" TLSv1" , " TLSv1.1" , " TLSv1.2" ]
178
186
}
179
- custom_header {
180
- name = " X-Origin-Verify"
181
- value = var. OriginVerifyKey
182
- }
183
187
}
184
188
aliases = [var . IcalPublicDomain ]
185
189
enabled = true
@@ -192,6 +196,10 @@ resource "aws_cloudfront_distribution" "ical_cloudfront_distribution" {
192
196
cached_methods = [" GET" , " HEAD" ]
193
197
cache_policy_id = aws_cloudfront_cache_policy. headers_no_cookies . id
194
198
origin_request_policy_id = " b689b0a8-53d0-40ab-baf2-68738e2966ac"
199
+ function_association {
200
+ event_type = " viewer-request"
201
+ function_arn = aws_cloudfront_function. origin_key_injection . arn
202
+ }
195
203
}
196
204
viewer_certificate {
197
205
acm_certificate_arn = var. CoreCertificateArn
@@ -206,6 +214,19 @@ resource "aws_cloudfront_distribution" "ical_cloudfront_distribution" {
206
214
price_class = " PriceClass_100"
207
215
}
208
216
217
+ resource "aws_cloudfront_function" "origin_key_injection" {
218
+ name = " ${ var . ProjectId } -origin-verification-injection"
219
+ comment = " Injects origin verification key into requests"
220
+ runtime = " cloudfront-js-2.0"
221
+ code = << EOT
222
+ function handler(event) {
223
+ var request = event.request;
224
+ request.headers['x-origin-verify'] = { value: "${ var . OriginVerifyKey } " };
225
+ return request;
226
+ }
227
+ EOT
228
+ }
229
+
209
230
resource "aws_cloudfront_function" "core_frontend_redirect" {
210
231
name = " ${ var . ProjectId } -spa-rewrite"
211
232
comment = " Handles SPA routing by rewriting URIs to index.html"
0 commit comments