11
22# Creates bucket for forward domain
33resource "aws_s3_bucket" "website_redirect" {
4- count = var. website_domain_redirect != null ? 1 : 0
4+ count = var. website_domain_redirect != null ? 1 : 0
55
66 bucket = " ${ var . website_domain } -redirect"
77
88 # Remove this line if you want to prevent accidential deletion of bucket
99 force_destroy = true
1010
11- website {
12- redirect_all_requests_to = " https://${ var . website_domain } "
13- }
14-
1511 tags = {
1612 ManagedBy = " terraform"
1713 Changed = formatdate (" YYYY-MM-DD hh:mm ZZZ" , timestamp ())
@@ -22,8 +18,19 @@ resource "aws_s3_bucket" "website_redirect" {
2218 }
2319}
2420
21+ resource "aws_s3_bucket_website_configuration" "website_redirect" {
22+ count = var. website_domain_redirect != null ? 1 : 0
23+
24+ bucket = aws_s3_bucket. website_redirect [0 ]. id
25+
26+ redirect_all_requests_to {
27+ host_name = var. website_domain
28+ protocol = " https"
29+ }
30+ }
31+
2532resource "aws_s3_bucket_public_access_block" "website_redirect" {
26- count = var. website_domain_redirect != null ? 1 : 0
33+ count = var. website_domain_redirect != null ? 1 : 0
2734
2835 bucket = aws_s3_bucket. website_redirect [0 ]. id
2936
@@ -34,7 +41,7 @@ resource "aws_s3_bucket_public_access_block" "website_redirect" {
3441}
3542
3643resource "aws_s3_bucket_ownership_controls" "website_redirect" {
37- count = var. website_domain_redirect != null ? 1 : 0
44+ count = var. website_domain_redirect != null ? 1 : 0
3845
3946 bucket = aws_s3_bucket. website_redirect [0 ]. id
4047 rule {
@@ -43,11 +50,11 @@ resource "aws_s3_bucket_ownership_controls" "website_redirect" {
4350}
4451
4552resource "aws_s3_bucket_acl" "website_redirect" {
46- count = var. website_domain_redirect != null ? 1 : 0
53+ count = var. website_domain_redirect != null ? 1 : 0
4754
4855 depends_on = [
49- aws_s3_bucket_public_access_block . website_redirect ,
50- aws_s3_bucket_ownership_controls . website_redirect ,
56+ aws_s3_bucket_public_access_block . website_redirect ,
57+ aws_s3_bucket_ownership_controls . website_redirect ,
5158 ]
5259
5360 bucket = aws_s3_bucket. website_redirect [0 ]. id
@@ -56,11 +63,11 @@ resource "aws_s3_bucket_acl" "website_redirect" {
5663}
5764
5865resource "aws_s3_bucket_policy" "website_redirect" {
59- count = var. website_domain_redirect != null ? 1 : 0
66+ count = var. website_domain_redirect != null ? 1 : 0
6067
6168 depends_on = [
62- aws_s3_bucket_public_access_block . website_redirect ,
63- aws_s3_bucket_ownership_controls . website_redirect ,
69+ aws_s3_bucket_public_access_block . website_redirect ,
70+ aws_s3_bucket_ownership_controls . website_redirect ,
6471 ]
6572
6673 bucket = aws_s3_bucket. website_redirect [0 ]. id
@@ -78,31 +85,29 @@ data "aws_iam_policy_document" "website_redirect" {
7885 " s3:GetObject" ,
7986 ]
8087
81- resources = [
88+ resources = [
8289 " arn:aws:s3:::${ var . website_domain } -redirect/*"
8390 ]
8491 }
8592}
8693
8794
88- resource "aws_s3_bucket_object " "redirect_file" {
89- count = var. website_domain_redirect != null ? 1 : 0
95+ resource "aws_s3_object " "redirect_file" {
96+ count = var. website_domain_redirect != null ? 1 : 0
9097
9198 key = " index.html"
9299 bucket = aws_s3_bucket. website_redirect [0 ]. bucket
93100 content = " Redirect placeholder."
94101
95- content_type = " text/html"
102+ content_type = " text/html"
96103 website_redirect = " https://${ var . website_domain } /"
97104
98105 force_destroy = true
99106}
100107
101-
102-
103108# CloudFront for redirect (to support https://)
104109resource "aws_cloudfront_distribution" "website_cdn_redirect" {
105- count = var. website_domain_redirect != null ? 1 : 0
110+ count = var. website_domain_redirect != null ? 1 : 0
106111
107112 depends_on = [
108113 ]
@@ -113,33 +118,25 @@ resource "aws_cloudfront_distribution" "website_cdn_redirect" {
113118
114119 origin {
115120 origin_id = " origin-bucket-${ aws_s3_bucket . website_redirect [0 ]. id } "
116- domain_name = aws_s3_bucket . website_redirect [0 ]. website_endpoint
121+ domain_name = aws_s3_bucket_website_configuration . website_redirect [0 ]. website_endpoint
117122
118123 custom_origin_config {
119- http_port = 80
120- https_port = 443
124+ http_port = 80
125+ https_port = 443
121126 origin_protocol_policy = " http-only"
122- origin_ssl_protocols = [" TLSv1.2" ]
127+ origin_ssl_protocols = [" TLSv1.2" ]
123128 }
124129 }
125130
126131 default_cache_behavior {
127132 allowed_methods = [" GET" , " HEAD" , " OPTIONS" , " PATCH" , " POST" , " PUT" , " DELETE" ]
128133 cached_methods = [" GET" , " HEAD" ]
129134 target_origin_id = " origin-bucket-${ aws_s3_bucket . website_redirect [0 ]. id } "
130- min_ttl = " 0"
131- default_ttl = tostring (var. default_cache_duration )
132- max_ttl = " 1200"
133-
134- viewer_protocol_policy = " redirect-to-https" # Redirects any HTTP request to HTTPS
135- compress = true
136-
137- forwarded_values {
138- query_string = false
139- cookies {
140- forward = " none"
141- }
142- }
135+
136+ viewer_protocol_policy = " redirect-to-https" # Redirects any HTTP request to HTTPS
137+ compress = true
138+ cache_policy_id = " 4135ea2d-6df8-44a3-9df3-4b5a84be39ad" # CachingDisabled
139+ origin_request_policy_id = " 88a5eaf4-2fd4-4709-b84d-a0c0ba98654c" # CORS-S3Origin
143140
144141 }
145142
@@ -169,7 +166,7 @@ resource "aws_cloudfront_distribution" "website_cdn_redirect" {
169166
170167# Creates record to point to redirect CloudFront distribution
171168resource "aws_route53_record" "website_cdn_redirect_record" {
172- count = var. website_domain_redirect != null ? 1 : 0
169+ count = var. website_domain_redirect != null ? 1 : 0
173170
174171 zone_id = data. aws_route53_zone . main . zone_id
175172 name = var. website_domain_redirect
@@ -181,4 +178,3 @@ resource "aws_route53_record" "website_cdn_redirect_record" {
181178 evaluate_target_health = false
182179 }
183180}
184-
0 commit comments