@aws/nx-plugin 1.0.0-rc.82 → 1.0.0-rc.84
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/migrations.json +41 -1
- package/package.json +1 -1
- package/src/agentcore-gateway/__snapshots__/generator.spec.ts.snap +51 -2
- package/src/agentcore-gateway/generator.d.ts +7 -6
- package/src/agentcore-gateway/generator.js +2 -12
- package/src/agentcore-gateway/generator.js.map +1 -1
- package/src/agentcore-harness/__snapshots__/generator.spec.ts.snap +4 -5
- package/src/agentcore-harness/files/project/README.md.template +4 -5
- package/src/migrations/latest/agentcore-harness-no-tools-by-default/__snapshots__/migration.spec.ts.snap +79 -0
- package/src/migrations/latest/agentcore-harness-no-tools-by-default/metadata.json +3 -0
- package/src/migrations/latest/agentcore-harness-no-tools-by-default/migration.d.ts +6 -0
- package/src/migrations/latest/agentcore-harness-no-tools-by-default/migration.js +87 -0
- package/src/migrations/latest/agentcore-harness-no-tools-by-default/migration.js.map +1 -0
- package/src/migrations/latest/dynamodb-terraform-app-module-outputs/metadata.json +3 -0
- package/src/migrations/latest/dynamodb-terraform-app-module-outputs/migration.d.ts +6 -0
- package/src/migrations/latest/dynamodb-terraform-app-module-outputs/migration.js +69 -0
- package/src/migrations/latest/dynamodb-terraform-app-module-outputs/migration.js.map +1 -0
- package/src/migrations/latest/rdb-terraform-aurora-app-module-defaults/__snapshots__/migration.spec.ts.snap +54 -0
- package/src/migrations/latest/rdb-terraform-aurora-app-module-defaults/metadata.json +3 -0
- package/src/migrations/latest/rdb-terraform-aurora-app-module-defaults/migration.d.ts +6 -0
- package/src/migrations/latest/rdb-terraform-aurora-app-module-defaults/migration.js +86 -0
- package/src/migrations/latest/rdb-terraform-aurora-app-module-defaults/migration.js.map +1 -0
- package/src/migrations/latest/terraform-data-resource-destroy-protection/__snapshots__/migration.spec.ts.snap +75 -0
- package/src/migrations/latest/terraform-data-resource-destroy-protection/metadata.json +3 -0
- package/src/migrations/latest/terraform-data-resource-destroy-protection/migration.d.ts +6 -0
- package/src/migrations/latest/terraform-data-resource-destroy-protection/migration.js +78 -0
- package/src/migrations/latest/terraform-data-resource-destroy-protection/migration.js.map +1 -0
- package/src/migrations/latest/terraform-declare-used-providers/metadata.json +3 -0
- package/src/migrations/latest/terraform-declare-used-providers/migration.d.ts +6 -0
- package/src/migrations/latest/terraform-declare-used-providers/migration.js +147 -0
- package/src/migrations/latest/terraform-declare-used-providers/migration.js.map +1 -0
- package/src/migrations/latest/terraform-gateway-cedar-render-root-ejs/metadata.json +3 -0
- package/src/migrations/latest/terraform-gateway-cedar-render-root-ejs/migration.d.ts +6 -0
- package/src/migrations/latest/terraform-gateway-cedar-render-root-ejs/migration.js +38 -0
- package/src/migrations/latest/terraform-gateway-cedar-render-root-ejs/migration.js.map +1 -0
- package/src/migrations/latest/terraform-harness-vpc-role-and-memory-grant/__snapshots__/migration.spec.ts.snap +521 -0
- package/src/migrations/latest/terraform-harness-vpc-role-and-memory-grant/metadata.json +3 -0
- package/src/migrations/latest/terraform-harness-vpc-role-and-memory-grant/migration.d.ts +6 -0
- package/src/migrations/latest/terraform-harness-vpc-role-and-memory-grant/migration.js +504 -0
- package/src/migrations/latest/terraform-harness-vpc-role-and-memory-grant/migration.js.map +1 -0
- package/src/migrations/latest/waf-log-group-cmk-encryption/__snapshots__/migration.spec.ts.snap +286 -0
- package/src/migrations/latest/waf-log-group-cmk-encryption/metadata.json +3 -0
- package/src/migrations/latest/waf-log-group-cmk-encryption/migration.d.ts +6 -0
- package/src/migrations/latest/waf-log-group-cmk-encryption/migration.js +238 -0
- package/src/migrations/latest/waf-log-group-cmk-encryption/migration.js.map +1 -0
- package/src/py/agent/__snapshots__/generator.protocols.spec.ts.snap +12 -0
- package/src/py/dynamodb/__snapshots__/generator.spec.ts.snap +21 -0
- package/src/py/fast-api/__snapshots__/generator.terraform.spec.ts.snap +231 -24
- package/src/py/lambda-function/__snapshots__/generator.spec.ts.snap +8 -0
- package/src/py/mcp-server/__snapshots__/generator.spec.ts.snap +4 -0
- package/src/py/rdb/__snapshots__/generator.spec.ts.snap +31 -2
- package/src/smithy/ts/api/__snapshots__/generator.spec.ts.snap +216 -25
- package/src/terraform/project/files/application/bootstrap/providers.tf.template +9 -0
- package/src/terraform/project/files/application/src/providers.tf.template +4 -0
- package/src/terraform/project/files/library/src/main.tf.template +9 -0
- package/src/trpc/backend/__snapshots__/generator.spec.ts.snap +231 -24
- package/src/ts/agent/__snapshots__/generator.spec.ts.snap +8 -0
- package/src/ts/dcr-proxy/__snapshots__/generator.spec.ts.snap +4 -0
- package/src/ts/dynamodb/__snapshots__/generator.spec.ts.snap +21 -0
- package/src/ts/lambda-function/__snapshots__/generator.spec.ts.snap +8 -0
- package/src/ts/mcp-server/__snapshots__/generator.spec.ts.snap +4 -0
- package/src/ts/rdb/__snapshots__/generator.spec.ts.snap +74 -4
- package/src/ts/react-website/app/__snapshots__/generator.spec.ts.snap +4 -0
- package/src/ts/react-website/cognito-auth/__snapshots__/generator.spec.ts.snap +35 -8
- package/src/ts/react-website/cognito-auth/__snapshots__/generator.terraform.spec.ts.snap +4 -0
- package/src/utils/agent-core-constructs/agent-core-constructs.d.ts +9 -2
- package/src/utils/agent-core-constructs/agent-core-constructs.js +22 -8
- package/src/utils/agent-core-constructs/agent-core-constructs.js.map +1 -1
- package/src/utils/agent-core-constructs/files/cdk/app/agentcore-harness/__nameKebabCase__/__nameKebabCase__.ts.template +39 -1
- package/src/utils/agent-core-constructs/files/terraform/app/agent-core/__nameKebabCase__/__nameKebabCase__.tf.template +8 -1
- package/src/utils/agent-core-constructs/files/terraform/app/agentcore-gateway/__nameKebabCase__/__nameKebabCase__.tf.template +57 -2
- package/src/utils/agent-core-constructs/files/terraform/app/agentcore-harness/__nameKebabCase__/__nameKebabCase__.tf.template +258 -24
- package/src/utils/agent-core-constructs/files/terraform/core/agent-core/runtime.tf.template +4 -0
- package/src/utils/api-constructs/files/terraform/app/apis/http/__apiNameKebabCase__/__apiNameKebabCase__.tf.template +8 -0
- package/src/utils/api-constructs/files/terraform/app/apis/rest/__apiNameKebabCase__/__apiNameKebabCase__.tf.template +9 -1
- package/src/utils/api-constructs/files/terraform/core/api/rest/rest-api/rest-api.tf.template +60 -7
- package/src/utils/dcr-proxy-constructs/files/terraform/app/dcr-proxies/__nameKebabCase__/__nameKebabCase__.tf.template +4 -0
- package/src/utils/dynamodb-constructs/files/terraform/app/dynamodb/__nameKebabCase__/__nameKebabCase__.tf.template +15 -0
- package/src/utils/dynamodb-constructs/files/terraform/core/dynamodb/dynamodb.tf.template +6 -0
- package/src/utils/files/terraform/src/metrics/providers.tf.template +12 -0
- package/src/utils/function-constructs/files/terraform/app/lambda-functions/__nameKebabCase__/__nameKebabCase__.tf.template +4 -0
- package/src/utils/identity-constructs/files/cdk/core/user-identity.ts.template +33 -8
- package/src/utils/identity-constructs/files/terraform/core/user-identity/add-callback-url/add-callback-url.tf.template +4 -0
- package/src/utils/identity-constructs/files/terraform/core/user-identity/identity/identity.tf.template +51 -2
- package/src/utils/rdb-constructs/files/cdk/core/rdb/aurora.ts.template +18 -0
- package/src/utils/rdb-constructs/files/terraform/app/dbs/__nameKebabCase__/__nameKebabCase__.tf.template +15 -4
- package/src/utils/rdb-constructs/files/terraform/core/rdb/aurora/aurora.tf.template +8 -2
- package/src/utils/rdb-constructs/rdb-constructs.d.ts +12 -0
- package/src/utils/rdb-constructs/rdb-constructs.js +24 -3
- package/src/utils/rdb-constructs/rdb-constructs.js.map +1 -1
- package/src/utils/shared-constructs-constants.d.ts +5 -0
- package/src/utils/shared-constructs-constants.js +4 -0
- package/src/utils/shared-constructs-constants.js.map +1 -1
- package/src/utils/website-constructs/files/terraform/core/static-website/static-website.tf.template +4 -0
|
@@ -606,22 +606,75 @@ resource "aws_wafv2_web_acl" "api_waf" {
|
|
|
606
606
|
}
|
|
607
607
|
}
|
|
608
608
|
|
|
609
|
+
resource "random_id" "waf_log_suffix" {
|
|
610
|
+
count = var.enable_waf ? 1 : 0
|
|
611
|
+
byte_length = 4
|
|
612
|
+
}
|
|
613
|
+
|
|
614
|
+
locals {
|
|
615
|
+
waf_log_group_name = var.enable_waf ? "aws-waf-logs-\${var.api_name}-\${random_id.waf_log_suffix[0].hex}" : null
|
|
616
|
+
}
|
|
617
|
+
|
|
618
|
+
# KMS key for encrypting WAF request logs at rest
|
|
619
|
+
resource "aws_kms_key" "waf_logs" {
|
|
620
|
+
count = var.enable_waf ? 1 : 0
|
|
621
|
+
|
|
622
|
+
description = "\${var.api_name} API WAF log encryption"
|
|
623
|
+
deletion_window_in_days = 7
|
|
624
|
+
enable_key_rotation = true
|
|
625
|
+
|
|
626
|
+
policy = jsonencode({
|
|
627
|
+
Version = "2012-10-17"
|
|
628
|
+
Statement = [
|
|
629
|
+
{
|
|
630
|
+
Sid = "Enable IAM User Permissions"
|
|
631
|
+
Effect = "Allow"
|
|
632
|
+
Principal = { AWS = "arn:aws:iam::\${data.aws_caller_identity.current.account_id}:root" }
|
|
633
|
+
Action = "kms:*"
|
|
634
|
+
Resource = "*"
|
|
635
|
+
},
|
|
636
|
+
{
|
|
637
|
+
Sid = "Allow CloudWatch Logs"
|
|
638
|
+
Effect = "Allow"
|
|
639
|
+
Principal = { Service = "logs.\${data.aws_region.current.region}.amazonaws.com" }
|
|
640
|
+
Action = [
|
|
641
|
+
"kms:Encrypt",
|
|
642
|
+
"kms:Decrypt",
|
|
643
|
+
"kms:ReEncrypt*",
|
|
644
|
+
"kms:GenerateDataKey*",
|
|
645
|
+
"kms:DescribeKey"
|
|
646
|
+
]
|
|
647
|
+
Resource = "*"
|
|
648
|
+
Condition = {
|
|
649
|
+
ArnEquals = {
|
|
650
|
+
"kms:EncryptionContext:aws:logs:arn" = "arn:aws:logs:\${data.aws_region.current.region}:\${data.aws_caller_identity.current.account_id}:log-group:\${local.waf_log_group_name}"
|
|
651
|
+
}
|
|
652
|
+
}
|
|
653
|
+
}
|
|
654
|
+
]
|
|
655
|
+
})
|
|
656
|
+
|
|
657
|
+
tags = var.tags
|
|
658
|
+
}
|
|
659
|
+
|
|
660
|
+
resource "aws_kms_alias" "waf_logs" {
|
|
661
|
+
count = var.enable_waf ? 1 : 0
|
|
662
|
+
|
|
663
|
+
name = "alias/\${var.api_name}-\${random_id.waf_log_suffix[0].hex}-waf-logs"
|
|
664
|
+
target_key_id = aws_kms_key.waf_logs[0].key_id
|
|
665
|
+
}
|
|
666
|
+
|
|
609
667
|
# CloudWatch Log Group for WAF request logs. Name must start with \`aws-waf-logs-\`.
|
|
610
668
|
resource "aws_cloudwatch_log_group" "api_waf_logs" {
|
|
611
|
-
#checkov:skip=CKV_AWS_158:Using default CloudWatch log encryption
|
|
612
669
|
#checkov:skip=CKV_AWS_338:Log retention set to one month which is sufficient for WAF logs
|
|
613
670
|
count = var.enable_waf ? 1 : 0
|
|
614
671
|
|
|
615
|
-
name =
|
|
672
|
+
name = local.waf_log_group_name
|
|
616
673
|
retention_in_days = 30
|
|
674
|
+
kms_key_id = aws_kms_key.waf_logs[0].arn
|
|
617
675
|
tags = var.tags
|
|
618
676
|
}
|
|
619
677
|
|
|
620
|
-
resource "random_id" "waf_log_suffix" {
|
|
621
|
-
count = var.enable_waf ? 1 : 0
|
|
622
|
-
byte_length = 4
|
|
623
|
-
}
|
|
624
|
-
|
|
625
678
|
resource "aws_wafv2_web_acl_logging_configuration" "api_waf_logging" {
|
|
626
679
|
count = var.enable_waf ? 1 : 0
|
|
627
680
|
|
|
@@ -670,10 +723,18 @@ exports[`tsSmithyApiGenerator > should generate smithy ts api with Terraform pro
|
|
|
670
723
|
required_version = ">= 1.0"
|
|
671
724
|
|
|
672
725
|
required_providers {
|
|
726
|
+
archive = {
|
|
727
|
+
source = "hashicorp/archive"
|
|
728
|
+
version = "2.8.0"
|
|
729
|
+
}
|
|
673
730
|
aws = {
|
|
674
731
|
source = "hashicorp/aws"
|
|
675
732
|
version = "6.61.0"
|
|
676
733
|
}
|
|
734
|
+
random = {
|
|
735
|
+
source = "hashicorp/random"
|
|
736
|
+
version = "3.9.0"
|
|
737
|
+
}
|
|
677
738
|
}
|
|
678
739
|
}
|
|
679
740
|
|
|
@@ -1317,7 +1378,7 @@ module "add_url_to_runtime_config" {
|
|
|
1317
1378
|
|
|
1318
1379
|
namespace = "connection"
|
|
1319
1380
|
key = "apis"
|
|
1320
|
-
value = { "TestApi" = aws_api_gateway_stage.api_stage.invoke_url }
|
|
1381
|
+
value = { "TestApi" = "\${aws_api_gateway_stage.api_stage.invoke_url}/" }
|
|
1321
1382
|
|
|
1322
1383
|
depends_on = [aws_api_gateway_stage.api_stage]
|
|
1323
1384
|
}
|
|
@@ -2097,22 +2158,75 @@ resource "aws_wafv2_web_acl" "api_waf" {
|
|
|
2097
2158
|
}
|
|
2098
2159
|
}
|
|
2099
2160
|
|
|
2161
|
+
resource "random_id" "waf_log_suffix" {
|
|
2162
|
+
count = var.enable_waf ? 1 : 0
|
|
2163
|
+
byte_length = 4
|
|
2164
|
+
}
|
|
2165
|
+
|
|
2166
|
+
locals {
|
|
2167
|
+
waf_log_group_name = var.enable_waf ? "aws-waf-logs-\${var.api_name}-\${random_id.waf_log_suffix[0].hex}" : null
|
|
2168
|
+
}
|
|
2169
|
+
|
|
2170
|
+
# KMS key for encrypting WAF request logs at rest
|
|
2171
|
+
resource "aws_kms_key" "waf_logs" {
|
|
2172
|
+
count = var.enable_waf ? 1 : 0
|
|
2173
|
+
|
|
2174
|
+
description = "\${var.api_name} API WAF log encryption"
|
|
2175
|
+
deletion_window_in_days = 7
|
|
2176
|
+
enable_key_rotation = true
|
|
2177
|
+
|
|
2178
|
+
policy = jsonencode({
|
|
2179
|
+
Version = "2012-10-17"
|
|
2180
|
+
Statement = [
|
|
2181
|
+
{
|
|
2182
|
+
Sid = "Enable IAM User Permissions"
|
|
2183
|
+
Effect = "Allow"
|
|
2184
|
+
Principal = { AWS = "arn:aws:iam::\${data.aws_caller_identity.current.account_id}:root" }
|
|
2185
|
+
Action = "kms:*"
|
|
2186
|
+
Resource = "*"
|
|
2187
|
+
},
|
|
2188
|
+
{
|
|
2189
|
+
Sid = "Allow CloudWatch Logs"
|
|
2190
|
+
Effect = "Allow"
|
|
2191
|
+
Principal = { Service = "logs.\${data.aws_region.current.region}.amazonaws.com" }
|
|
2192
|
+
Action = [
|
|
2193
|
+
"kms:Encrypt",
|
|
2194
|
+
"kms:Decrypt",
|
|
2195
|
+
"kms:ReEncrypt*",
|
|
2196
|
+
"kms:GenerateDataKey*",
|
|
2197
|
+
"kms:DescribeKey"
|
|
2198
|
+
]
|
|
2199
|
+
Resource = "*"
|
|
2200
|
+
Condition = {
|
|
2201
|
+
ArnEquals = {
|
|
2202
|
+
"kms:EncryptionContext:aws:logs:arn" = "arn:aws:logs:\${data.aws_region.current.region}:\${data.aws_caller_identity.current.account_id}:log-group:\${local.waf_log_group_name}"
|
|
2203
|
+
}
|
|
2204
|
+
}
|
|
2205
|
+
}
|
|
2206
|
+
]
|
|
2207
|
+
})
|
|
2208
|
+
|
|
2209
|
+
tags = var.tags
|
|
2210
|
+
}
|
|
2211
|
+
|
|
2212
|
+
resource "aws_kms_alias" "waf_logs" {
|
|
2213
|
+
count = var.enable_waf ? 1 : 0
|
|
2214
|
+
|
|
2215
|
+
name = "alias/\${var.api_name}-\${random_id.waf_log_suffix[0].hex}-waf-logs"
|
|
2216
|
+
target_key_id = aws_kms_key.waf_logs[0].key_id
|
|
2217
|
+
}
|
|
2218
|
+
|
|
2100
2219
|
# CloudWatch Log Group for WAF request logs. Name must start with \`aws-waf-logs-\`.
|
|
2101
2220
|
resource "aws_cloudwatch_log_group" "api_waf_logs" {
|
|
2102
|
-
#checkov:skip=CKV_AWS_158:Using default CloudWatch log encryption
|
|
2103
2221
|
#checkov:skip=CKV_AWS_338:Log retention set to one month which is sufficient for WAF logs
|
|
2104
2222
|
count = var.enable_waf ? 1 : 0
|
|
2105
2223
|
|
|
2106
|
-
name =
|
|
2224
|
+
name = local.waf_log_group_name
|
|
2107
2225
|
retention_in_days = 30
|
|
2226
|
+
kms_key_id = aws_kms_key.waf_logs[0].arn
|
|
2108
2227
|
tags = var.tags
|
|
2109
2228
|
}
|
|
2110
2229
|
|
|
2111
|
-
resource "random_id" "waf_log_suffix" {
|
|
2112
|
-
count = var.enable_waf ? 1 : 0
|
|
2113
|
-
byte_length = 4
|
|
2114
|
-
}
|
|
2115
|
-
|
|
2116
2230
|
resource "aws_wafv2_web_acl_logging_configuration" "api_waf_logging" {
|
|
2117
2231
|
count = var.enable_waf ? 1 : 0
|
|
2118
2232
|
|
|
@@ -2158,10 +2272,18 @@ output "waf_web_acl_arn" {
|
|
|
2158
2272
|
required_version = ">= 1.0"
|
|
2159
2273
|
|
|
2160
2274
|
required_providers {
|
|
2275
|
+
archive = {
|
|
2276
|
+
source = "hashicorp/archive"
|
|
2277
|
+
version = "2.8.0"
|
|
2278
|
+
}
|
|
2161
2279
|
aws = {
|
|
2162
2280
|
source = "hashicorp/aws"
|
|
2163
2281
|
version = "6.61.0"
|
|
2164
2282
|
}
|
|
2283
|
+
random = {
|
|
2284
|
+
source = "hashicorp/random"
|
|
2285
|
+
version = "3.9.0"
|
|
2286
|
+
}
|
|
2165
2287
|
}
|
|
2166
2288
|
}
|
|
2167
2289
|
|
|
@@ -2733,7 +2855,7 @@ module "add_url_to_runtime_config" {
|
|
|
2733
2855
|
|
|
2734
2856
|
namespace = "connection"
|
|
2735
2857
|
key = "apis"
|
|
2736
|
-
value = { "TestApi" = aws_api_gateway_stage.api_stage.invoke_url }
|
|
2858
|
+
value = { "TestApi" = "\${aws_api_gateway_stage.api_stage.invoke_url}/" }
|
|
2737
2859
|
|
|
2738
2860
|
depends_on = [aws_api_gateway_stage.api_stage]
|
|
2739
2861
|
}
|
|
@@ -3072,22 +3194,75 @@ resource "aws_wafv2_web_acl" "api_waf" {
|
|
|
3072
3194
|
}
|
|
3073
3195
|
}
|
|
3074
3196
|
|
|
3197
|
+
resource "random_id" "waf_log_suffix" {
|
|
3198
|
+
count = var.enable_waf ? 1 : 0
|
|
3199
|
+
byte_length = 4
|
|
3200
|
+
}
|
|
3201
|
+
|
|
3202
|
+
locals {
|
|
3203
|
+
waf_log_group_name = var.enable_waf ? "aws-waf-logs-\${var.api_name}-\${random_id.waf_log_suffix[0].hex}" : null
|
|
3204
|
+
}
|
|
3205
|
+
|
|
3206
|
+
# KMS key for encrypting WAF request logs at rest
|
|
3207
|
+
resource "aws_kms_key" "waf_logs" {
|
|
3208
|
+
count = var.enable_waf ? 1 : 0
|
|
3209
|
+
|
|
3210
|
+
description = "\${var.api_name} API WAF log encryption"
|
|
3211
|
+
deletion_window_in_days = 7
|
|
3212
|
+
enable_key_rotation = true
|
|
3213
|
+
|
|
3214
|
+
policy = jsonencode({
|
|
3215
|
+
Version = "2012-10-17"
|
|
3216
|
+
Statement = [
|
|
3217
|
+
{
|
|
3218
|
+
Sid = "Enable IAM User Permissions"
|
|
3219
|
+
Effect = "Allow"
|
|
3220
|
+
Principal = { AWS = "arn:aws:iam::\${data.aws_caller_identity.current.account_id}:root" }
|
|
3221
|
+
Action = "kms:*"
|
|
3222
|
+
Resource = "*"
|
|
3223
|
+
},
|
|
3224
|
+
{
|
|
3225
|
+
Sid = "Allow CloudWatch Logs"
|
|
3226
|
+
Effect = "Allow"
|
|
3227
|
+
Principal = { Service = "logs.\${data.aws_region.current.region}.amazonaws.com" }
|
|
3228
|
+
Action = [
|
|
3229
|
+
"kms:Encrypt",
|
|
3230
|
+
"kms:Decrypt",
|
|
3231
|
+
"kms:ReEncrypt*",
|
|
3232
|
+
"kms:GenerateDataKey*",
|
|
3233
|
+
"kms:DescribeKey"
|
|
3234
|
+
]
|
|
3235
|
+
Resource = "*"
|
|
3236
|
+
Condition = {
|
|
3237
|
+
ArnEquals = {
|
|
3238
|
+
"kms:EncryptionContext:aws:logs:arn" = "arn:aws:logs:\${data.aws_region.current.region}:\${data.aws_caller_identity.current.account_id}:log-group:\${local.waf_log_group_name}"
|
|
3239
|
+
}
|
|
3240
|
+
}
|
|
3241
|
+
}
|
|
3242
|
+
]
|
|
3243
|
+
})
|
|
3244
|
+
|
|
3245
|
+
tags = var.tags
|
|
3246
|
+
}
|
|
3247
|
+
|
|
3248
|
+
resource "aws_kms_alias" "waf_logs" {
|
|
3249
|
+
count = var.enable_waf ? 1 : 0
|
|
3250
|
+
|
|
3251
|
+
name = "alias/\${var.api_name}-\${random_id.waf_log_suffix[0].hex}-waf-logs"
|
|
3252
|
+
target_key_id = aws_kms_key.waf_logs[0].key_id
|
|
3253
|
+
}
|
|
3254
|
+
|
|
3075
3255
|
# CloudWatch Log Group for WAF request logs. Name must start with \`aws-waf-logs-\`.
|
|
3076
3256
|
resource "aws_cloudwatch_log_group" "api_waf_logs" {
|
|
3077
|
-
#checkov:skip=CKV_AWS_158:Using default CloudWatch log encryption
|
|
3078
3257
|
#checkov:skip=CKV_AWS_338:Log retention set to one month which is sufficient for WAF logs
|
|
3079
3258
|
count = var.enable_waf ? 1 : 0
|
|
3080
3259
|
|
|
3081
|
-
name =
|
|
3260
|
+
name = local.waf_log_group_name
|
|
3082
3261
|
retention_in_days = 30
|
|
3262
|
+
kms_key_id = aws_kms_key.waf_logs[0].arn
|
|
3083
3263
|
tags = var.tags
|
|
3084
3264
|
}
|
|
3085
3265
|
|
|
3086
|
-
resource "random_id" "waf_log_suffix" {
|
|
3087
|
-
count = var.enable_waf ? 1 : 0
|
|
3088
|
-
byte_length = 4
|
|
3089
|
-
}
|
|
3090
|
-
|
|
3091
3266
|
resource "aws_wafv2_web_acl_logging_configuration" "api_waf_logging" {
|
|
3092
3267
|
count = var.enable_waf ? 1 : 0
|
|
3093
3268
|
|
|
@@ -3133,10 +3308,18 @@ output "waf_web_acl_arn" {
|
|
|
3133
3308
|
required_version = ">= 1.0"
|
|
3134
3309
|
|
|
3135
3310
|
required_providers {
|
|
3311
|
+
archive = {
|
|
3312
|
+
source = "hashicorp/archive"
|
|
3313
|
+
version = "2.8.0"
|
|
3314
|
+
}
|
|
3136
3315
|
aws = {
|
|
3137
3316
|
source = "hashicorp/aws"
|
|
3138
3317
|
version = "6.61.0"
|
|
3139
3318
|
}
|
|
3319
|
+
random = {
|
|
3320
|
+
source = "hashicorp/random"
|
|
3321
|
+
version = "3.9.0"
|
|
3322
|
+
}
|
|
3140
3323
|
}
|
|
3141
3324
|
}
|
|
3142
3325
|
|
|
@@ -3697,7 +3880,7 @@ module "add_url_to_runtime_config" {
|
|
|
3697
3880
|
|
|
3698
3881
|
namespace = "connection"
|
|
3699
3882
|
key = "apis"
|
|
3700
|
-
value = { "TestApi" = aws_api_gateway_stage.api_stage.invoke_url }
|
|
3883
|
+
value = { "TestApi" = "\${aws_api_gateway_stage.api_stage.invoke_url}/" }
|
|
3701
3884
|
|
|
3702
3885
|
depends_on = [aws_api_gateway_stage.api_stage]
|
|
3703
3886
|
}
|
|
@@ -3837,10 +4020,18 @@ exports[`tsSmithyApiGenerator > terraform iac > should generate terraform with c
|
|
|
3837
4020
|
required_version = ">= 1.0"
|
|
3838
4021
|
|
|
3839
4022
|
required_providers {
|
|
4023
|
+
archive = {
|
|
4024
|
+
source = "hashicorp/archive"
|
|
4025
|
+
version = "2.8.0"
|
|
4026
|
+
}
|
|
3840
4027
|
aws = {
|
|
3841
4028
|
source = "hashicorp/aws"
|
|
3842
4029
|
version = "6.61.0"
|
|
3843
4030
|
}
|
|
4031
|
+
random = {
|
|
4032
|
+
source = "hashicorp/random"
|
|
4033
|
+
version = "3.9.0"
|
|
4034
|
+
}
|
|
3844
4035
|
}
|
|
3845
4036
|
}
|
|
3846
4037
|
|
|
@@ -4484,7 +4675,7 @@ module "add_url_to_runtime_config" {
|
|
|
4484
4675
|
|
|
4485
4676
|
namespace = "connection"
|
|
4486
4677
|
key = "apis"
|
|
4487
|
-
value = { "CustomApi" = aws_api_gateway_stage.api_stage.invoke_url }
|
|
4678
|
+
value = { "CustomApi" = "\${aws_api_gateway_stage.api_stage.invoke_url}/" }
|
|
4488
4679
|
|
|
4489
4680
|
depends_on = [aws_api_gateway_stage.api_stage]
|
|
4490
4681
|
}
|