@aws/nx-plugin 0.119.0 → 0.121.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/mcp-server/generator-info.d.ts +2 -6
- package/src/mcp-server/generator-info.js +19 -40
- package/src/mcp-server/generator-info.js.map +1 -1
- package/src/preset/generator.js +1 -0
- package/src/preset/generator.js.map +1 -1
- package/src/py/agent/generator.js +4 -1
- package/src/py/agent/generator.js.map +1 -1
- package/src/py/agent/schema.json +1 -1
- package/src/py/fast-api/__snapshots__/generator.spec.ts.snap +197 -12
- package/src/py/fast-api/generator.js +9 -0
- package/src/py/fast-api/generator.js.map +1 -1
- package/src/py/fast-api/schema.d.ts +1 -1
- package/src/py/fast-api/schema.json +2 -2
- package/src/py/mcp-server/generator.js +3 -0
- package/src/py/mcp-server/generator.js.map +1 -1
- package/src/py/mcp-server/schema.json +1 -1
- package/src/smithy/ts/api/__snapshots__/generator.spec.ts.snap +195 -11
- package/src/smithy/ts/api/generator.js +18 -0
- package/src/smithy/ts/api/generator.js.map +1 -1
- package/src/smithy/ts/api/schema.d.ts +1 -1
- package/src/smithy/ts/api/schema.json +2 -2
- package/src/trpc/backend/__snapshots__/generator.spec.ts.snap +258 -25
- package/src/trpc/backend/generator.js +19 -0
- package/src/trpc/backend/generator.js.map +1 -1
- package/src/trpc/backend/schema.d.ts +1 -1
- package/src/trpc/backend/schema.json +2 -2
- package/src/trpc/react/__snapshots__/generator.spec.ts.snap +28 -18
- package/src/trpc/react/files/src/components/__apiNameClassName__ClientProvider.tsx.template +9 -6
- package/src/trpc/react/generator.js +2 -6
- package/src/trpc/react/generator.js.map +1 -1
- package/src/ts/agent/generator.js +4 -1
- package/src/ts/agent/generator.js.map +1 -1
- package/src/ts/agent/schema.json +1 -1
- package/src/ts/mcp-server/generator.js +3 -0
- package/src/ts/mcp-server/generator.js.map +1 -1
- package/src/ts/mcp-server/schema.json +1 -1
- package/src/utils/api-constructs/api-constructs.d.ts +3 -1
- package/src/utils/api-constructs/api-constructs.js.map +1 -1
- package/src/utils/api-constructs/files/cdk/app/apis/http/__apiNameKebabCase__.ts.template +38 -6
- package/src/utils/api-constructs/files/cdk/app/apis/rest/__apiNameKebabCase__.ts.template +39 -3
- package/src/utils/api-constructs/files/cdk/authorizer/http/authorizer.ts.template +34 -0
- package/src/utils/api-constructs/files/cdk/authorizer/rest/authorizer.ts.template +52 -0
- package/src/utils/api-constructs/files/py-authorizer/http/authorizer.py.template +25 -0
- package/src/utils/api-constructs/files/py-authorizer/rest/authorizer.py.template +39 -0
- package/src/utils/api-constructs/files/terraform/app/apis/http/__apiNameKebabCase__/__apiNameKebabCase__.tf.template +112 -5
- package/src/utils/api-constructs/files/terraform/app/apis/rest/__apiNameKebabCase__/__apiNameKebabCase__.tf.template +114 -6
- package/src/utils/commands.d.ts +1 -1
- package/src/utils/commands.js +3 -2
- package/src/utils/commands.js.map +1 -1
- package/src/utils/connection/open-api/react.d.ts +1 -1
|
@@ -47,9 +47,9 @@
|
|
|
47
47
|
},
|
|
48
48
|
"auth": {
|
|
49
49
|
"type": "string",
|
|
50
|
-
"description": "The method used to authenticate with your API. Choose between IAM (default), Cognito or
|
|
50
|
+
"description": "The method used to authenticate with your API. Choose between IAM (default), Cognito or Custom.",
|
|
51
51
|
"default": "IAM",
|
|
52
|
-
"enum": ["IAM", "Cognito", "
|
|
52
|
+
"enum": ["IAM", "Cognito", "Custom"],
|
|
53
53
|
"x-prompt": "How would you like users to authenticate with your API?",
|
|
54
54
|
"x-priority": "important"
|
|
55
55
|
},
|
|
@@ -42,6 +42,9 @@ const pyMcpServerGenerator = async (tree, options) => {
|
|
|
42
42
|
const mcpServerNameClassName = (0, names_1.toClassName)(name);
|
|
43
43
|
const targetSourceDir = (0, devkit_1.joinPathFragments)(project.sourceRoot, mcpServerNameSnakeCase);
|
|
44
44
|
const computeType = options.computeType ?? 'BedrockAgentCoreRuntime';
|
|
45
|
+
if (computeType === 'None' && options.auth && options.auth !== 'IAM') {
|
|
46
|
+
console.warn('Warning: auth is ignored when no compute type is configured (no infrastructure is generated)');
|
|
47
|
+
}
|
|
45
48
|
const auth = options.auth ?? 'IAM';
|
|
46
49
|
// Generate example server
|
|
47
50
|
(0, devkit_1.generateFiles)(tree, (0, devkit_1.joinPathFragments)(__dirname, 'files', 'app'), targetSourceDir, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../../packages/nx-plugin/src/py/mcp-server/generator.ts"],"names":[],"mappings":";;;AAAA;;;GAGG;AACH,uCASoB;AAEpB,uCAKwB;AACxB,iDAAsE;AACtE,+CAA0D;AAC1D,6CAAwE;AACxE,uCAAgE;AAChE,qDAAoD;AACpD,mGAA4F;AAE5F,qEAA0E;AAC1E,sDAAkE;AAClE,uCAA4C;AAC5C,mDAAoD;AACpD,yDAA6D;AAC7D,yCAAqD;AACrD,uDAAgE;AAChE,2CAA8C;AAC9C,6CAA0D;AAE7C,QAAA,4BAA4B,GACvC,IAAA,qBAAgB,EAAC,UAAU,CAAC,CAAC;AAExB,MAAM,oBAAoB,GAAG,KAAK,EACvC,IAAU,EACV,OAAmC,EACP,EAAE;IAC9B,MAAM,OAAO,GAAG,IAAA,wCAAmC,EAAC,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;IAE3E,MAAM,aAAa,GAAG,IAAA,0BAAiB,EAAC,OAAO,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC;IAExE,iDAAiD;IACjD,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CACb,uBAAuB,OAAO,CAAC,OAAO,qDAAqD,CAC5F,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CACb,gIAAgI,CACjI,CAAC;IACJ,CAAC;IAED,mDAAmD;IACnD,MAAM,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAClD,MAAM,UAAU,GAAG,WAAW,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAEvD,MAAM,IAAI,GAAG,IAAA,iBAAS,EACpB,OAAO,CAAC,IAAI,IAAI,GAAG,IAAA,iBAAS,EAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,aAAa,CACzE,CAAC;IACF,MAAM,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC;IAE3D,MAAM,sBAAsB,GAAG,IAAA,mBAAW,EAAC,OAAO,CAAC,IAAI,IAAI,YAAY,CAAC,CAAC;IACzE,MAAM,sBAAsB,GAAG,IAAA,mBAAW,EAAC,IAAI,CAAC,CAAC;IAEjD,MAAM,eAAe,GAAG,IAAA,0BAAiB,EACvC,OAAO,CAAC,UAAU,EAClB,sBAAsB,CACvB,CAAC;IAEF,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../../packages/nx-plugin/src/py/mcp-server/generator.ts"],"names":[],"mappings":"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"}
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
},
|
|
31
31
|
"auth": {
|
|
32
32
|
"type": "string",
|
|
33
|
-
"description": "The method used to authenticate with your MCP server.
|
|
33
|
+
"description": "The method used to authenticate with your MCP server. Only applicable when computeType is set (ignored when computeType is None).",
|
|
34
34
|
"default": "IAM",
|
|
35
35
|
"enum": ["IAM", "Cognito"],
|
|
36
36
|
"x-prompt": "How would you like to authenticate with your MCP server?",
|
|
@@ -899,6 +899,98 @@ resource "aws_cloudwatch_log_group" "lambda_logs" {
|
|
|
899
899
|
}
|
|
900
900
|
|
|
901
901
|
|
|
902
|
+
# Custom Lambda Authorizer
|
|
903
|
+
resource "aws_lambda_function" "authorizer_lambda" {
|
|
904
|
+
#checkov:skip=CKV_AWS_117:Lambda function does not need to be in VPC for this use case
|
|
905
|
+
#checkov:skip=CKV_AWS_116:Dead Letter Queue not required for authorizer
|
|
906
|
+
#checkov:skip=CKV_AWS_272:Code signing not required for this use case
|
|
907
|
+
#checkov:skip=CKV_AWS_115:Concurrent execution limit not required for this use case
|
|
908
|
+
#checkov:skip=CKV_AWS_173:Lambda environment variables encrypted by managed key
|
|
909
|
+
s3_bucket = aws_s3_object.authorizer_zip.bucket
|
|
910
|
+
s3_key = aws_s3_object.authorizer_zip.key
|
|
911
|
+
s3_object_version = aws_s3_object.authorizer_zip.version_id
|
|
912
|
+
function_name = "TestApiAuthorizer-\${random_string.suffix.result}"
|
|
913
|
+
role = aws_iam_role.authorizer_execution_role.arn
|
|
914
|
+
handler = "index.handler"
|
|
915
|
+
runtime = "nodejs22.x"
|
|
916
|
+
timeout = 10
|
|
917
|
+
memory_size = 128
|
|
918
|
+
|
|
919
|
+
source_code_hash = data.archive_file.authorizer_zip.output_base64sha256
|
|
920
|
+
|
|
921
|
+
tracing_config {
|
|
922
|
+
mode = "Active"
|
|
923
|
+
}
|
|
924
|
+
|
|
925
|
+
tags = var.tags
|
|
926
|
+
}
|
|
927
|
+
|
|
928
|
+
resource "aws_iam_role" "authorizer_execution_role" {
|
|
929
|
+
name = "TestApiAuthorizer-role-\${random_string.suffix.result}"
|
|
930
|
+
|
|
931
|
+
assume_role_policy = jsonencode({
|
|
932
|
+
Version = "2012-10-17"
|
|
933
|
+
Statement = [
|
|
934
|
+
{
|
|
935
|
+
Action = "sts:AssumeRole"
|
|
936
|
+
Effect = "Allow"
|
|
937
|
+
Principal = {
|
|
938
|
+
Service = "lambda.amazonaws.com"
|
|
939
|
+
}
|
|
940
|
+
}
|
|
941
|
+
]
|
|
942
|
+
})
|
|
943
|
+
|
|
944
|
+
tags = var.tags
|
|
945
|
+
}
|
|
946
|
+
|
|
947
|
+
resource "aws_iam_role_policy_attachment" "authorizer_basic_execution" {
|
|
948
|
+
policy_arn = "arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"
|
|
949
|
+
role = aws_iam_role.authorizer_execution_role.name
|
|
950
|
+
}
|
|
951
|
+
|
|
952
|
+
resource "aws_iam_role_policy_attachment" "authorizer_xray_execution" {
|
|
953
|
+
policy_arn = "arn:aws:iam::aws:policy/AWSXRayDaemonWriteAccess"
|
|
954
|
+
role = aws_iam_role.authorizer_execution_role.name
|
|
955
|
+
}
|
|
956
|
+
|
|
957
|
+
resource "aws_cloudwatch_log_group" "authorizer_logs" {
|
|
958
|
+
#checkov:skip=CKV_AWS_158:Using default CloudWatch log encryption
|
|
959
|
+
#checkov:skip=CKV_AWS_338:Log retention set to forever
|
|
960
|
+
#checkov:skip=CKV_AWS_66:Log retention set to forever
|
|
961
|
+
name = "/aws/lambda/TestApiAuthorizer-\${random_string.suffix.result}"
|
|
962
|
+
tags = var.tags
|
|
963
|
+
}
|
|
964
|
+
|
|
965
|
+
data "archive_file" "authorizer_zip" {
|
|
966
|
+
type = "zip"
|
|
967
|
+
source_dir = "\${path.module}/../../../../../../../dist/test-api/backend/bundle/authorizer"
|
|
968
|
+
output_path = "\${path.module}/../../../../../../../dist/packages/common/terraform/apis/test-api/authorizer.zip"
|
|
969
|
+
}
|
|
970
|
+
|
|
971
|
+
resource "aws_s3_object" "authorizer_zip" {
|
|
972
|
+
bucket = var.asset_bucket_name
|
|
973
|
+
key = "apis/test-api/authorizer-\${data.archive_file.authorizer_zip.output_sha256}.zip"
|
|
974
|
+
source = data.archive_file.authorizer_zip.output_path
|
|
975
|
+
source_hash = data.archive_file.authorizer_zip.output_base64sha256
|
|
976
|
+
etag = data.archive_file.authorizer_zip.output_md5
|
|
977
|
+
}
|
|
978
|
+
|
|
979
|
+
resource "aws_api_gateway_authorizer" "custom_authorizer" {
|
|
980
|
+
name = "TestApiAuthorizer-\${random_string.suffix.result}"
|
|
981
|
+
rest_api_id = module.rest_api.api_id
|
|
982
|
+
type = "TOKEN"
|
|
983
|
+
authorizer_uri = aws_lambda_function.authorizer_lambda.invoke_arn
|
|
984
|
+
identity_source = "method.request.header.Authorization"
|
|
985
|
+
}
|
|
986
|
+
|
|
987
|
+
resource "aws_lambda_permission" "authorizer_invoke" {
|
|
988
|
+
statement_id = "AllowAPIGatewayInvokeAuthorizer"
|
|
989
|
+
action = "lambda:InvokeFunction"
|
|
990
|
+
function_name = aws_lambda_function.authorizer_lambda.function_name
|
|
991
|
+
principal = "apigateway.amazonaws.com"
|
|
992
|
+
source_arn = "\${module.rest_api.api_execution_arn}/authorizers/\${aws_api_gateway_authorizer.custom_authorizer.id}"
|
|
993
|
+
}
|
|
902
994
|
|
|
903
995
|
# Create proxy resource (captures all paths)
|
|
904
996
|
resource "aws_api_gateway_resource" "proxy_resource" {
|
|
@@ -927,15 +1019,14 @@ resource "aws_api_gateway_method" "proxy_method" {
|
|
|
927
1019
|
resource_id = aws_api_gateway_resource.proxy_resource.id
|
|
928
1020
|
http_method = "ANY"
|
|
929
1021
|
|
|
930
|
-
|
|
931
|
-
|
|
932
|
-
authorization = "NONE"
|
|
1022
|
+
authorization = "CUSTOM"
|
|
1023
|
+
authorizer_id = aws_api_gateway_authorizer.custom_authorizer.id
|
|
933
1024
|
|
|
934
1025
|
request_parameters = {
|
|
935
1026
|
"method.request.path.proxy" = true
|
|
936
1027
|
}
|
|
937
1028
|
|
|
938
|
-
depends_on = []
|
|
1029
|
+
depends_on = [aws_api_gateway_authorizer.custom_authorizer]
|
|
939
1030
|
}
|
|
940
1031
|
|
|
941
1032
|
# OPTIONS method for CORS preflight
|
|
@@ -1013,6 +1104,7 @@ resource "aws_api_gateway_deployment" "api_deployment" {
|
|
|
1013
1104
|
aws_api_gateway_integration.options_integration,
|
|
1014
1105
|
aws_api_gateway_method_response.options_response,
|
|
1015
1106
|
aws_api_gateway_integration_response.options_integration_response,
|
|
1107
|
+
aws_api_gateway_authorizer.custom_authorizer,
|
|
1016
1108
|
]
|
|
1017
1109
|
}
|
|
1018
1110
|
|
|
@@ -1041,7 +1133,7 @@ resource "aws_api_gateway_rest_api_policy" "api_policy" {
|
|
|
1041
1133
|
Version = "2012-10-17"
|
|
1042
1134
|
Statement = [
|
|
1043
1135
|
{
|
|
1044
|
-
# Allow all callers to invoke the API in the resource policy
|
|
1136
|
+
# Allow all callers to invoke the API in the resource policy, since auth is handled by the Lambda Authorizer
|
|
1045
1137
|
Effect = "Allow"
|
|
1046
1138
|
Principal = "*"
|
|
1047
1139
|
Action = "execute-api:Invoke"
|
|
@@ -1231,7 +1323,7 @@ exports[`tsSmithyApiGenerator > should generate smithy ts api with default optio
|
|
|
1231
1323
|
"metadata": {
|
|
1232
1324
|
"generator": "ts#smithy-api",
|
|
1233
1325
|
"apiName": "test-api",
|
|
1234
|
-
"auth": "
|
|
1326
|
+
"auth": "Custom",
|
|
1235
1327
|
"modelProject": "@proj/test-api-model",
|
|
1236
1328
|
"ports": [3001]
|
|
1237
1329
|
},
|
|
@@ -3399,6 +3491,98 @@ resource "aws_cloudwatch_log_group" "lambda_logs" {
|
|
|
3399
3491
|
}
|
|
3400
3492
|
|
|
3401
3493
|
|
|
3494
|
+
# Custom Lambda Authorizer
|
|
3495
|
+
resource "aws_lambda_function" "authorizer_lambda" {
|
|
3496
|
+
#checkov:skip=CKV_AWS_117:Lambda function does not need to be in VPC for this use case
|
|
3497
|
+
#checkov:skip=CKV_AWS_116:Dead Letter Queue not required for authorizer
|
|
3498
|
+
#checkov:skip=CKV_AWS_272:Code signing not required for this use case
|
|
3499
|
+
#checkov:skip=CKV_AWS_115:Concurrent execution limit not required for this use case
|
|
3500
|
+
#checkov:skip=CKV_AWS_173:Lambda environment variables encrypted by managed key
|
|
3501
|
+
s3_bucket = aws_s3_object.authorizer_zip.bucket
|
|
3502
|
+
s3_key = aws_s3_object.authorizer_zip.key
|
|
3503
|
+
s3_object_version = aws_s3_object.authorizer_zip.version_id
|
|
3504
|
+
function_name = "CustomApiAuthorizer-\${random_string.suffix.result}"
|
|
3505
|
+
role = aws_iam_role.authorizer_execution_role.arn
|
|
3506
|
+
handler = "index.handler"
|
|
3507
|
+
runtime = "nodejs22.x"
|
|
3508
|
+
timeout = 10
|
|
3509
|
+
memory_size = 128
|
|
3510
|
+
|
|
3511
|
+
source_code_hash = data.archive_file.authorizer_zip.output_base64sha256
|
|
3512
|
+
|
|
3513
|
+
tracing_config {
|
|
3514
|
+
mode = "Active"
|
|
3515
|
+
}
|
|
3516
|
+
|
|
3517
|
+
tags = var.tags
|
|
3518
|
+
}
|
|
3519
|
+
|
|
3520
|
+
resource "aws_iam_role" "authorizer_execution_role" {
|
|
3521
|
+
name = "CustomApiAuthorizer-role-\${random_string.suffix.result}"
|
|
3522
|
+
|
|
3523
|
+
assume_role_policy = jsonencode({
|
|
3524
|
+
Version = "2012-10-17"
|
|
3525
|
+
Statement = [
|
|
3526
|
+
{
|
|
3527
|
+
Action = "sts:AssumeRole"
|
|
3528
|
+
Effect = "Allow"
|
|
3529
|
+
Principal = {
|
|
3530
|
+
Service = "lambda.amazonaws.com"
|
|
3531
|
+
}
|
|
3532
|
+
}
|
|
3533
|
+
]
|
|
3534
|
+
})
|
|
3535
|
+
|
|
3536
|
+
tags = var.tags
|
|
3537
|
+
}
|
|
3538
|
+
|
|
3539
|
+
resource "aws_iam_role_policy_attachment" "authorizer_basic_execution" {
|
|
3540
|
+
policy_arn = "arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"
|
|
3541
|
+
role = aws_iam_role.authorizer_execution_role.name
|
|
3542
|
+
}
|
|
3543
|
+
|
|
3544
|
+
resource "aws_iam_role_policy_attachment" "authorizer_xray_execution" {
|
|
3545
|
+
policy_arn = "arn:aws:iam::aws:policy/AWSXRayDaemonWriteAccess"
|
|
3546
|
+
role = aws_iam_role.authorizer_execution_role.name
|
|
3547
|
+
}
|
|
3548
|
+
|
|
3549
|
+
resource "aws_cloudwatch_log_group" "authorizer_logs" {
|
|
3550
|
+
#checkov:skip=CKV_AWS_158:Using default CloudWatch log encryption
|
|
3551
|
+
#checkov:skip=CKV_AWS_338:Log retention set to forever
|
|
3552
|
+
#checkov:skip=CKV_AWS_66:Log retention set to forever
|
|
3553
|
+
name = "/aws/lambda/CustomApiAuthorizer-\${random_string.suffix.result}"
|
|
3554
|
+
tags = var.tags
|
|
3555
|
+
}
|
|
3556
|
+
|
|
3557
|
+
data "archive_file" "authorizer_zip" {
|
|
3558
|
+
type = "zip"
|
|
3559
|
+
source_dir = "\${path.module}/../../../../../../../dist/custom-api/backend/bundle/authorizer"
|
|
3560
|
+
output_path = "\${path.module}/../../../../../../../dist/packages/common/terraform/apis/custom-api/authorizer.zip"
|
|
3561
|
+
}
|
|
3562
|
+
|
|
3563
|
+
resource "aws_s3_object" "authorizer_zip" {
|
|
3564
|
+
bucket = var.asset_bucket_name
|
|
3565
|
+
key = "apis/custom-api/authorizer-\${data.archive_file.authorizer_zip.output_sha256}.zip"
|
|
3566
|
+
source = data.archive_file.authorizer_zip.output_path
|
|
3567
|
+
source_hash = data.archive_file.authorizer_zip.output_base64sha256
|
|
3568
|
+
etag = data.archive_file.authorizer_zip.output_md5
|
|
3569
|
+
}
|
|
3570
|
+
|
|
3571
|
+
resource "aws_api_gateway_authorizer" "custom_authorizer" {
|
|
3572
|
+
name = "CustomApiAuthorizer-\${random_string.suffix.result}"
|
|
3573
|
+
rest_api_id = module.rest_api.api_id
|
|
3574
|
+
type = "TOKEN"
|
|
3575
|
+
authorizer_uri = aws_lambda_function.authorizer_lambda.invoke_arn
|
|
3576
|
+
identity_source = "method.request.header.Authorization"
|
|
3577
|
+
}
|
|
3578
|
+
|
|
3579
|
+
resource "aws_lambda_permission" "authorizer_invoke" {
|
|
3580
|
+
statement_id = "AllowAPIGatewayInvokeAuthorizer"
|
|
3581
|
+
action = "lambda:InvokeFunction"
|
|
3582
|
+
function_name = aws_lambda_function.authorizer_lambda.function_name
|
|
3583
|
+
principal = "apigateway.amazonaws.com"
|
|
3584
|
+
source_arn = "\${module.rest_api.api_execution_arn}/authorizers/\${aws_api_gateway_authorizer.custom_authorizer.id}"
|
|
3585
|
+
}
|
|
3402
3586
|
|
|
3403
3587
|
# Create proxy resource (captures all paths)
|
|
3404
3588
|
resource "aws_api_gateway_resource" "proxy_resource" {
|
|
@@ -3427,15 +3611,14 @@ resource "aws_api_gateway_method" "proxy_method" {
|
|
|
3427
3611
|
resource_id = aws_api_gateway_resource.proxy_resource.id
|
|
3428
3612
|
http_method = "ANY"
|
|
3429
3613
|
|
|
3430
|
-
|
|
3431
|
-
|
|
3432
|
-
authorization = "NONE"
|
|
3614
|
+
authorization = "CUSTOM"
|
|
3615
|
+
authorizer_id = aws_api_gateway_authorizer.custom_authorizer.id
|
|
3433
3616
|
|
|
3434
3617
|
request_parameters = {
|
|
3435
3618
|
"method.request.path.proxy" = true
|
|
3436
3619
|
}
|
|
3437
3620
|
|
|
3438
|
-
depends_on = []
|
|
3621
|
+
depends_on = [aws_api_gateway_authorizer.custom_authorizer]
|
|
3439
3622
|
}
|
|
3440
3623
|
|
|
3441
3624
|
# OPTIONS method for CORS preflight
|
|
@@ -3513,6 +3696,7 @@ resource "aws_api_gateway_deployment" "api_deployment" {
|
|
|
3513
3696
|
aws_api_gateway_integration.options_integration,
|
|
3514
3697
|
aws_api_gateway_method_response.options_response,
|
|
3515
3698
|
aws_api_gateway_integration_response.options_integration_response,
|
|
3699
|
+
aws_api_gateway_authorizer.custom_authorizer,
|
|
3516
3700
|
]
|
|
3517
3701
|
}
|
|
3518
3702
|
|
|
@@ -3541,7 +3725,7 @@ resource "aws_api_gateway_rest_api_policy" "api_policy" {
|
|
|
3541
3725
|
Version = "2012-10-17"
|
|
3542
3726
|
Statement = [
|
|
3543
3727
|
{
|
|
3544
|
-
# Allow all callers to invoke the API in the resource policy
|
|
3728
|
+
# Allow all callers to invoke the API in the resource policy, since auth is handled by the Lambda Authorizer
|
|
3545
3729
|
Effect = "Allow"
|
|
3546
3730
|
Principal = "*"
|
|
3547
3731
|
Action = "execute-api:Invoke"
|
|
@@ -66,6 +66,11 @@ const tsSmithyApiGenerator = async (tree, options) => {
|
|
|
66
66
|
apiNameClassName,
|
|
67
67
|
port,
|
|
68
68
|
});
|
|
69
|
+
if (options.auth === 'Custom') {
|
|
70
|
+
(0, devkit_1.generateFiles)(tree, (0, devkit_1.joinPathFragments)(__dirname, '..', '..', '..', 'utils', 'api-constructs', 'files', 'cdk', 'authorizer', 'rest'), backendProjectConfig.sourceRoot, {}, {
|
|
71
|
+
overwriteStrategy: devkit_1.OverwriteStrategy.KeepExisting,
|
|
72
|
+
});
|
|
73
|
+
}
|
|
69
74
|
// Add infrastructure
|
|
70
75
|
const iacProvider = await (0, iac_1.resolveIacProvider)(tree, options.iacProvider);
|
|
71
76
|
await (0, shared_constructs_1.sharedConstructsGenerator)(tree, {
|
|
@@ -82,6 +87,9 @@ const tsSmithyApiGenerator = async (tree, options) => {
|
|
|
82
87
|
type: 'smithy',
|
|
83
88
|
bundleOutputDir: (0, devkit_1.joinPathFragments)('dist', backendProjectConfig.root, 'bundle'),
|
|
84
89
|
integrationPattern,
|
|
90
|
+
...(options.auth === 'Custom' && {
|
|
91
|
+
authorizerBundleOutputDir: (0, devkit_1.joinPathFragments)('dist', backendProjectConfig.root, 'bundle', 'authorizer'),
|
|
92
|
+
}),
|
|
85
93
|
},
|
|
86
94
|
});
|
|
87
95
|
(0, open_api_metadata_1.addSharedConstructsOpenApiMetadataGenerateTarget)(tree, {
|
|
@@ -95,6 +103,13 @@ const tsSmithyApiGenerator = async (tree, options) => {
|
|
|
95
103
|
targetFilePath: 'src/handler.ts',
|
|
96
104
|
external: [/@aws-sdk\/.*/], // lambda runtime provides aws sdk
|
|
97
105
|
});
|
|
106
|
+
if (options.auth === 'Custom') {
|
|
107
|
+
await (0, bundle_1.addTypeScriptBundleTarget)(tree, backendProjectConfig, {
|
|
108
|
+
targetFilePath: 'src/authorizer.ts',
|
|
109
|
+
bundleOutputDir: 'authorizer',
|
|
110
|
+
external: [/@aws-sdk\/.*/],
|
|
111
|
+
});
|
|
112
|
+
}
|
|
98
113
|
const cmd = new fs_1.FsCommands(tree);
|
|
99
114
|
const generatedSrcDirFromRoot = '{projectRoot}/src/generated';
|
|
100
115
|
// Target for copying the ssdk built by the model
|
|
@@ -162,6 +177,9 @@ const tsSmithyApiGenerator = async (tree, options) => {
|
|
|
162
177
|
'@aws-lambda-powertools/tracer',
|
|
163
178
|
'@aws-lambda-powertools/metrics',
|
|
164
179
|
'@aws-sdk/client-appconfigdata',
|
|
180
|
+
...(options.auth === 'Custom'
|
|
181
|
+
? ['@aws-lambda-powertools/parser']
|
|
182
|
+
: []),
|
|
165
183
|
]), (0, versions_1.withVersions)(['@types/aws-lambda']));
|
|
166
184
|
await (0, metrics_1.addGeneratorMetricsIfApplicable)(tree, [exports.TS_SMITHY_API_GENERATOR_INFO]);
|
|
167
185
|
await (0, format_1.formatFilesInSubtree)(tree);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../../../packages/nx-plugin/src/smithy/ts/api/generator.ts"],"names":[],"mappings":";;;;AAAA;;;GAGG;AACH,
|
|
1
|
+
{"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../../../packages/nx-plugin/src/smithy/ts/api/generator.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,7 +12,7 @@ export interface TsSmithyApiGeneratorSchema {
|
|
|
12
12
|
// https://smithy.io/2.0/languages/typescript/ts-ssdk/supported-endpoints.html#amazon-api-gateway-rest-apis-and-aws-lambda
|
|
13
13
|
computeType: 'ServerlessApiGatewayRestApi';
|
|
14
14
|
integrationPattern?: 'isolated' | 'shared';
|
|
15
|
-
auth: 'IAM' | 'Cognito' | '
|
|
15
|
+
auth: 'IAM' | 'Cognito' | 'Custom';
|
|
16
16
|
directory?: TsProjectGeneratorSchema['directory'];
|
|
17
17
|
subDirectory?: TsProjectGeneratorSchema['subDirectory'];
|
|
18
18
|
iacProvider: IacProviderOption;
|
|
@@ -51,9 +51,9 @@
|
|
|
51
51
|
},
|
|
52
52
|
"auth": {
|
|
53
53
|
"type": "string",
|
|
54
|
-
"description": "The method used to authenticate with your API. Choose between IAM (default), Cognito or
|
|
54
|
+
"description": "The method used to authenticate with your API. Choose between IAM (default), Cognito or Custom.",
|
|
55
55
|
"default": "IAM",
|
|
56
|
-
"enum": ["IAM", "Cognito", "
|
|
56
|
+
"enum": ["IAM", "Cognito", "Custom"],
|
|
57
57
|
"x-prompt": "How would you like users to authenticate with your API?",
|
|
58
58
|
"x-priority": "important"
|
|
59
59
|
},
|