Skip to content

Commit 0dd84a2

Browse files
authored
Merge pull request #18 from chris-qa-org/add-cloudfront-viewer-request-function
Add CloudFront viewer-request function
2 parents adef85b + 6e668b8 commit 0dd84a2

File tree

4 files changed

+29
-0
lines changed

4 files changed

+29
-0
lines changed

README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ Terraform module to host a static site generated by Publii
2626
|------|------|
2727
| [aws_cloudfront_distribution.frontend](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/cloudfront_distribution) | resource |
2828
| [aws_cloudfront_distribution.frontend_www_redirect](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/cloudfront_distribution) | resource |
29+
| [aws_cloudfront_function.frontend_viewer_request](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/cloudfront_function) | resource |
2930
| [aws_cloudfront_origin_access_identity.frontend](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/cloudfront_origin_access_identity) | resource |
3031
| [aws_cloudfront_origin_access_identity.frontend_www_redirect](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/cloudfront_origin_access_identity) | resource |
3132
| [aws_iam_policy.publii_s3_frontend](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/iam_policy) | resource |
@@ -58,6 +59,7 @@ Terraform module to host a static site generated by Publii
5859
| [aws_s3_bucket_website_configuration.frontend_www_redirect](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/s3_bucket_website_configuration) | resource |
5960
| [aws_wafv2_web_acl.cloudfront_waf](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/wafv2_web_acl) | resource |
6061
| [random_id.project](https://registry.terraform.io/providers/hashicorp/random/latest/docs/resources/id) | resource |
62+
| [template_file.cloudfront_frontend_viewer_request_function](https://registry.terraform.io/providers/hashicorp/template/latest/docs/data-sources/file) | data source |
6163
| [template_file.frontend_bucket_cloudfront_read](https://registry.terraform.io/providers/hashicorp/template/latest/docs/data-sources/file) | data source |
6264
| [template_file.frontend_bucket_enforce_tls_statement](https://registry.terraform.io/providers/hashicorp/template/latest/docs/data-sources/file) | data source |
6365
| [template_file.frontend_bucket_policy](https://registry.terraform.io/providers/hashicorp/template/latest/docs/data-sources/file) | data source |
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
data "template_file" "cloudfront_frontend_viewer_request_function" {
2+
template = file("${path.module}/cloudfront-functions/viewer-request.js")
3+
}
4+
5+
resource "aws_cloudfront_function" "frontend_viewer_request" {
6+
name = "frontend-viewer-request"
7+
runtime = "cloudfront-js-1.0"
8+
comment = "frontend viewer-request function"
9+
publish = true
10+
code = data.template_file.cloudfront_frontend_viewer_request_function.rendered
11+
}

cloudfront-frontend.tf

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,11 @@ resource "aws_cloudfront_distribution" "frontend" {
3838
compress = true
3939

4040
viewer_protocol_policy = "redirect-to-https"
41+
42+
function_association {
43+
event_type = "viewer-request"
44+
function_arn = aws_cloudfront_function.frontend_viewer_request.arn
45+
}
4146
}
4247

4348
default_root_object = "index.html"
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
function handler(event) {
2+
// default variables
3+
var req = event.request;
4+
var clientIp = event.viewer.ip;
5+
6+
// set true-client-ip header
7+
req.headers['true-client-ip'] = {value: clientIp};
8+
9+
// return request
10+
return req;
11+
}

0 commit comments

Comments
 (0)