Skip to content

Commit 634751f

Browse files
committed
Automated update of generated boilerplate by goldstack.party
1 parent 834442f commit 634751f

File tree

15 files changed

+213
-352
lines changed

15 files changed

+213
-352
lines changed

.pnp.cjs

Lines changed: 48 additions & 48 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.vscode/settings.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,5 +37,6 @@
3737
"editor.codeActionsOnSave": {
3838
"source.fixAll.biome": "explicit",
3939
"source.organizeImports.biome": "explicit"
40-
}
40+
},
41+
"open-in-external-terminal.additionalArgs": ["-w goldstack"]
4142
}

config/infra/aws/terraform.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@
22
"remoteState": [
33
{
44
"user": "goldstack-dev",
5-
"terraformStateBucket": "goldstack-tfstate-16524ba4adeb583108e73ff7acd7ac07fcf27788",
6-
"terraformStateDynamoDBTable": "goldstack-tfstate-16524ba4adeb583108e73ff7acd7ac07fcf27788-lock"
5+
"terraformStateBucket": "goldstack-tfstate-03b90ca07e220fc6042dd32d2efd2215565320a4",
6+
"terraformStateDynamoDBTable": "goldstack-tfstate-03b90ca07e220fc6042dd32d2efd2215565320a4-lock"
77
}
88
]
99
}

packages/app-nextjs-bootstrap-1/goldstack.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,10 @@
1111
"awsRegion": "us-west-2",
1212
"configuration": {
1313
"hostedZoneDomain": "dev.goldstack.party",
14-
"websiteDomain": "nextjsbootstrap-1769230720001.tests.dev.goldstack.party",
14+
"websiteDomain": "nextjsbootstrap-1769314078965.tests.dev.goldstack.party",
1515
"defaultCacheDuration": 10
1616
},
17-
"tfStateKey": "app-nextjs-bootstrap-1-prod-687cda9e062752ab7d0b.tfstate"
17+
"tfStateKey": "app-nextjs-bootstrap-1-prod-3183a0de70d060196e5a.tfstate"
1818
}
1919
]
2020
}

packages/app-nextjs-bootstrap-1/infra/aws/.terraform.lock.hcl

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 0 additions & 101 deletions
Original file line numberDiff line numberDiff line change
@@ -1,101 +0,0 @@
1-
resource "aws_iam_role" "lambda_exec" {
2-
name = "${var.website_domain}-edge"
3-
assume_role_policy = <<-EOF
4-
{
5-
"Version": "2012-10-17",
6-
"Statement": [
7-
{
8-
"Action": "sts:AssumeRole",
9-
"Principal": {
10-
"Service": [
11-
"lambda.amazonaws.com",
12-
"edgelambda.amazonaws.com"
13-
]
14-
},
15-
"Effect": "Allow",
16-
"Sid": ""
17-
}
18-
]
19-
}
20-
EOF
21-
22-
# tags = {
23-
# ManagedBy = "terraform"
24-
# Changed = formatdate("YYYY-MM-DD hh:mm ZZZ", timestamp())
25-
# }
26-
27-
# lifecycle {
28-
# ignore_changes = [tags]
29-
# }
30-
}
31-
32-
data "archive_file" "empty_lambda" {
33-
type = "zip"
34-
output_path = "${path.module}/empty_lambda.zip"
35-
36-
source {
37-
content = "exports.handler = function() { };"
38-
filename = "lambda.js"
39-
}
40-
}
41-
42-
resource "aws_cloudwatch_log_group" "edge" {
43-
provider = aws.us-east-1
44-
name = "/aws/lambda/${replace(var.website_domain, ".", "-")}-edge"
45-
retention_in_days = 30
46-
}
47-
48-
resource "aws_lambda_function" "edge" {
49-
provider = aws.us-east-1
50-
function_name = "${replace(var.website_domain, ".", "-")}-edge"
51-
description = "Edge Lambda for CloudFront Routing"
52-
filename = data.archive_file.empty_lambda.output_path
53-
handler = "lambda.handler"
54-
runtime = "nodejs20.x"
55-
role = aws_iam_role.lambda_exec.arn
56-
timeout = 30
57-
memory_size = 512
58-
publish = true
59-
60-
logging_config {
61-
log_format = "Text"
62-
log_group = aws_cloudwatch_log_group.edge.name
63-
}
64-
65-
lifecycle {
66-
ignore_changes = [
67-
filename,
68-
]
69-
}
70-
}
71-
72-
# Explicit roles to allow logging for Lambda. Not strictly required here due to the full admin access
73-
# granted in the lambda_admin_role_attach above. But added here to make it easier to fine-tune permissions
74-
# in the above at a later point.
75-
resource "aws_iam_policy" "lambda_logging" {
76-
name = "${var.website_domain}-edge-lambda-logging-role"
77-
path = "/"
78-
description = "IAM policy for logging from a lambda"
79-
80-
policy = <<EOF
81-
{
82-
"Version": "2012-10-17",
83-
"Statement": [
84-
{
85-
"Action": [
86-
"logs:CreateLogGroup",
87-
"logs:CreateLogStream",
88-
"logs:PutLogEvents"
89-
],
90-
"Resource": "arn:aws:logs:*:*:*",
91-
"Effect": "Allow"
92-
}
93-
]
94-
}
95-
EOF
96-
}
97-
98-
resource "aws_iam_role_policy_attachment" "edge_lambda_logs" {
99-
role = aws_iam_role.lambda_exec.name
100-
policy_arn = aws_iam_policy.lambda_logging.arn
101-
}

packages/app-nextjs-bootstrap-1/infra/aws/output.tf

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ output "website_cdn_root_id" {
33
value = aws_cloudfront_distribution.website_cdn_root.id
44
}
55

6-
output "edge_function_name" {
7-
description = "Lambda@Edge name for routing"
8-
value = aws_lambda_function.edge.function_name
9-
}
6+
output "routing_function_name" {
7+
description = "CloudFront Function name for routing"
8+
value = aws_cloudfront_function.routing.name
9+
}

packages/app-nextjs-bootstrap-1/infra/aws/redirect.tf

Lines changed: 35 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,13 @@
11

22
# Creates bucket for forward domain
33
resource "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+
2532
resource "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

3643
resource "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

4552
resource "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

5865
resource "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://)
104109
resource "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
171168
resource "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

Comments
 (0)