@aws/nx-plugin 0.109.0 → 0.110.0
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/package.json +1 -1
- package/src/preset/__snapshots__/generator.spec.ts.snap +11 -1
- package/src/preset/generator.js +12 -3
- package/src/preset/generator.js.map +1 -1
- package/src/py/fast-api/__snapshots__/generator.spec.ts.snap +184 -106
- package/src/py/lambda-function/__snapshots__/generator.spec.ts.snap +74 -18
- package/src/py/mcp-server/__snapshots__/generator.spec.ts.snap +11 -9
- package/src/py/strands-agent/__snapshots__/generator.spec.ts.snap +11 -9
- package/src/smithy/ts/api/__snapshots__/generator.spec.ts.snap +114 -62
- package/src/terraform/project/files/application/scripts/aws-config.ts.template +41 -0
- package/src/terraform/project/files/application/scripts/bootstrap.ts.template +91 -0
- package/src/terraform/project/files/application/scripts/init.ts.template +44 -0
- package/src/terraform/project/generator.js +16 -11
- package/src/terraform/project/generator.js.map +1 -1
- package/src/trpc/backend/__snapshots__/generator.spec.ts.snap +175 -97
- package/src/ts/lambda-function/__snapshots__/generator.spec.ts.snap +74 -18
- package/src/ts/mcp-server/__snapshots__/generator.spec.ts.snap +11 -9
- package/src/ts/react-website/agui/generator.js +7 -0
- package/src/ts/react-website/agui/generator.js.map +1 -1
- package/src/ts/react-website/app/__snapshots__/generator.spec.ts.snap +7 -0
- package/src/ts/strands-agent/__snapshots__/generator.spec.ts.snap +11 -9
- package/src/utils/agent-core-constructs/files/terraform/app/agent-core/__nameKebabCase__/__nameKebabCase__.tf.template +14 -12
- package/src/utils/api-constructs/files/terraform/app/apis/http/__apiNameKebabCase__/__apiNameKebabCase__.tf.template +30 -17
- package/src/utils/api-constructs/files/terraform/app/apis/rest/__apiNameKebabCase__/__apiNameKebabCase__.tf.template +32 -19
- package/src/utils/api-constructs/files/terraform/core/api/http/http-api/http-api.tf.template +2 -2
- package/src/utils/files/terraform/scripts/reset-runtime-config.ts.template +25 -0
- package/src/utils/files/terraform/src/core/asset-bucket/asset-bucket.tf.template +203 -0
- package/src/utils/files/terraform/src/core/runtime-config/appconfig/appconfig.tf.template +42 -39
- package/src/utils/files/terraform/src/core/runtime-config/appconfig-deployment/appconfig-deployment.tf.template +138 -0
- package/src/utils/files/terraform/src/core/runtime-config/entry/entry.tf.template +26 -90
- package/src/utils/files/terraform/src/core/runtime-config/read/read.tf.template +61 -5
- package/src/utils/function-constructs/files/terraform/app/lambda-functions/__functionNameKebabCase__/__functionNameKebabCase__.tf.template +36 -8
- package/src/utils/identity-constructs/files/terraform/core/user-identity/identity/identity.tf.template +6 -6
- package/src/utils/pnpm-workspace.d.ts +22 -0
- package/src/utils/pnpm-workspace.js +58 -0
- package/src/utils/pnpm-workspace.js.map +1 -0
- package/src/utils/shared-constructs.js +4 -2
- package/src/utils/shared-constructs.js.map +1 -1
- package/src/utils/versions.d.ts +4 -1
- package/src/utils/versions.js +3 -0
- package/src/utils/versions.js.map +1 -1
- package/src/utils/website-constructs/files/terraform/core/static-website/static-website.tf.template +7 -0
|
@@ -3034,7 +3034,7 @@ resource "aws_kms_key" "logs_key" {
|
|
|
3034
3034
|
Sid = "Allow CloudWatch Logs"
|
|
3035
3035
|
Effect = "Allow"
|
|
3036
3036
|
Principal = {
|
|
3037
|
-
Service = "logs.\${data.aws_region.current.
|
|
3037
|
+
Service = "logs.\${data.aws_region.current.region}.amazonaws.com"
|
|
3038
3038
|
}
|
|
3039
3039
|
Action = [
|
|
3040
3040
|
"kms:Encrypt",
|
|
@@ -3046,7 +3046,7 @@ resource "aws_kms_key" "logs_key" {
|
|
|
3046
3046
|
Resource = "*"
|
|
3047
3047
|
Condition = {
|
|
3048
3048
|
ArnEquals = {
|
|
3049
|
-
"kms:EncryptionContext:aws:logs:arn" = "arn:aws:logs:\${data.aws_region.current.
|
|
3049
|
+
"kms:EncryptionContext:aws:logs:arn" = "arn:aws:logs:\${data.aws_region.current.region}:\${data.aws_caller_identity.current.account_id}:log-group:/aws/apigateway/\${var.api_name}"
|
|
3050
3050
|
}
|
|
3051
3051
|
}
|
|
3052
3052
|
}
|
|
@@ -3209,6 +3209,11 @@ variable "additional_iam_policy_statements" {
|
|
|
3209
3209
|
default = []
|
|
3210
3210
|
}
|
|
3211
3211
|
|
|
3212
|
+
variable "asset_bucket_name" {
|
|
3213
|
+
description = "Name of the shared asset S3 bucket used to stage the Lambda deployment zip. Instantiate the \`core/asset-bucket\` module once per deployment and pass its \`bucket_name\` output here."
|
|
3214
|
+
type = string
|
|
3215
|
+
}
|
|
3216
|
+
|
|
3212
3217
|
# CORS Configuration (passed to core module)
|
|
3213
3218
|
variable "cors_allow_credentials" {
|
|
3214
3219
|
description = "Whether to allow credentials in CORS requests"
|
|
@@ -3257,6 +3262,12 @@ variable "tags" {
|
|
|
3257
3262
|
data "aws_region" "current" {}
|
|
3258
3263
|
data "aws_caller_identity" "current" {}
|
|
3259
3264
|
|
|
3265
|
+
resource "random_string" "suffix" {
|
|
3266
|
+
length = 8
|
|
3267
|
+
special = false
|
|
3268
|
+
upper = false
|
|
3269
|
+
}
|
|
3270
|
+
|
|
3260
3271
|
# Resources
|
|
3261
3272
|
|
|
3262
3273
|
# Create Lambda ZIP file from the bundle directory
|
|
@@ -3266,12 +3277,20 @@ data "archive_file" "lambda_zip" {
|
|
|
3266
3277
|
output_path = "\${path.module}/../../../../../../../dist/packages/common/terraform/apis/test-api/lambda.zip"
|
|
3267
3278
|
}
|
|
3268
3279
|
|
|
3280
|
+
resource "aws_s3_object" "lambda_zip" {
|
|
3281
|
+
bucket = var.asset_bucket_name
|
|
3282
|
+
key = "apis/test-api/\${data.archive_file.lambda_zip.output_base64sha256}.zip"
|
|
3283
|
+
source = data.archive_file.lambda_zip.output_path
|
|
3284
|
+
source_hash = data.archive_file.lambda_zip.output_base64sha256
|
|
3285
|
+
etag = data.archive_file.lambda_zip.output_md5
|
|
3286
|
+
}
|
|
3287
|
+
|
|
3269
3288
|
|
|
3270
3289
|
# Use the core HTTP API module
|
|
3271
3290
|
module "http_api" {
|
|
3272
3291
|
source = "../../../core/api/http-api"
|
|
3273
3292
|
|
|
3274
|
-
api_name = "TestApi"
|
|
3293
|
+
api_name = "TestApi-\${random_string.suffix.result}"
|
|
3275
3294
|
api_description = "TestApi HTTP API"
|
|
3276
3295
|
stage_name = "$default"
|
|
3277
3296
|
stage_auto_deploy = true
|
|
@@ -3296,8 +3315,10 @@ resource "aws_lambda_function" "api_lambda" {
|
|
|
3296
3315
|
#checkov:skip=CKV_AWS_272:Code signing not required for this use case
|
|
3297
3316
|
#checkov:skip=CKV_AWS_115:Concurrent execution limit not required for this use case
|
|
3298
3317
|
#checkov:skip=CKV_AWS_173:Lambda environment variables encrypted by managed key
|
|
3299
|
-
|
|
3300
|
-
|
|
3318
|
+
s3_bucket = aws_s3_object.lambda_zip.bucket
|
|
3319
|
+
s3_key = aws_s3_object.lambda_zip.key
|
|
3320
|
+
s3_object_version = aws_s3_object.lambda_zip.version_id
|
|
3321
|
+
function_name = "TestApiHandler-\${random_string.suffix.result}"
|
|
3301
3322
|
role = aws_iam_role.lambda_execution_role.arn
|
|
3302
3323
|
handler = "index.handler"
|
|
3303
3324
|
runtime = "nodejs22.x"
|
|
@@ -3322,7 +3343,7 @@ resource "aws_lambda_function" "api_lambda" {
|
|
|
3322
3343
|
|
|
3323
3344
|
# IAM role for Lambda execution
|
|
3324
3345
|
resource "aws_iam_role" "lambda_execution_role" {
|
|
3325
|
-
name = "TestApiHandler-execution-role"
|
|
3346
|
+
name = "TestApiHandler-execution-role-\${random_string.suffix.result}"
|
|
3326
3347
|
|
|
3327
3348
|
assume_role_policy = jsonencode({
|
|
3328
3349
|
Version = "2012-10-17"
|
|
@@ -3355,7 +3376,7 @@ resource "aws_iam_role_policy_attachment" "lambda_xray_execution" {
|
|
|
3355
3376
|
# Additional IAM policies for Lambda (if provided)
|
|
3356
3377
|
resource "aws_iam_role_policy" "lambda_additional_policies" {
|
|
3357
3378
|
count = length(var.additional_iam_policy_statements) > 0 ? 1 : 0
|
|
3358
|
-
name = "TestApiHandler-additional-policies"
|
|
3379
|
+
name = "TestApiHandler-additional-policies-\${random_string.suffix.result}"
|
|
3359
3380
|
role = aws_iam_role.lambda_execution_role.id
|
|
3360
3381
|
|
|
3361
3382
|
policy = jsonencode({
|
|
@@ -3369,7 +3390,7 @@ resource "aws_cloudwatch_log_group" "lambda_logs" {
|
|
|
3369
3390
|
#checkov:skip=CKV_AWS_158:Using default CloudWatch log encryption
|
|
3370
3391
|
#checkov:skip=CKV_AWS_338:Log retention set to forever
|
|
3371
3392
|
#checkov:skip=CKV_AWS_66:Log retention set to forever
|
|
3372
|
-
name = "/aws/lambda/TestApiHandler"
|
|
3393
|
+
name = "/aws/lambda/TestApiHandler-\${random_string.suffix.result}"
|
|
3373
3394
|
tags = var.tags
|
|
3374
3395
|
}
|
|
3375
3396
|
|
|
@@ -3379,11 +3400,11 @@ resource "aws_apigatewayv2_authorizer" "cognito_authorizer" {
|
|
|
3379
3400
|
api_id = module.http_api.api_id
|
|
3380
3401
|
authorizer_type = "JWT"
|
|
3381
3402
|
identity_sources = ["$request.header.Authorization"]
|
|
3382
|
-
name = "TestApiAuthorizer"
|
|
3403
|
+
name = "TestApiAuthorizer-\${random_string.suffix.result}"
|
|
3383
3404
|
|
|
3384
3405
|
jwt_configuration {
|
|
3385
3406
|
audience = var.user_pool_client_ids
|
|
3386
|
-
issuer = "https://cognito-idp.\${data.aws_region.current.
|
|
3407
|
+
issuer = "https://cognito-idp.\${data.aws_region.current.region}.amazonaws.com/\${var.user_pool_id}"
|
|
3387
3408
|
}
|
|
3388
3409
|
}
|
|
3389
3410
|
|
|
@@ -3426,14 +3447,6 @@ module "add_url_to_runtime_config" {
|
|
|
3426
3447
|
depends_on = [module.http_api]
|
|
3427
3448
|
}
|
|
3428
3449
|
|
|
3429
|
-
module "appconfig" {
|
|
3430
|
-
source = "../../../core/runtime-config/appconfig"
|
|
3431
|
-
|
|
3432
|
-
application_name = "TestApi-runtime-config"
|
|
3433
|
-
|
|
3434
|
-
depends_on = [module.add_url_to_runtime_config]
|
|
3435
|
-
}
|
|
3436
|
-
|
|
3437
3450
|
# Lambda permission for API Gateway to invoke the function
|
|
3438
3451
|
resource "aws_lambda_permission" "api_gateway_invoke" {
|
|
3439
3452
|
statement_id = "AllowExecutionFromAPIGateway"
|
|
@@ -3674,7 +3687,7 @@ resource "aws_kms_key" "logs_key" {
|
|
|
3674
3687
|
Sid = "Allow CloudWatch Logs"
|
|
3675
3688
|
Effect = "Allow"
|
|
3676
3689
|
Principal = {
|
|
3677
|
-
Service = "logs.\${data.aws_region.current.
|
|
3690
|
+
Service = "logs.\${data.aws_region.current.region}.amazonaws.com"
|
|
3678
3691
|
}
|
|
3679
3692
|
Action = [
|
|
3680
3693
|
"kms:Encrypt",
|
|
@@ -3686,7 +3699,7 @@ resource "aws_kms_key" "logs_key" {
|
|
|
3686
3699
|
Resource = "*"
|
|
3687
3700
|
Condition = {
|
|
3688
3701
|
ArnEquals = {
|
|
3689
|
-
"kms:EncryptionContext:aws:logs:arn" = "arn:aws:logs:\${data.aws_region.current.
|
|
3702
|
+
"kms:EncryptionContext:aws:logs:arn" = "arn:aws:logs:\${data.aws_region.current.region}:\${data.aws_caller_identity.current.account_id}:log-group:/aws/apigateway/\${var.api_name}"
|
|
3690
3703
|
}
|
|
3691
3704
|
}
|
|
3692
3705
|
}
|
|
@@ -3839,6 +3852,11 @@ variable "additional_iam_policy_statements" {
|
|
|
3839
3852
|
default = []
|
|
3840
3853
|
}
|
|
3841
3854
|
|
|
3855
|
+
variable "asset_bucket_name" {
|
|
3856
|
+
description = "Name of the shared asset S3 bucket used to stage the Lambda deployment zip. Instantiate the \`core/asset-bucket\` module once per deployment and pass its \`bucket_name\` output here."
|
|
3857
|
+
type = string
|
|
3858
|
+
}
|
|
3859
|
+
|
|
3842
3860
|
# CORS Configuration (passed to core module)
|
|
3843
3861
|
variable "cors_allow_credentials" {
|
|
3844
3862
|
description = "Whether to allow credentials in CORS requests"
|
|
@@ -3887,6 +3905,12 @@ variable "tags" {
|
|
|
3887
3905
|
data "aws_region" "current" {}
|
|
3888
3906
|
data "aws_caller_identity" "current" {}
|
|
3889
3907
|
|
|
3908
|
+
resource "random_string" "suffix" {
|
|
3909
|
+
length = 8
|
|
3910
|
+
special = false
|
|
3911
|
+
upper = false
|
|
3912
|
+
}
|
|
3913
|
+
|
|
3890
3914
|
# Resources
|
|
3891
3915
|
|
|
3892
3916
|
# Create Lambda ZIP file from the bundle directory
|
|
@@ -3896,12 +3920,20 @@ data "archive_file" "lambda_zip" {
|
|
|
3896
3920
|
output_path = "\${path.module}/../../../../../../../dist/packages/common/terraform/apis/test-api/lambda.zip"
|
|
3897
3921
|
}
|
|
3898
3922
|
|
|
3923
|
+
resource "aws_s3_object" "lambda_zip" {
|
|
3924
|
+
bucket = var.asset_bucket_name
|
|
3925
|
+
key = "apis/test-api/\${data.archive_file.lambda_zip.output_base64sha256}.zip"
|
|
3926
|
+
source = data.archive_file.lambda_zip.output_path
|
|
3927
|
+
source_hash = data.archive_file.lambda_zip.output_base64sha256
|
|
3928
|
+
etag = data.archive_file.lambda_zip.output_md5
|
|
3929
|
+
}
|
|
3930
|
+
|
|
3899
3931
|
|
|
3900
3932
|
# Use the core HTTP API module
|
|
3901
3933
|
module "http_api" {
|
|
3902
3934
|
source = "../../../core/api/http-api"
|
|
3903
3935
|
|
|
3904
|
-
api_name = "TestApi"
|
|
3936
|
+
api_name = "TestApi-\${random_string.suffix.result}"
|
|
3905
3937
|
api_description = "TestApi HTTP API"
|
|
3906
3938
|
stage_name = "$default"
|
|
3907
3939
|
stage_auto_deploy = true
|
|
@@ -3926,8 +3958,10 @@ resource "aws_lambda_function" "api_lambda" {
|
|
|
3926
3958
|
#checkov:skip=CKV_AWS_272:Code signing not required for this use case
|
|
3927
3959
|
#checkov:skip=CKV_AWS_115:Concurrent execution limit not required for this use case
|
|
3928
3960
|
#checkov:skip=CKV_AWS_173:Lambda environment variables encrypted by managed key
|
|
3929
|
-
|
|
3930
|
-
|
|
3961
|
+
s3_bucket = aws_s3_object.lambda_zip.bucket
|
|
3962
|
+
s3_key = aws_s3_object.lambda_zip.key
|
|
3963
|
+
s3_object_version = aws_s3_object.lambda_zip.version_id
|
|
3964
|
+
function_name = "TestApiHandler-\${random_string.suffix.result}"
|
|
3931
3965
|
role = aws_iam_role.lambda_execution_role.arn
|
|
3932
3966
|
handler = "index.handler"
|
|
3933
3967
|
runtime = "nodejs22.x"
|
|
@@ -3952,7 +3986,7 @@ resource "aws_lambda_function" "api_lambda" {
|
|
|
3952
3986
|
|
|
3953
3987
|
# IAM role for Lambda execution
|
|
3954
3988
|
resource "aws_iam_role" "lambda_execution_role" {
|
|
3955
|
-
name = "TestApiHandler-execution-role"
|
|
3989
|
+
name = "TestApiHandler-execution-role-\${random_string.suffix.result}"
|
|
3956
3990
|
|
|
3957
3991
|
assume_role_policy = jsonencode({
|
|
3958
3992
|
Version = "2012-10-17"
|
|
@@ -3985,7 +4019,7 @@ resource "aws_iam_role_policy_attachment" "lambda_xray_execution" {
|
|
|
3985
4019
|
# Additional IAM policies for Lambda (if provided)
|
|
3986
4020
|
resource "aws_iam_role_policy" "lambda_additional_policies" {
|
|
3987
4021
|
count = length(var.additional_iam_policy_statements) > 0 ? 1 : 0
|
|
3988
|
-
name = "TestApiHandler-additional-policies"
|
|
4022
|
+
name = "TestApiHandler-additional-policies-\${random_string.suffix.result}"
|
|
3989
4023
|
role = aws_iam_role.lambda_execution_role.id
|
|
3990
4024
|
|
|
3991
4025
|
policy = jsonencode({
|
|
@@ -3999,7 +4033,7 @@ resource "aws_cloudwatch_log_group" "lambda_logs" {
|
|
|
3999
4033
|
#checkov:skip=CKV_AWS_158:Using default CloudWatch log encryption
|
|
4000
4034
|
#checkov:skip=CKV_AWS_338:Log retention set to forever
|
|
4001
4035
|
#checkov:skip=CKV_AWS_66:Log retention set to forever
|
|
4002
|
-
name = "/aws/lambda/TestApiHandler"
|
|
4036
|
+
name = "/aws/lambda/TestApiHandler-\${random_string.suffix.result}"
|
|
4003
4037
|
tags = var.tags
|
|
4004
4038
|
}
|
|
4005
4039
|
|
|
@@ -4043,14 +4077,6 @@ module "add_url_to_runtime_config" {
|
|
|
4043
4077
|
depends_on = [module.http_api]
|
|
4044
4078
|
}
|
|
4045
4079
|
|
|
4046
|
-
module "appconfig" {
|
|
4047
|
-
source = "../../../core/runtime-config/appconfig"
|
|
4048
|
-
|
|
4049
|
-
application_name = "TestApi-runtime-config"
|
|
4050
|
-
|
|
4051
|
-
depends_on = [module.add_url_to_runtime_config]
|
|
4052
|
-
}
|
|
4053
|
-
|
|
4054
4080
|
# Lambda permission for API Gateway to invoke the function
|
|
4055
4081
|
resource "aws_lambda_permission" "api_gateway_invoke" {
|
|
4056
4082
|
statement_id = "AllowExecutionFromAPIGateway"
|
|
@@ -4291,7 +4317,7 @@ resource "aws_kms_key" "logs_key" {
|
|
|
4291
4317
|
Sid = "Allow CloudWatch Logs"
|
|
4292
4318
|
Effect = "Allow"
|
|
4293
4319
|
Principal = {
|
|
4294
|
-
Service = "logs.\${data.aws_region.current.
|
|
4320
|
+
Service = "logs.\${data.aws_region.current.region}.amazonaws.com"
|
|
4295
4321
|
}
|
|
4296
4322
|
Action = [
|
|
4297
4323
|
"kms:Encrypt",
|
|
@@ -4303,7 +4329,7 @@ resource "aws_kms_key" "logs_key" {
|
|
|
4303
4329
|
Resource = "*"
|
|
4304
4330
|
Condition = {
|
|
4305
4331
|
ArnEquals = {
|
|
4306
|
-
"kms:EncryptionContext:aws:logs:arn" = "arn:aws:logs:\${data.aws_region.current.
|
|
4332
|
+
"kms:EncryptionContext:aws:logs:arn" = "arn:aws:logs:\${data.aws_region.current.region}:\${data.aws_caller_identity.current.account_id}:log-group:/aws/apigateway/\${var.api_name}"
|
|
4307
4333
|
}
|
|
4308
4334
|
}
|
|
4309
4335
|
}
|
|
@@ -4456,6 +4482,11 @@ variable "additional_iam_policy_statements" {
|
|
|
4456
4482
|
default = []
|
|
4457
4483
|
}
|
|
4458
4484
|
|
|
4485
|
+
variable "asset_bucket_name" {
|
|
4486
|
+
description = "Name of the shared asset S3 bucket used to stage the Lambda deployment zip. Instantiate the \`core/asset-bucket\` module once per deployment and pass its \`bucket_name\` output here."
|
|
4487
|
+
type = string
|
|
4488
|
+
}
|
|
4489
|
+
|
|
4459
4490
|
# CORS Configuration (passed to core module)
|
|
4460
4491
|
variable "cors_allow_credentials" {
|
|
4461
4492
|
description = "Whether to allow credentials in CORS requests"
|
|
@@ -4504,6 +4535,12 @@ variable "tags" {
|
|
|
4504
4535
|
data "aws_region" "current" {}
|
|
4505
4536
|
data "aws_caller_identity" "current" {}
|
|
4506
4537
|
|
|
4538
|
+
resource "random_string" "suffix" {
|
|
4539
|
+
length = 8
|
|
4540
|
+
special = false
|
|
4541
|
+
upper = false
|
|
4542
|
+
}
|
|
4543
|
+
|
|
4507
4544
|
# Resources
|
|
4508
4545
|
|
|
4509
4546
|
# Create Lambda ZIP file from the bundle directory
|
|
@@ -4513,12 +4550,20 @@ data "archive_file" "lambda_zip" {
|
|
|
4513
4550
|
output_path = "\${path.module}/../../../../../../../dist/packages/common/terraform/apis/test-api/lambda.zip"
|
|
4514
4551
|
}
|
|
4515
4552
|
|
|
4553
|
+
resource "aws_s3_object" "lambda_zip" {
|
|
4554
|
+
bucket = var.asset_bucket_name
|
|
4555
|
+
key = "apis/test-api/\${data.archive_file.lambda_zip.output_base64sha256}.zip"
|
|
4556
|
+
source = data.archive_file.lambda_zip.output_path
|
|
4557
|
+
source_hash = data.archive_file.lambda_zip.output_base64sha256
|
|
4558
|
+
etag = data.archive_file.lambda_zip.output_md5
|
|
4559
|
+
}
|
|
4560
|
+
|
|
4516
4561
|
|
|
4517
4562
|
# Use the core HTTP API module
|
|
4518
4563
|
module "http_api" {
|
|
4519
4564
|
source = "../../../core/api/http-api"
|
|
4520
4565
|
|
|
4521
|
-
api_name = "TestApi"
|
|
4566
|
+
api_name = "TestApi-\${random_string.suffix.result}"
|
|
4522
4567
|
api_description = "TestApi HTTP API"
|
|
4523
4568
|
stage_name = "$default"
|
|
4524
4569
|
stage_auto_deploy = true
|
|
@@ -4543,8 +4588,10 @@ resource "aws_lambda_function" "api_lambda" {
|
|
|
4543
4588
|
#checkov:skip=CKV_AWS_272:Code signing not required for this use case
|
|
4544
4589
|
#checkov:skip=CKV_AWS_115:Concurrent execution limit not required for this use case
|
|
4545
4590
|
#checkov:skip=CKV_AWS_173:Lambda environment variables encrypted by managed key
|
|
4546
|
-
|
|
4547
|
-
|
|
4591
|
+
s3_bucket = aws_s3_object.lambda_zip.bucket
|
|
4592
|
+
s3_key = aws_s3_object.lambda_zip.key
|
|
4593
|
+
s3_object_version = aws_s3_object.lambda_zip.version_id
|
|
4594
|
+
function_name = "TestApiHandler-\${random_string.suffix.result}"
|
|
4548
4595
|
role = aws_iam_role.lambda_execution_role.arn
|
|
4549
4596
|
handler = "index.handler"
|
|
4550
4597
|
runtime = "nodejs22.x"
|
|
@@ -4569,7 +4616,7 @@ resource "aws_lambda_function" "api_lambda" {
|
|
|
4569
4616
|
|
|
4570
4617
|
# IAM role for Lambda execution
|
|
4571
4618
|
resource "aws_iam_role" "lambda_execution_role" {
|
|
4572
|
-
name = "TestApiHandler-execution-role"
|
|
4619
|
+
name = "TestApiHandler-execution-role-\${random_string.suffix.result}"
|
|
4573
4620
|
|
|
4574
4621
|
assume_role_policy = jsonencode({
|
|
4575
4622
|
Version = "2012-10-17"
|
|
@@ -4602,7 +4649,7 @@ resource "aws_iam_role_policy_attachment" "lambda_xray_execution" {
|
|
|
4602
4649
|
# Additional IAM policies for Lambda (if provided)
|
|
4603
4650
|
resource "aws_iam_role_policy" "lambda_additional_policies" {
|
|
4604
4651
|
count = length(var.additional_iam_policy_statements) > 0 ? 1 : 0
|
|
4605
|
-
name = "TestApiHandler-additional-policies"
|
|
4652
|
+
name = "TestApiHandler-additional-policies-\${random_string.suffix.result}"
|
|
4606
4653
|
role = aws_iam_role.lambda_execution_role.id
|
|
4607
4654
|
|
|
4608
4655
|
policy = jsonencode({
|
|
@@ -4616,7 +4663,7 @@ resource "aws_cloudwatch_log_group" "lambda_logs" {
|
|
|
4616
4663
|
#checkov:skip=CKV_AWS_158:Using default CloudWatch log encryption
|
|
4617
4664
|
#checkov:skip=CKV_AWS_338:Log retention set to forever
|
|
4618
4665
|
#checkov:skip=CKV_AWS_66:Log retention set to forever
|
|
4619
|
-
name = "/aws/lambda/TestApiHandler"
|
|
4666
|
+
name = "/aws/lambda/TestApiHandler-\${random_string.suffix.result}"
|
|
4620
4667
|
tags = var.tags
|
|
4621
4668
|
}
|
|
4622
4669
|
|
|
@@ -4662,14 +4709,6 @@ module "add_url_to_runtime_config" {
|
|
|
4662
4709
|
depends_on = [module.http_api]
|
|
4663
4710
|
}
|
|
4664
4711
|
|
|
4665
|
-
module "appconfig" {
|
|
4666
|
-
source = "../../../core/runtime-config/appconfig"
|
|
4667
|
-
|
|
4668
|
-
application_name = "TestApi-runtime-config"
|
|
4669
|
-
|
|
4670
|
-
depends_on = [module.add_url_to_runtime_config]
|
|
4671
|
-
}
|
|
4672
|
-
|
|
4673
4712
|
# Lambda permission for API Gateway to invoke the function
|
|
4674
4713
|
resource "aws_lambda_permission" "api_gateway_invoke" {
|
|
4675
4714
|
statement_id = "AllowExecutionFromAPIGateway"
|
|
@@ -5100,6 +5139,11 @@ variable "additional_iam_policy_statements" {
|
|
|
5100
5139
|
default = []
|
|
5101
5140
|
}
|
|
5102
5141
|
|
|
5142
|
+
variable "asset_bucket_name" {
|
|
5143
|
+
description = "Name of the shared asset S3 bucket used to stage the Lambda deployment zip. Instantiate the \`core/asset-bucket\` module once per deployment and pass its \`bucket_name\` output here."
|
|
5144
|
+
type = string
|
|
5145
|
+
}
|
|
5146
|
+
|
|
5103
5147
|
# CORS Configuration (passed to core module)
|
|
5104
5148
|
|
|
5105
5149
|
variable "cors_allow_headers" {
|
|
@@ -5138,20 +5182,34 @@ variable "tags" {
|
|
|
5138
5182
|
data "aws_region" "current" {}
|
|
5139
5183
|
data "aws_caller_identity" "current" {}
|
|
5140
5184
|
|
|
5185
|
+
resource "random_string" "suffix" {
|
|
5186
|
+
length = 8
|
|
5187
|
+
special = false
|
|
5188
|
+
upper = false
|
|
5189
|
+
}
|
|
5190
|
+
|
|
5141
5191
|
# Resources
|
|
5142
5192
|
|
|
5143
|
-
# Create Lambda ZIP file from the
|
|
5193
|
+
# Create Lambda ZIP file from the bundle directory
|
|
5144
5194
|
data "archive_file" "lambda_zip" {
|
|
5145
5195
|
type = "zip"
|
|
5146
5196
|
source_dir = "\${path.module}/../../../../../../../dist/apps/test-api/bundle"
|
|
5147
5197
|
output_path = "\${path.module}/../../../../../../../dist/packages/common/terraform/apis/test-api/lambda.zip"
|
|
5148
5198
|
}
|
|
5149
5199
|
|
|
5200
|
+
resource "aws_s3_object" "lambda_zip" {
|
|
5201
|
+
bucket = var.asset_bucket_name
|
|
5202
|
+
key = "apis/test-api/\${data.archive_file.lambda_zip.output_base64sha256}.zip"
|
|
5203
|
+
source = data.archive_file.lambda_zip.output_path
|
|
5204
|
+
source_hash = data.archive_file.lambda_zip.output_base64sha256
|
|
5205
|
+
etag = data.archive_file.lambda_zip.output_md5
|
|
5206
|
+
}
|
|
5207
|
+
|
|
5150
5208
|
# Use the core REST API module
|
|
5151
5209
|
module "rest_api" {
|
|
5152
5210
|
source = "../../../core/api/rest-api"
|
|
5153
5211
|
|
|
5154
|
-
api_name = "TestApi"
|
|
5212
|
+
api_name = "TestApi-\${random_string.suffix.result}"
|
|
5155
5213
|
api_description = "TestApi REST API"
|
|
5156
5214
|
stage_name = "prod"
|
|
5157
5215
|
stage_auto_deploy = true
|
|
@@ -5184,8 +5242,10 @@ resource "aws_lambda_function" "api_lambda" {
|
|
|
5184
5242
|
#checkov:skip=CKV_AWS_272:Code signing not required for this use case
|
|
5185
5243
|
#checkov:skip=CKV_AWS_115:Concurrent execution limit not required for this use case
|
|
5186
5244
|
#checkov:skip=CKV_AWS_173:Lambda environment variables encrypted by managed key
|
|
5187
|
-
|
|
5188
|
-
|
|
5245
|
+
s3_bucket = aws_s3_object.lambda_zip.bucket
|
|
5246
|
+
s3_key = aws_s3_object.lambda_zip.key
|
|
5247
|
+
s3_object_version = aws_s3_object.lambda_zip.version_id
|
|
5248
|
+
function_name = "TestApiHandler-\${random_string.suffix.result}"
|
|
5189
5249
|
role = aws_iam_role.lambda_execution_role.arn
|
|
5190
5250
|
handler = "index.handler"
|
|
5191
5251
|
runtime = "nodejs22.x"
|
|
@@ -5210,7 +5270,7 @@ resource "aws_lambda_function" "api_lambda" {
|
|
|
5210
5270
|
|
|
5211
5271
|
# IAM role for Lambda execution
|
|
5212
5272
|
resource "aws_iam_role" "lambda_execution_role" {
|
|
5213
|
-
name = "TestApiHandler-execution-role"
|
|
5273
|
+
name = "TestApiHandler-execution-role-\${random_string.suffix.result}"
|
|
5214
5274
|
|
|
5215
5275
|
assume_role_policy = jsonencode({
|
|
5216
5276
|
Version = "2012-10-17"
|
|
@@ -5243,7 +5303,7 @@ resource "aws_iam_role_policy_attachment" "lambda_xray_execution" {
|
|
|
5243
5303
|
# Additional IAM policies for Lambda (if provided)
|
|
5244
5304
|
resource "aws_iam_role_policy" "lambda_additional_policies" {
|
|
5245
5305
|
count = length(var.additional_iam_policy_statements) > 0 ? 1 : 0
|
|
5246
|
-
name = "TestApiHandler-additional-policies"
|
|
5306
|
+
name = "TestApiHandler-additional-policies-\${random_string.suffix.result}"
|
|
5247
5307
|
role = aws_iam_role.lambda_execution_role.id
|
|
5248
5308
|
|
|
5249
5309
|
policy = jsonencode({
|
|
@@ -5257,17 +5317,17 @@ resource "aws_cloudwatch_log_group" "lambda_logs" {
|
|
|
5257
5317
|
#checkov:skip=CKV_AWS_158:Using default CloudWatch log encryption
|
|
5258
5318
|
#checkov:skip=CKV_AWS_338:Log retention set to forever
|
|
5259
5319
|
#checkov:skip=CKV_AWS_66:Log retention set to forever
|
|
5260
|
-
name = "/aws/lambda/TestApiHandler"
|
|
5320
|
+
name = "/aws/lambda/TestApiHandler-\${random_string.suffix.result}"
|
|
5261
5321
|
tags = var.tags
|
|
5262
5322
|
}
|
|
5263
5323
|
|
|
5264
5324
|
|
|
5265
5325
|
# Cognito User Pool Authorizer
|
|
5266
5326
|
resource "aws_api_gateway_authorizer" "cognito_authorizer" {
|
|
5267
|
-
name = "TestApiAuthorizer"
|
|
5327
|
+
name = "TestApiAuthorizer-\${random_string.suffix.result}"
|
|
5268
5328
|
rest_api_id = module.rest_api.api_id
|
|
5269
5329
|
type = "COGNITO_USER_POOLS"
|
|
5270
|
-
provider_arns = ["arn:aws:cognito-idp:\${data.aws_region.current.
|
|
5330
|
+
provider_arns = ["arn:aws:cognito-idp:\${data.aws_region.current.region}:\${data.aws_caller_identity.current.account_id}:userpool/\${var.user_pool_id}"]
|
|
5271
5331
|
identity_source = "method.request.header.Authorization"
|
|
5272
5332
|
}
|
|
5273
5333
|
|
|
@@ -5445,14 +5505,6 @@ module "add_url_to_runtime_config" {
|
|
|
5445
5505
|
depends_on = [aws_api_gateway_stage.api_stage]
|
|
5446
5506
|
}
|
|
5447
5507
|
|
|
5448
|
-
module "appconfig" {
|
|
5449
|
-
source = "../../../core/runtime-config/appconfig"
|
|
5450
|
-
|
|
5451
|
-
application_name = "TestApi-runtime-config"
|
|
5452
|
-
|
|
5453
|
-
depends_on = [module.add_url_to_runtime_config]
|
|
5454
|
-
}
|
|
5455
|
-
|
|
5456
5508
|
# Outputs
|
|
5457
5509
|
|
|
5458
5510
|
# API Gateway Outputs (from core module)
|
|
@@ -5873,6 +5925,11 @@ variable "additional_iam_policy_statements" {
|
|
|
5873
5925
|
default = []
|
|
5874
5926
|
}
|
|
5875
5927
|
|
|
5928
|
+
variable "asset_bucket_name" {
|
|
5929
|
+
description = "Name of the shared asset S3 bucket used to stage the Lambda deployment zip. Instantiate the \`core/asset-bucket\` module once per deployment and pass its \`bucket_name\` output here."
|
|
5930
|
+
type = string
|
|
5931
|
+
}
|
|
5932
|
+
|
|
5876
5933
|
# CORS Configuration (passed to core module)
|
|
5877
5934
|
|
|
5878
5935
|
variable "cors_allow_headers" {
|
|
@@ -5911,20 +5968,34 @@ variable "tags" {
|
|
|
5911
5968
|
data "aws_region" "current" {}
|
|
5912
5969
|
data "aws_caller_identity" "current" {}
|
|
5913
5970
|
|
|
5971
|
+
resource "random_string" "suffix" {
|
|
5972
|
+
length = 8
|
|
5973
|
+
special = false
|
|
5974
|
+
upper = false
|
|
5975
|
+
}
|
|
5976
|
+
|
|
5914
5977
|
# Resources
|
|
5915
5978
|
|
|
5916
|
-
# Create Lambda ZIP file from the
|
|
5979
|
+
# Create Lambda ZIP file from the bundle directory
|
|
5917
5980
|
data "archive_file" "lambda_zip" {
|
|
5918
5981
|
type = "zip"
|
|
5919
5982
|
source_dir = "\${path.module}/../../../../../../../dist/apps/test-api/bundle"
|
|
5920
5983
|
output_path = "\${path.module}/../../../../../../../dist/packages/common/terraform/apis/test-api/lambda.zip"
|
|
5921
5984
|
}
|
|
5922
5985
|
|
|
5986
|
+
resource "aws_s3_object" "lambda_zip" {
|
|
5987
|
+
bucket = var.asset_bucket_name
|
|
5988
|
+
key = "apis/test-api/\${data.archive_file.lambda_zip.output_base64sha256}.zip"
|
|
5989
|
+
source = data.archive_file.lambda_zip.output_path
|
|
5990
|
+
source_hash = data.archive_file.lambda_zip.output_base64sha256
|
|
5991
|
+
etag = data.archive_file.lambda_zip.output_md5
|
|
5992
|
+
}
|
|
5993
|
+
|
|
5923
5994
|
# Use the core REST API module
|
|
5924
5995
|
module "rest_api" {
|
|
5925
5996
|
source = "../../../core/api/rest-api"
|
|
5926
5997
|
|
|
5927
|
-
api_name = "TestApi"
|
|
5998
|
+
api_name = "TestApi-\${random_string.suffix.result}"
|
|
5928
5999
|
api_description = "TestApi REST API"
|
|
5929
6000
|
stage_name = "prod"
|
|
5930
6001
|
stage_auto_deploy = true
|
|
@@ -5957,8 +6028,10 @@ resource "aws_lambda_function" "api_lambda" {
|
|
|
5957
6028
|
#checkov:skip=CKV_AWS_272:Code signing not required for this use case
|
|
5958
6029
|
#checkov:skip=CKV_AWS_115:Concurrent execution limit not required for this use case
|
|
5959
6030
|
#checkov:skip=CKV_AWS_173:Lambda environment variables encrypted by managed key
|
|
5960
|
-
|
|
5961
|
-
|
|
6031
|
+
s3_bucket = aws_s3_object.lambda_zip.bucket
|
|
6032
|
+
s3_key = aws_s3_object.lambda_zip.key
|
|
6033
|
+
s3_object_version = aws_s3_object.lambda_zip.version_id
|
|
6034
|
+
function_name = "TestApiHandler-\${random_string.suffix.result}"
|
|
5962
6035
|
role = aws_iam_role.lambda_execution_role.arn
|
|
5963
6036
|
handler = "index.handler"
|
|
5964
6037
|
runtime = "nodejs22.x"
|
|
@@ -5983,7 +6056,7 @@ resource "aws_lambda_function" "api_lambda" {
|
|
|
5983
6056
|
|
|
5984
6057
|
# IAM role for Lambda execution
|
|
5985
6058
|
resource "aws_iam_role" "lambda_execution_role" {
|
|
5986
|
-
name = "TestApiHandler-execution-role"
|
|
6059
|
+
name = "TestApiHandler-execution-role-\${random_string.suffix.result}"
|
|
5987
6060
|
|
|
5988
6061
|
assume_role_policy = jsonencode({
|
|
5989
6062
|
Version = "2012-10-17"
|
|
@@ -6016,7 +6089,7 @@ resource "aws_iam_role_policy_attachment" "lambda_xray_execution" {
|
|
|
6016
6089
|
# Additional IAM policies for Lambda (if provided)
|
|
6017
6090
|
resource "aws_iam_role_policy" "lambda_additional_policies" {
|
|
6018
6091
|
count = length(var.additional_iam_policy_statements) > 0 ? 1 : 0
|
|
6019
|
-
name = "TestApiHandler-additional-policies"
|
|
6092
|
+
name = "TestApiHandler-additional-policies-\${random_string.suffix.result}"
|
|
6020
6093
|
role = aws_iam_role.lambda_execution_role.id
|
|
6021
6094
|
|
|
6022
6095
|
policy = jsonencode({
|
|
@@ -6030,7 +6103,7 @@ resource "aws_cloudwatch_log_group" "lambda_logs" {
|
|
|
6030
6103
|
#checkov:skip=CKV_AWS_158:Using default CloudWatch log encryption
|
|
6031
6104
|
#checkov:skip=CKV_AWS_338:Log retention set to forever
|
|
6032
6105
|
#checkov:skip=CKV_AWS_66:Log retention set to forever
|
|
6033
|
-
name = "/aws/lambda/TestApiHandler"
|
|
6106
|
+
name = "/aws/lambda/TestApiHandler-\${random_string.suffix.result}"
|
|
6034
6107
|
tags = var.tags
|
|
6035
6108
|
}
|
|
6036
6109
|
|
|
@@ -6220,14 +6293,6 @@ module "add_url_to_runtime_config" {
|
|
|
6220
6293
|
depends_on = [aws_api_gateway_stage.api_stage]
|
|
6221
6294
|
}
|
|
6222
6295
|
|
|
6223
|
-
module "appconfig" {
|
|
6224
|
-
source = "../../../core/runtime-config/appconfig"
|
|
6225
|
-
|
|
6226
|
-
application_name = "TestApi-runtime-config"
|
|
6227
|
-
|
|
6228
|
-
depends_on = [module.add_url_to_runtime_config]
|
|
6229
|
-
}
|
|
6230
|
-
|
|
6231
6296
|
# Outputs
|
|
6232
6297
|
|
|
6233
6298
|
# API Gateway Outputs (from core module)
|
|
@@ -6648,6 +6713,11 @@ variable "additional_iam_policy_statements" {
|
|
|
6648
6713
|
default = []
|
|
6649
6714
|
}
|
|
6650
6715
|
|
|
6716
|
+
variable "asset_bucket_name" {
|
|
6717
|
+
description = "Name of the shared asset S3 bucket used to stage the Lambda deployment zip. Instantiate the \`core/asset-bucket\` module once per deployment and pass its \`bucket_name\` output here."
|
|
6718
|
+
type = string
|
|
6719
|
+
}
|
|
6720
|
+
|
|
6651
6721
|
# CORS Configuration (passed to core module)
|
|
6652
6722
|
|
|
6653
6723
|
variable "cors_allow_headers" {
|
|
@@ -6686,20 +6756,34 @@ variable "tags" {
|
|
|
6686
6756
|
data "aws_region" "current" {}
|
|
6687
6757
|
data "aws_caller_identity" "current" {}
|
|
6688
6758
|
|
|
6759
|
+
resource "random_string" "suffix" {
|
|
6760
|
+
length = 8
|
|
6761
|
+
special = false
|
|
6762
|
+
upper = false
|
|
6763
|
+
}
|
|
6764
|
+
|
|
6689
6765
|
# Resources
|
|
6690
6766
|
|
|
6691
|
-
# Create Lambda ZIP file from the
|
|
6767
|
+
# Create Lambda ZIP file from the bundle directory
|
|
6692
6768
|
data "archive_file" "lambda_zip" {
|
|
6693
6769
|
type = "zip"
|
|
6694
6770
|
source_dir = "\${path.module}/../../../../../../../dist/apps/test-api/bundle"
|
|
6695
6771
|
output_path = "\${path.module}/../../../../../../../dist/packages/common/terraform/apis/test-api/lambda.zip"
|
|
6696
6772
|
}
|
|
6697
6773
|
|
|
6774
|
+
resource "aws_s3_object" "lambda_zip" {
|
|
6775
|
+
bucket = var.asset_bucket_name
|
|
6776
|
+
key = "apis/test-api/\${data.archive_file.lambda_zip.output_base64sha256}.zip"
|
|
6777
|
+
source = data.archive_file.lambda_zip.output_path
|
|
6778
|
+
source_hash = data.archive_file.lambda_zip.output_base64sha256
|
|
6779
|
+
etag = data.archive_file.lambda_zip.output_md5
|
|
6780
|
+
}
|
|
6781
|
+
|
|
6698
6782
|
# Use the core REST API module
|
|
6699
6783
|
module "rest_api" {
|
|
6700
6784
|
source = "../../../core/api/rest-api"
|
|
6701
6785
|
|
|
6702
|
-
api_name = "TestApi"
|
|
6786
|
+
api_name = "TestApi-\${random_string.suffix.result}"
|
|
6703
6787
|
api_description = "TestApi REST API"
|
|
6704
6788
|
stage_name = "prod"
|
|
6705
6789
|
stage_auto_deploy = true
|
|
@@ -6732,8 +6816,10 @@ resource "aws_lambda_function" "api_lambda" {
|
|
|
6732
6816
|
#checkov:skip=CKV_AWS_272:Code signing not required for this use case
|
|
6733
6817
|
#checkov:skip=CKV_AWS_115:Concurrent execution limit not required for this use case
|
|
6734
6818
|
#checkov:skip=CKV_AWS_173:Lambda environment variables encrypted by managed key
|
|
6735
|
-
|
|
6736
|
-
|
|
6819
|
+
s3_bucket = aws_s3_object.lambda_zip.bucket
|
|
6820
|
+
s3_key = aws_s3_object.lambda_zip.key
|
|
6821
|
+
s3_object_version = aws_s3_object.lambda_zip.version_id
|
|
6822
|
+
function_name = "TestApiHandler-\${random_string.suffix.result}"
|
|
6737
6823
|
role = aws_iam_role.lambda_execution_role.arn
|
|
6738
6824
|
handler = "index.handler"
|
|
6739
6825
|
runtime = "nodejs22.x"
|
|
@@ -6758,7 +6844,7 @@ resource "aws_lambda_function" "api_lambda" {
|
|
|
6758
6844
|
|
|
6759
6845
|
# IAM role for Lambda execution
|
|
6760
6846
|
resource "aws_iam_role" "lambda_execution_role" {
|
|
6761
|
-
name = "TestApiHandler-execution-role"
|
|
6847
|
+
name = "TestApiHandler-execution-role-\${random_string.suffix.result}"
|
|
6762
6848
|
|
|
6763
6849
|
assume_role_policy = jsonencode({
|
|
6764
6850
|
Version = "2012-10-17"
|
|
@@ -6791,7 +6877,7 @@ resource "aws_iam_role_policy_attachment" "lambda_xray_execution" {
|
|
|
6791
6877
|
# Additional IAM policies for Lambda (if provided)
|
|
6792
6878
|
resource "aws_iam_role_policy" "lambda_additional_policies" {
|
|
6793
6879
|
count = length(var.additional_iam_policy_statements) > 0 ? 1 : 0
|
|
6794
|
-
name = "TestApiHandler-additional-policies"
|
|
6880
|
+
name = "TestApiHandler-additional-policies-\${random_string.suffix.result}"
|
|
6795
6881
|
role = aws_iam_role.lambda_execution_role.id
|
|
6796
6882
|
|
|
6797
6883
|
policy = jsonencode({
|
|
@@ -6805,7 +6891,7 @@ resource "aws_cloudwatch_log_group" "lambda_logs" {
|
|
|
6805
6891
|
#checkov:skip=CKV_AWS_158:Using default CloudWatch log encryption
|
|
6806
6892
|
#checkov:skip=CKV_AWS_338:Log retention set to forever
|
|
6807
6893
|
#checkov:skip=CKV_AWS_66:Log retention set to forever
|
|
6808
|
-
name = "/aws/lambda/TestApiHandler"
|
|
6894
|
+
name = "/aws/lambda/TestApiHandler-\${random_string.suffix.result}"
|
|
6809
6895
|
tags = var.tags
|
|
6810
6896
|
}
|
|
6811
6897
|
|
|
@@ -6986,14 +7072,6 @@ module "add_url_to_runtime_config" {
|
|
|
6986
7072
|
depends_on = [aws_api_gateway_stage.api_stage]
|
|
6987
7073
|
}
|
|
6988
7074
|
|
|
6989
|
-
module "appconfig" {
|
|
6990
|
-
source = "../../../core/runtime-config/appconfig"
|
|
6991
|
-
|
|
6992
|
-
application_name = "TestApi-runtime-config"
|
|
6993
|
-
|
|
6994
|
-
depends_on = [module.add_url_to_runtime_config]
|
|
6995
|
-
}
|
|
6996
|
-
|
|
6997
7075
|
# Outputs
|
|
6998
7076
|
|
|
6999
7077
|
# API Gateway Outputs (from core module)
|