1+ locals {
2+ public_dir_with_leading_slash = " ${ length (var. public_dir ) > 0 ? " /${ var . public_dir } " : " " } "
3+ static_website_routing_rules = << EOF
4+ [{
5+ "Condition": {
6+ "KeyPrefixEquals": "${ var . public_dir } /${ var . public_dir } /"
7+ },
8+ "Redirect": {
9+ "Protocol": "https",
10+ "HostName": "${ var . domain_name } ",
11+ "ReplaceKeyPrefixWith": "",
12+ "HttpRedirectCode": "301"
13+ }
14+ }]
15+ EOF
16+ }
17+
118resource "aws_s3_bucket" "static_website" {
219 bucket = " ${ var . domain_name } "
320
421 website {
522 index_document = " index.html"
623 error_document = " error.html"
24+
25+ routing_rules = " ${ length (var. public_dir ) > 0 ? local . static_website_routing_rules : " " } "
726 }
827
928 tags = " ${ merge (map (" Name" , " ${ var . domain_name } -static_website" ), var. tags )} "
@@ -13,7 +32,7 @@ data "aws_iam_policy_document" "static_website_read_with_secret" {
1332 statement {
1433 sid = " 1"
1534 actions = [" s3:GetObject" ]
16- resources = [" ${ aws_s3_bucket . static_website . arn } ${ var . public_dir } /*" ]
35+ resources = [" ${ aws_s3_bucket . static_website . arn } ${ local . public_dir_with_leading_slash } /*" ]
1736
1837 principals {
1938 type = " AWS"
@@ -34,13 +53,13 @@ resource "aws_s3_bucket_policy" "static_website_read_with_secret" {
3453}
3554
3655locals {
37- s3_origin_id = " cloudfront-distribution-origin-${ var . domain_name } .s3.amazonaws.com${ var . public_dir } "
56+ s3_origin_id = " cloudfront-distribution-origin-${ var . domain_name } .s3.amazonaws.com${ local . public_dir_with_leading_slash } "
3857}
3958
4059resource "aws_cloudfront_distribution" "cdn" {
4160 origin {
4261 domain_name = " ${ aws_s3_bucket . static_website . website_endpoint } "
43- origin_path = " ${ var . public_dir } "
62+ origin_path = " ${ local . public_dir_with_leading_slash } "
4463 origin_id = " ${ local . s3_origin_id } "
4564
4665 custom_origin_config {
0 commit comments