@sylvesterllc/aws-constructs 1.0.30 → 1.0.32
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/__tests__/data/testConfig.tsx +136 -0
- package/__tests__/mocks/ResourceMock.ts +10 -0
- package/__tests__/router.test.ts +195 -0
- package/dist/config/ServiceBundleConfig.d.ts +16 -0
- package/dist/config/ServiceBundleConfig.js +3 -0
- package/dist/config/customConfigs/ResourceAppConfig.d.ts +4 -1
- package/dist/config/customConfigs/ResourceAppConfig.js +1 -1
- package/dist/config/types/LogDuration.d.ts +8 -0
- package/dist/config/types/LogDuration.js +13 -0
- package/dist/config/types/TsgAuthorizerProp.d.ts +6 -0
- package/dist/config/types/TsgAuthorizerProp.js +3 -0
- package/dist/config/types/TsgAuthorizerType.d.ts +4 -0
- package/dist/config/types/TsgAuthorizerType.js +9 -0
- package/dist/config/types/TsgEc2Prop.d.ts +7 -0
- package/dist/config/types/TsgEc2Prop.js +3 -0
- package/dist/config/types/TsgKeyPair.d.ts +4 -0
- package/dist/config/types/TsgKeyPair.js +3 -0
- package/dist/config/types/TsgLambdaProp.d.ts +2 -0
- package/dist/config/types/TsgLambdaProp.js +1 -1
- package/dist/config/types/TsgLambdaProps.d.ts +0 -2
- package/dist/config/types/TsgLambdaProps.js +1 -1
- package/dist/config/types/index.d.ts +1 -0
- package/dist/config/types/index.js +2 -1
- package/dist/constructs/MicroService.js +4 -5
- package/dist/interfaces/ApiLambdaResult.d.ts +4 -0
- package/dist/interfaces/ApiLambdaResult.js +3 -0
- package/dist/resources/dynamodb/CreateDynamo.js +3 -3
- package/dist/resources/ec2/create-ec2-instance.d.ts +9 -0
- package/dist/resources/ec2/create-ec2-instance.js +42 -0
- package/dist/resources/gateway/CreateApiAndAttachLambdas.d.ts +24 -0
- package/dist/resources/gateway/CreateApiAndAttachLambdas.js +89 -0
- package/dist/resources/helpers/createRoutes.d.ts +2 -2
- package/dist/resources/helpers/createRoutes.js +3 -3
- package/dist/resources/lambda/createLambda.d.ts +5 -4
- package/dist/resources/lambda/createLambda.js +50 -29
- package/dist/resources/{helpers/createAuthorizer.d.ts → lambda-authorizer/TsgJwtTokenAuthorizer.d.ts} +2 -4
- package/dist/resources/lambda-authorizer/TsgJwtTokenAuthorizer.js +80 -0
- package/dist/resources/lambda-authorizer/TsgRequestAuthorizer.d.ts +12 -0
- package/dist/resources/lambda-authorizer/TsgRequestAuthorizer.js +32 -0
- package/dist/resources/lambda-authorizer/createAuthorizerHelpers.d.ts +5 -0
- package/dist/resources/lambda-authorizer/createAuthorizerHelpers.js +50 -0
- package/jest.config.js +9 -0
- package/jest.config.ts.old +20 -0
- package/package.json +13 -11
- package/src/config/ServiceBundleConfig.ts +18 -0
- package/src/config/customConfigs/ResourceAppConfig.ts +5 -1
- package/src/config/types/LogDuration.ts +8 -0
- package/src/config/types/TsgAuthorizerProp.ts +9 -0
- package/src/config/types/TsgAuthorizerType.ts +5 -0
- package/src/config/types/TsgEc2Prop.ts +9 -0
- package/src/config/types/TsgKeyPair.ts +6 -0
- package/src/config/types/TsgLambdaProp.ts +4 -0
- package/src/config/types/TsgLambdaProps.ts +0 -1
- package/src/config/types/index.ts +1 -1
- package/src/constructs/MicroService.ts +4 -8
- package/src/interfaces/ApiLambdaResult.ts +6 -0
- package/src/resources/dynamodb/CreateDynamo.ts +1 -1
- package/src/resources/ec2/create-ec2-instance.ts +53 -0
- package/src/resources/gateway/CreateApiAndAttachLambdas.ts +137 -0
- package/src/resources/helpers/createRoutes.ts +3 -3
- package/src/resources/lambda/createLambda.ts +84 -56
- package/src/resources/{helpers/createAuthorizer.ts → lambda-authorizer/TsgJwtTokenAuthorizer.ts} +3 -3
- package/src/resources/lambda-authorizer/TsgRequestAuthorizer.ts +36 -0
- package/src/resources/lambda-authorizer/createAuthorizerHelpers.ts +69 -0
- package/dist/resources/gateway/createMicroServiceBundle.d.ts +0 -25
- package/dist/resources/gateway/createMicroServiceBundle.js +0 -132
- package/dist/resources/helpers/createAuthorizer.js +0 -81
- package/src/resources/gateway/createMicroServiceBundle.ts +0 -192
|
@@ -1,132 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.CreateMicroServiceBundle = void 0;
|
|
4
|
-
const aws_dynamodb_1 = require("aws-cdk-lib/aws-dynamodb");
|
|
5
|
-
const aws_iam_1 = require("aws-cdk-lib/aws-iam");
|
|
6
|
-
const createAuthorizer_1 = require("../helpers/createAuthorizer");
|
|
7
|
-
const createRoutes_1 = require("../helpers/createRoutes");
|
|
8
|
-
const createLambda_1 = require("../lambda/createLambda");
|
|
9
|
-
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
10
|
-
const CreateDynamo_1 = require("../dynamodb/CreateDynamo");
|
|
11
|
-
class CreateMicroServiceBundle {
|
|
12
|
-
constructor(scope, gatewayApi, props, appConfig, tables, secretMgr, layers) {
|
|
13
|
-
this.gatewayApi = gatewayApi;
|
|
14
|
-
this.props = props;
|
|
15
|
-
this.appConfig = appConfig;
|
|
16
|
-
this.tables = tables;
|
|
17
|
-
this.secretMgr = secretMgr;
|
|
18
|
-
this.layers = layers;
|
|
19
|
-
this.requireDynamoTableRefs = (props.RESOURCES.DYNAMO?.TABLE_REFS?.length ?? 0 > 0) ? true : false;
|
|
20
|
-
this.requireAuthorizer = (props.RESOURCES.AUTHORIZER) ? true : false;
|
|
21
|
-
this.onInit(scope);
|
|
22
|
-
}
|
|
23
|
-
onInit(scope) {
|
|
24
|
-
let authorizer = undefined;
|
|
25
|
-
// Create Authorizer
|
|
26
|
-
if (this.requireAuthorizer) {
|
|
27
|
-
authorizer = new createAuthorizer_1.CreateAuthorizer(scope, this.appConfig, this.props.RESOURCES.AUTHORIZER).JwtAuthorizer;
|
|
28
|
-
authorizer._attachToApi(this.gatewayApi);
|
|
29
|
-
authorizer.applyRemovalPolicy(aws_cdk_lib_1.RemovalPolicy.DESTROY);
|
|
30
|
-
}
|
|
31
|
-
// Create Lambdas
|
|
32
|
-
const lambdaProp = {
|
|
33
|
-
scope,
|
|
34
|
-
prop: this.props,
|
|
35
|
-
layers: this.layers,
|
|
36
|
-
appConfig: this.appConfig
|
|
37
|
-
};
|
|
38
|
-
const lambdas = new createLambda_1.CreateLambda(lambdaProp, this.appConfig);
|
|
39
|
-
if (this.tables) {
|
|
40
|
-
this.AssignAccessToTables(this.tables, lambdas.Lambdas);
|
|
41
|
-
}
|
|
42
|
-
// Allow access to existing tables
|
|
43
|
-
// if (this.requireDynamoTableRefs) {
|
|
44
|
-
// this.AssignAccessToTableRefs(scope, this.props.RESOURCES.DYNAMO?.TABLE_REFS, lambdas.Lambdas);
|
|
45
|
-
// }
|
|
46
|
-
if (this.secretMgr) {
|
|
47
|
-
this.AssignAccessToSecretManager(this.secretMgr, lambdas.Lambdas);
|
|
48
|
-
}
|
|
49
|
-
// lambdas.Lambdas.map((lambda) => {
|
|
50
|
-
// lambda.metricErrors({
|
|
51
|
-
// label: `${lambda.functionName}-errors`,
|
|
52
|
-
// period: Duration.minutes(3)
|
|
53
|
-
// })
|
|
54
|
-
// });
|
|
55
|
-
this.AddRoutes(this.props, this.gatewayApi, lambdas.Lambdas, authorizer);
|
|
56
|
-
}
|
|
57
|
-
AssignAccessToTables(tables, lambdas) {
|
|
58
|
-
if (tables) {
|
|
59
|
-
lambdas.forEach((lambda) => {
|
|
60
|
-
tables.forEach((table) => {
|
|
61
|
-
// This is a CDK bug: It doesn't provide
|
|
62
|
-
// access to the indexes.
|
|
63
|
-
//table.grantReadWriteData(lambda);
|
|
64
|
-
// Workaround:
|
|
65
|
-
// lambda.addToRolePolicy(
|
|
66
|
-
// new PolicyStatement({
|
|
67
|
-
// effect: Effect.ALLOW,
|
|
68
|
-
// actions: CreateDynamoDb.ReadWriteActions,
|
|
69
|
-
// resources: [
|
|
70
|
-
// table.tableArn,
|
|
71
|
-
// `${table.tableArn}/*`, // This is not recognized by cdk, but table is. why?
|
|
72
|
-
// ],
|
|
73
|
-
// })
|
|
74
|
-
// );
|
|
75
|
-
table.grantReadWriteData(lambda);
|
|
76
|
-
});
|
|
77
|
-
});
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
AssignAccessToTableRefs(scope, tableRefs, lambdas) {
|
|
81
|
-
if (tableRefs) {
|
|
82
|
-
tableRefs.forEach((tableRef) => {
|
|
83
|
-
if (tableRef.region) {
|
|
84
|
-
this.AssignReadWriteAccessToTableInRegion(scope, tableRef, lambdas);
|
|
85
|
-
}
|
|
86
|
-
else {
|
|
87
|
-
this.AssignReadWriteAccessToTable(scope, tableRef, lambdas);
|
|
88
|
-
}
|
|
89
|
-
});
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
AssignReadWriteAccessToTableInRegion(scope, tableRef, lambdas) {
|
|
93
|
-
lambdas.forEach((lambda) => {
|
|
94
|
-
let tableArn = "arn:aws:dynamodb:" + tableRef.region + ":" + (scope.account) + ":table/" + tableRef.tableName;
|
|
95
|
-
let statement = new aws_iam_1.PolicyStatement({
|
|
96
|
-
effect: aws_iam_1.Effect.ALLOW,
|
|
97
|
-
resources: [
|
|
98
|
-
tableArn,
|
|
99
|
-
tableArn + "/index/*",
|
|
100
|
-
],
|
|
101
|
-
actions: CreateDynamo_1.CreateDynamoDb.ReadWriteActions,
|
|
102
|
-
});
|
|
103
|
-
lambda.role?.addToPrincipalPolicy(statement);
|
|
104
|
-
});
|
|
105
|
-
}
|
|
106
|
-
AssignReadWriteAccessToTable(scope, tableRef, lambdas) {
|
|
107
|
-
let table = aws_dynamodb_1.Table.fromTableName(scope, tableRef.tableName, tableRef.tableName);
|
|
108
|
-
lambdas.forEach((lambda) => {
|
|
109
|
-
table.grantReadWriteData(lambda);
|
|
110
|
-
});
|
|
111
|
-
}
|
|
112
|
-
AddRoutes(props, gateway, lambdas, authorizer) {
|
|
113
|
-
props.RESOURCES.LAMBDA?.forEach((prop) => {
|
|
114
|
-
const lambdaId = createLambda_1.CreateLambda.getIdForLambda(prop, this.appConfig);
|
|
115
|
-
if (!lambdaId) {
|
|
116
|
-
throw new Error(`Can't find lambda`);
|
|
117
|
-
}
|
|
118
|
-
const lambdaNode = lambdas.find(x => x.node.id === lambdaId);
|
|
119
|
-
if (!lambdaNode) {
|
|
120
|
-
throw new Error("Can't find the Lambda Integration");
|
|
121
|
-
}
|
|
122
|
-
createRoutes_1.Routes.createResource(prop, gateway, lambdaNode, authorizer);
|
|
123
|
-
});
|
|
124
|
-
}
|
|
125
|
-
AssignAccessToSecretManager(secret, lambdas) {
|
|
126
|
-
lambdas.forEach((lambda) => {
|
|
127
|
-
const result = secret.grantRead(lambda);
|
|
128
|
-
});
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
exports.CreateMicroServiceBundle = CreateMicroServiceBundle;
|
|
132
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlTWljcm9TZXJ2aWNlQnVuZGxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3Jlc291cmNlcy9nYXRld2F5L2NyZWF0ZU1pY3JvU2VydmljZUJ1bmRsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSwyREFBeUQ7QUFFekQsaURBQThEO0FBSzlELGtFQUErRDtBQUMvRCwwREFBaUQ7QUFDakQseURBQXNEO0FBQ3RELDZDQUE2RDtBQUM3RCwyREFBMEQ7QUFNMUQsTUFBYSx3QkFBd0I7SUFLakMsWUFBWSxLQUFnQixFQUNQLFVBQW9CLEVBQ3BCLEtBQXdCLEVBQ3hCLFNBQW9CLEVBQ3BCLE1BQWdCLEVBQ2hCLFNBQTBCLEVBQzFCLE1BQXVCO1FBTHZCLGVBQVUsR0FBVixVQUFVLENBQVU7UUFDcEIsVUFBSyxHQUFMLEtBQUssQ0FBbUI7UUFDeEIsY0FBUyxHQUFULFNBQVMsQ0FBVztRQUNwQixXQUFNLEdBQU4sTUFBTSxDQUFVO1FBQ2hCLGNBQVMsR0FBVCxTQUFTLENBQWlCO1FBQzFCLFdBQU0sR0FBTixNQUFNLENBQWlCO1FBR3hDLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUNuRyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUNyRSxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3ZCLENBQUM7SUFFTyxNQUFNLENBQUMsS0FBZ0I7UUFHM0IsSUFBSSxVQUFVLEdBQThCLFNBQVMsQ0FBQztRQUV0RCxvQkFBb0I7UUFDcEIs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LE1BQU0sVUFBVSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxRQUFRLENBQUMsQ0FBQztZQUU3RCxJQUFJLENBQUMsVUFBVSxFQUFFO2dCQUNiLE1BQU0sSUFBSSxLQUFLLENBQUMsbUNBQW1DLENBQUMsQ0FBQzthQUN4RDtZQUVELHFCQUFNLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBRWpFLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVPLDJCQUEyQixDQUFDLE1BQWUsRUFBRSxPQUF5QjtRQUUxRSxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7WUFDdkIsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUU1QyxDQUFDLENBQUMsQ0FBQztJQUVQLENBQUM7Q0FFSjtBQTdLRCw0REE2S0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJUmVzdEFwaSwgVG9rZW5BdXRob3JpemVyIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1hcGlnYXRld2F5XCI7XG5pbXBvcnQgeyBJVGFibGUsIFRhYmxlIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1keW5hbW9kYlwiO1xuaW1wb3J0IHsgTm9kZWpzRnVuY3Rpb24gfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWxhbWJkYS1ub2RlanNcIjtcbmltcG9ydCB7IEVmZmVjdCwgUG9saWN5U3RhdGVtZW50IH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1pYW1cIjtcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgeyBUc2dEeW5hbW9UYWJsZVJlZiwgVHNnTGFtYmRhUHJvcCB9IGZyb20gXCIuLi8uLi9jb25maWcvdHlwZXNcIjtcbmltcG9ydCB7IFRzZ0xhbWJkYVByb3BzIH0gZnJvbSBcIi4uLy4uL2NvbmZpZy90eXBlcy9Uc2dMYW1iZGFQcm9wc1wiO1xuaW1wb3J0IHsgTWljcm9zZXJ2aWNlUHJvcHMgfSBmcm9tIFwiLi4vLi4vaW50ZXJmYWNlcy9NaWNyb3NlcnZpY2VQcm9wc1wiO1xuaW1wb3J0IHsgQ3JlYXRlQXV0aG9yaXplciB9IGZyb20gXCIuLi9oZWxwZXJzL2NyZWF0ZUF1dGhvcml6ZXJcIjtcbmltcG9ydCB7IFJvdXRlcyB9IGZyb20gXCIuLi9oZWxwZXJzL2NyZWF0ZVJvdXRlc1wiO1xuaW1wb3J0IHsgQ3JlYXRlTGFtYmRhIH0gZnJvbSBcIi4uL2xhbWJkYS9jcmVhdGVMYW1iZGFcIjtcbmltcG9ydCB7IER1cmF0aW9uLCBSZW1vdmFsUG9saWN5LCBTdGFjayB9IGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuaW1wb3J0IHsgQ3JlYXRlRHluYW1vRGIgfSBmcm9tIFwiLi4vZHluYW1vZGIvQ3JlYXRlRHluYW1vXCI7XG5pbXBvcnQgeyBJU2VjcmV0IH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1zZWNyZXRzbWFuYWdlclwiO1xuaW1wb3J0IHsgTGF5ZXJWZXJzaW9uIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1sYW1iZGFcIjtcbmltcG9ydCB7IEFwcENvbmZpZyB9IGZyb20gXCIuLi8uLi9jb25maWcvQXBwQ29uZmlnXCI7XG5pbXBvcnQgeyBNZXRyaWNPcHRpb25zIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1jbG91ZHdhdGNoXCI7XG5cbmV4cG9ydCBjbGFzcyBDcmVhdGVNaWNyb1NlcnZpY2VCdW5kbGUge1xuICAgIFxuICAgIHByb3RlY3RlZCByZWFkb25seSByZXF1aXJlRHluYW1vVGFibGVSZWZzOiBib29sZWFuO1xuICAgIHByb3RlY3RlZCByZWFkb25seSByZXF1aXJlQXV0aG9yaXplcjogYm9vbGVhbjtcblxuICAgIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGdhdGV3YXlBcGk6IElSZXN0QXBpLCBcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBwcm9wczogTWljcm9zZXJ2aWNlUHJvcHMsICAgICAgICBcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBhcHBDb25maWc6IEFwcENvbmZpZyxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSB0YWJsZXM/OiBUYWJsZVtdLCBcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBzZWNyZXRNZ3I/OiBJU2VjcmV0IHwgbnVsbCwgXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgbGF5ZXJzPzogTGF5ZXJWZXJzaW9uW10sICAgICAgICBcbiAgICAgICAgKSB7XG4gICAgICAgIFxuICAgICAgICB0aGlzLnJlcXVpcmVEeW5hbW9UYWJsZVJlZnMgPSAocHJvcHMuUkVTT1VSQ0VTLkRZTkFNTz8uVEFCTEVfUkVGUz8ubGVuZ3RoID8/IDAgPiAwKSA/IHRydWUgOiBmYWxzZTtcbiAgICAgICAgdGhpcy5yZXF1aXJlQXV0aG9yaXplciA9IChwcm9wcy5SRVNPVVJDRVMuQVVUSE9SSVpFUikgPyB0cnVlIDogZmFsc2U7XG4gICAgICAgIHRoaXMub25Jbml0KHNjb3BlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG9uSW5pdChzY29wZTogQ29uc3RydWN0KSB7XG5cbiAgICAgICAgXG4gICAgICAgIGxldCBhdXRob3JpemVyOiBUb2tlbkF1dGhvcml6ZXJ8dW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuXG4gICAgICAgIC8vIENyZWF0ZSBBdXRob3JpemVyXG4gICAgICAgIGlmICh0aGlzLnJlcXVpcmVBdXRob3JpemVyKSB7XG4gICAgICAgICAgICBhdXRob3JpemVyID0gbmV3IENyZWF0ZUF1dGhvcml6ZXIoc2NvcGUsIHRoaXMuYXBwQ29uZmlnLCB0aGlzLnByb3BzLlJFU09VUkNFUy5BVVRIT1JJWkVSISkuSnd0QXV0aG9yaXplcjtcbiAgICAgICAgICAgIGF1dGhvcml6ZXIuX2F0dGFjaFRvQXBpKHRoaXMuZ2F0ZXdheUFwaSk7ICAgXG4gICAgICAgICAgICBhdXRob3JpemVyLmFwcGx5UmVtb3ZhbFBvbGljeShSZW1vdmFsUG9saWN5LkRFU1RST1kpO1xuICAgICAgICB9ICAgICAgICBcblxuICAgICAgICAvLyBDcmVhdGUgTGFtYmRhc1xuICAgICAgICBjb25zdCBsYW1iZGFQcm9wOiBUc2dMYW1iZGFQcm9wcyA9IHtcbiAgICAgICAgICAgIHNjb3BlLFxuICAgICAgICAgICAgcHJvcDogdGhpcy5wcm9wcywgICAgICAgICAgICBcbiAgICAgICAgICAgIGxheWVyczogdGhpcy5sYXllcnMsXG4gICAgICAgICAgICBhcHBDb25maWc6IHRoaXMuYXBwQ29uZmlnXG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3QgbGFtYmRhcyA9IG5ldyBDcmVhdGVMYW1iZGEobGFtYmRhUHJvcCwgdGhpcy5hcHBDb25maWcpO1xuXG4gICAgICAgIGlmICh0aGlzLnRhYmxlcykge1xuICAgICAgICAgICAgdGhpcy5Bc3NpZ25BY2Nlc3NUb1RhYmxlcyh0aGlzLnRhYmxlcywgbGFtYmRhcy5MYW1iZGFzKTtcbiAgICAgICAgfSAgICAgICAgXG5cbiAgICAgICAgLy8gQWxsb3cgYWNjZXNzIHRvIGV4aXN0aW5nIHRhYmxlc1xuICAgICAgICAvLyBpZiAodGhpcy5yZXF1aXJlRHluYW1vVGFibGVSZWZzKSB7XG4gICAgICAgIC8vICAgICB0aGlzLkFzc2lnbkFjY2Vzc1RvVGFibGVSZWZzKHNjb3BlLCB0aGlzLnByb3BzLlJFU09VUkNFUy5EWU5BTU8/LlRBQkxFX1JFRlMsIGxhbWJkYXMuTGFtYmRhcyk7XG4gICAgICAgIC8vIH1cblxuICAgICAgICBpZiAodGhpcy5zZWNyZXRNZ3IpIHtcbiAgICAgICAgICAgIHRoaXMuQXNzaWduQWNjZXNzVG9TZWNyZXRNYW5hZ2VyKHRoaXMuc2VjcmV0TWdyLCBsYW1iZGFzLkxhbWJkYXMpO1xuICAgICAgICB9ICAgICAgICBcblxuICAgICAgICAvLyBsYW1iZGFzLkxhbWJkYXMubWFwKChsYW1iZGEpID0+IHtcbiAgICAgICAgLy8gICAgIGxhbWJkYS5tZXRyaWNFcnJvcnMoeyAgICAgICAgICAgICAgICBcbiAgICAgICAgLy8gICAgICAgICAgICAgbGFiZWw6IGAke2xhbWJkYS5mdW5jdGlvbk5hbWV9LWVycm9yc2AsIFxuICAgICAgICAvLyAgICAgICAgICAgICBwZXJpb2Q6IER1cmF0aW9uLm1pbnV0ZXMoMykgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIFxuICAgICAgICAvLyAgICAgfSlcbiAgICAgICAgLy8gfSk7XG5cbiAgICAgICAgdGhpcy5BZGRSb3V0ZXModGhpcy5wcm9wcywgdGhpcy5nYXRld2F5QXBpLCBsYW1iZGFzLkxhbWJkYXMsIGF1dGhvcml6ZXIpO1xuICAgIH1cblxuICAgIHByaXZhdGUgQXNzaWduQWNjZXNzVG9UYWJsZXModGFibGVzOiBUYWJsZVtdLCBsYW1iZGFzOiBOb2RlanNGdW5jdGlvbltdKSB7XG5cbiAgICAgICAgaWYgKHRhYmxlcykge1xuICAgICAgICAgICAgbGFtYmRhcy5mb3JFYWNoKChsYW1iZGE6IE5vZGVqc0Z1bmN0aW9uKSA9PiB7XG4gICAgICAgICAgICBcbiAgICAgICAgICAgICAgICB0YWJsZXMuZm9yRWFjaCgodGFibGU6IElUYWJsZSkgPT4ge1xuXG4gICAgICAgICAgICAgICAgXG5cbiAgICAgICAgICAgICAgICAgICAgLy8gIFRoaXMgaXMgYSBDREsgYnVnOiBJdCBkb2Vzbid0IHByb3ZpZGVcbiAgICAgICAgICAgICAgICAgICAgLy8gIGFjY2VzcyB0byB0aGUgaW5kZXhlcy5cbiAgICAgICAgICAgICAgICAgICAgLy90YWJsZS5ncmFudFJlYWRXcml0ZURhdGEobGFtYmRhKTtcblxuICAgICAgICAgICAgICAgICAgICAvLyAgV29ya2Fyb3VuZDpcbiAgICAgICAgICAgICAgICAgICAgLy8gbGFtYmRhLmFkZFRvUm9sZVBvbGljeShcbiAgICAgICAgICAgICAgICAgICAgLy8gICAgIG5ldyBQb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgICAgICAgICAgICAvLyAgICAgICAgIGVmZmVjdDogRWZmZWN0LkFMTE9XLFxuICAgICAgICAgICAgICAgICAgICAvLyAgICAgICAgIGFjdGlvbnM6IENyZWF0ZUR5bmFtb0RiLlJlYWRXcml0ZUFjdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgIC8vICAgICAgICAgcmVzb3VyY2VzOiBbXG4gICAgICAgICAgICAgICAgICAgIC8vICAgICAgICAgICAgIHRhYmxlLnRhYmxlQXJuLFxuICAgICAgICAgICAgICAgICAgICAvLyAgICAgICAgICAgICBgJHt0YWJsZS50YWJsZUFybn0vKmAsIC8vIFRoaXMgaXMgbm90IHJlY29nbml6ZWQgYnkgY2RrLCBidXQgdGFibGUgaXMuICB3aHk/XG4gICAgICAgICAgICAgICAgICAgIC8vICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgLy8gICAgIH0pXG4gICAgICAgICAgICAgICAgICAgIC8vICk7XG5cbiAgICAgICAgICAgICAgICAgICAgdGFibGUuZ3JhbnRSZWFkV3JpdGVEYXRhKGxhbWJkYSk7XG4gICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIEFzc2lnbkFjY2Vzc1RvVGFibGVSZWZzKHNjb3BlOiBDb25zdHJ1Y3QsIHRhYmxlUmVmczogVHNnRHluYW1vVGFibGVSZWZbXSB8IHVuZGVmaW5lZCwgbGFtYmRhczogTm9kZWpzRnVuY3Rpb25bXSkge1xuXG4gICAgICAgIGlmICh0YWJsZVJlZnMpIHtcbiAgICAgICAgICAgIHRhYmxlUmVmcy5mb3JFYWNoKCh0YWJsZVJlZjogVHNnRHluYW1vVGFibGVSZWYpID0+IHtcblxuICAgICAgICAgICAgICAgIGlmICh0YWJsZVJlZi5yZWdpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5Bc3NpZ25SZWFkV3JpdGVBY2Nlc3NUb1RhYmxlSW5SZWdpb24oc2NvcGUsIHRhYmxlUmVmLCBsYW1iZGFzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuQXNzaWduUmVhZFdyaXRlQWNjZXNzVG9UYWJsZShzY29wZSwgdGFibGVSZWYsIGxhbWJkYXMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBBc3NpZ25SZWFkV3JpdGVBY2Nlc3NUb1RhYmxlSW5SZWdpb24oc2NvcGU6IENvbnN0cnVjdCwgdGFibGVSZWY6IFRzZ0R5bmFtb1RhYmxlUmVmLCBsYW1iZGFzOiBOb2RlanNGdW5jdGlvbltdKSB7XG4gICAgICAgIGxhbWJkYXMuZm9yRWFjaCgobGFtYmRhOiBOb2RlanNGdW5jdGlvbikgPT4ge1xuXG4gICAgICAgICAgICBsZXQgdGFibGVBcm4gPSBcImFybjphd3M6ZHluYW1vZGI6XCIgKyB0YWJsZVJlZi5yZWdpb24gKyBcIjpcIiArICgoc2NvcGUgYXMgU3RhY2spLmFjY291bnQpICsgXCI6dGFibGUvXCIgKyB0YWJsZVJlZi50YWJsZU5hbWU7XG4gICAgICAgICAgICBsZXQgc3RhdGVtZW50ID0gbmV3IFBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgICAgICAgICAgZWZmZWN0OiBFZmZlY3QuQUxMT1csXG4gICAgICAgICAgICAgICAgcmVzb3VyY2VzOiBbXG4gICAgICAgICAgICAgICAgICAgIHRhYmxlQXJuLFxuICAgICAgICAgICAgICAgICAgICB0YWJsZUFybiArIFwiL2luZGV4LypcIixcbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIGFjdGlvbnM6IENyZWF0ZUR5bmFtb0RiLlJlYWRXcml0ZUFjdGlvbnMsXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgbGFtYmRhLnJvbGU/LmFkZFRvUHJpbmNpcGFsUG9saWN5KHN0YXRlbWVudCk7XG4gICAgICAgICAgICBcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBBc3NpZ25SZWFkV3JpdGVBY2Nlc3NUb1RhYmxlKHNjb3BlOiBDb25zdHJ1Y3QsIHRhYmxlUmVmOiBUc2dEeW5hbW9UYWJsZVJlZiwgbGFtYmRhczogTm9kZWpzRnVuY3Rpb25bXSkge1xuICAgICAgICBsZXQgdGFibGU6IElUYWJsZSA9IFRhYmxlLmZyb21UYWJsZU5hbWUoc2NvcGUsIHRhYmxlUmVmLnRhYmxlTmFtZSwgdGFibGVSZWYudGFibGVOYW1lKTtcblxuICAgICAgICBsYW1iZGFzLmZvckVhY2goKGxhbWJkYTogTm9kZWpzRnVuY3Rpb24pID0+IHtcbiAgICAgICAgICAgIHRhYmxlLmdyYW50UmVhZFdyaXRlRGF0YShsYW1iZGEpXG4gICAgICAgICAgICBcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBBZGRSb3V0ZXMocHJvcHM6IE1pY3Jvc2VydmljZVByb3BzLCBcbiAgICAgICAgZ2F0ZXdheTogSVJlc3RBcGksIFxuICAgICAgICBsYW1iZGFzOiBOb2RlanNGdW5jdGlvbltdLCBcbiAgICAgICAgYXV0aG9yaXplcj86IFRva2VuQXV0aG9yaXplcikge1xuXG4gICAgICAgIHByb3BzLlJFU09VUkNFUy5MQU1CREE/LmZvckVhY2goKHByb3A6IFRzZ0xhbWJkYVByb3ApID0+IHtcblxuICAgICAgICAgICAgY29uc3QgbGFtYmRhSWQgPSBDcmVhdGVMYW1iZGEuZ2V0SWRGb3JMYW1iZGEocHJvcCwgdGhpcy5hcHBDb25maWcpO1xuXG4gICAgICAgICAgICBpZiAoIWxhbWJkYUlkKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDYW4ndCBmaW5kIGxhbWJkYWApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgbGFtYmRhTm9kZSA9IGxhbWJkYXMuZmluZCh4ID0+IHgubm9kZS5pZCA9PT0gbGFtYmRhSWQpO1xuXG4gICAgICAgICAgICBpZiAoIWxhbWJkYU5vZGUpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJDYW4ndCBmaW5kIHRoZSBMYW1iZGEgSW50ZWdyYXRpb25cIik7ICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBSb3V0ZXMuY3JlYXRlUmVzb3VyY2UocHJvcCwgZ2F0ZXdheSwgbGFtYmRhTm9kZSwgYXV0aG9yaXplcik7XG4gICAgICAgIFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIEFzc2lnbkFjY2Vzc1RvU2VjcmV0TWFuYWdlcihzZWNyZXQ6IElTZWNyZXQsIGxhbWJkYXM6IE5vZGVqc0Z1bmN0aW9uW10pIHtcblxuICAgICAgICBsYW1iZGFzLmZvckVhY2goKGxhbWJkYSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gc2VjcmV0LmdyYW50UmVhZChsYW1iZGEpO1xuICAgICAgICAgICAgXG4gICAgICAgIH0pO1xuICAgICAgICBcbiAgICB9XG5cbn0iXX0=
|
|
@@ -1,81 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.CreateAuthorizer = void 0;
|
|
4
|
-
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
5
|
-
const aws_apigateway_1 = require("aws-cdk-lib/aws-apigateway");
|
|
6
|
-
const aws_iam_1 = require("aws-cdk-lib/aws-iam");
|
|
7
|
-
const aws_lambda_nodejs_1 = require("aws-cdk-lib/aws-lambda-nodejs");
|
|
8
|
-
const path = require("path");
|
|
9
|
-
const baseResource_1 = require("../base/baseResource");
|
|
10
|
-
const createLambda_1 = require("../lambda/createLambda");
|
|
11
|
-
class CreateAuthorizer extends baseResource_1.BaseResource {
|
|
12
|
-
get JwtAuthorizer() {
|
|
13
|
-
return this.createdResources[0];
|
|
14
|
-
}
|
|
15
|
-
constructor(scope, props, authProps) {
|
|
16
|
-
super(scope, props);
|
|
17
|
-
this.authProps = authProps;
|
|
18
|
-
this.createdResources = this.createResource(scope);
|
|
19
|
-
if (this.createdResources) {
|
|
20
|
-
this.createOutput(scope, this.createdResources);
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
createResource(scope) {
|
|
24
|
-
return [this.createLambdaAuthorizer(scope, this.authProps)];
|
|
25
|
-
}
|
|
26
|
-
createLambdaAuthorizer(scope, lambdaConfig) {
|
|
27
|
-
//console.log("ENTER createLambdaAuthorizer");
|
|
28
|
-
const authorizerProps = this.createLambdaFunctionProps(lambdaConfig);
|
|
29
|
-
const lambdaId = createLambda_1.CreateLambda.getIdForLambda(lambdaConfig, this.config);
|
|
30
|
-
const lambda = new aws_lambda_nodejs_1.NodejsFunction(scope, lambdaId, authorizerProps);
|
|
31
|
-
lambda.grantInvoke(new aws_iam_1.ServicePrincipal('apigateway.amazonaws.com'));
|
|
32
|
-
if (lambdaConfig?.managedPolicies && lambdaConfig.managedPolicies.length > 0) {
|
|
33
|
-
this.assignManagedPolicies(lambda, lambdaConfig.managedPolicies);
|
|
34
|
-
}
|
|
35
|
-
const props = {
|
|
36
|
-
handler: lambda,
|
|
37
|
-
authorizerName: lambdaConfig.name,
|
|
38
|
-
resultsCacheTtl: aws_cdk_lib_1.Duration.seconds(0),
|
|
39
|
-
identitySource: aws_apigateway_1.IdentitySource.header('Authorization'),
|
|
40
|
-
};
|
|
41
|
-
const lambdaAuthorizer = new aws_apigateway_1.TokenAuthorizer(scope, `${lambdaConfig.name}-authorizer`, props);
|
|
42
|
-
return lambdaAuthorizer;
|
|
43
|
-
}
|
|
44
|
-
createOutput(scope, createdAssets) {
|
|
45
|
-
const entity = createdAssets[0];
|
|
46
|
-
// new CfnOutput(scope, `authorizer`, {
|
|
47
|
-
// value: (entity as TokenAuthorizer).authorizerArn
|
|
48
|
-
// });
|
|
49
|
-
}
|
|
50
|
-
createLambdaFunctionProps(prop) {
|
|
51
|
-
const lambdaProp = {
|
|
52
|
-
entry: path.join(prop.codePath),
|
|
53
|
-
functionName: prop.name,
|
|
54
|
-
handler: prop.handler,
|
|
55
|
-
runtime: prop.runtime || this.config.GLOBALS.stackRuntime,
|
|
56
|
-
timeout: prop.duration || aws_cdk_lib_1.Duration.minutes(2),
|
|
57
|
-
memorySize: prop.memory || 512,
|
|
58
|
-
environment: {
|
|
59
|
-
"VERBOSE_LOGGING": "true",
|
|
60
|
-
...prop.environment
|
|
61
|
-
},
|
|
62
|
-
bundling: {
|
|
63
|
-
minify: false,
|
|
64
|
-
target: 'es2020',
|
|
65
|
-
sourceMap: true,
|
|
66
|
-
sourceMapMode: aws_lambda_nodejs_1.SourceMapMode.INLINE,
|
|
67
|
-
environment: prop.environment || prop.environment,
|
|
68
|
-
},
|
|
69
|
-
};
|
|
70
|
-
return lambdaProp;
|
|
71
|
-
}
|
|
72
|
-
;
|
|
73
|
-
assignManagedPolicies(lambda, managedPolicyNames) {
|
|
74
|
-
managedPolicyNames.forEach((managedPolicyName) => {
|
|
75
|
-
let policy = aws_iam_1.ManagedPolicy.fromAwsManagedPolicyName(managedPolicyName);
|
|
76
|
-
lambda.role?.addManagedPolicy(policy);
|
|
77
|
-
});
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
exports.CreateAuthorizer = CreateAuthorizer;
|
|
81
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlQXV0aG9yaXplci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9yZXNvdXJjZXMvaGVscGVycy9jcmVhdGVBdXRob3JpemVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZDQUFrRDtBQUNsRCwrREFBbUc7QUFDbkcsaURBQXNFO0FBQ3RFLHFFQUFtRztBQUVuRyw2QkFBNkI7QUFLN0IsdURBQW9EO0FBQ3BELHlEQUFzRDtBQUV0RCxNQUFhLGdCQUFpQixTQUFRLDJCQUE2QjtJQUUvRCxJQUFJLGFBQWE7UUFDYixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRUQsWUFBWSxLQUFnQixFQUFFLEtBQWdCLEVBQVksU0FBd0I7UUFFOUUsS0FBSyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztRQUZrQyxjQUFTLEdBQVQsU0FBUyxDQUFlO1FBSTlFLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBRSxDQUFDO1FBRXBELElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFO1lBQ3ZCLElBQUksQ0FBQyxZQUFZLENBQWtCLEtBQUssRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztTQUNwRTtJQUVMLENBQUM7SUFFUyxjQUFjLENBQUMsS0FBZ0I7UUFDckMsT0FBTyxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7SUFDaEUsQ0FBQztJQUVPLHNCQUFzQixDQUFDLEtBQWdCLEVBQUUsWUFBMkI7UUFDeEUsOENBQThDO1FBRTlDLE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxZQUFhLENBQUMsQ0FBQztRQUV0RSxNQUFNLFFBQVEsR0FBRywyQkFBWSxDQUFDLGNBQWMsQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3hFLE1BQU0sTUFBTSxHQUFHLElBQUksa0NBQWMsQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLGVBQWUsQ0FBQyxDQUFDO1FBRXBFLE1BQU0sQ0FBQyxXQUFXLENBQUMsSUFBSSwwQkFBZ0IsQ0FBQywwQkFBMEIsQ0FBQyxDQUFDLENBQUM7UUFFckUsSUFBSSxZQUFZLEVBQUUsZUFBZSxJQUFJLFlBQVksQ0FBQyxlQUFlLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUMxRSxJQUFJLENBQUMscUJBQXFCLENBQUMsTUFBTSxFQUFFLFlBQVksQ0FBQyxlQUFlLENBQUMsQ0FBQztTQUNwRTtRQUVELE1BQU0sS0FBSyxHQUF5QjtZQUNoQyxPQUFPLEVBQUUsTUFBTTtZQUNmLGNBQWMsRUFBRSxZQUFZLENBQUMsSUFBSTtZQUNqQyxlQUFlLEVBQUUsc0JBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1lBQ3BDLGNBQWMsRUFBRSwrQkFBYyxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUM7U0FFekQsQ0FBQztRQUVGLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxnQ0FBZSxDQUFDLEtBQUssRUFBRSxHQUFHLFlBQVksQ0FBQyxJQUFJLGFBQWEsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUU5RixPQUFPLGdCQUFnQixDQUFDO0lBQzVCLENBQUM7SUFFUyxZQUFZLENBQUksS0FBZ0IsRUFBRSxhQUFrQjtRQUUxRCxNQUFNLE1BQU0sR0FBRyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFaEMsdUNBQXVDO1FBQ3ZDLHVEQUF1RDtRQUN2RCxNQUFNO0lBRVYsQ0FBQztJQUVPLHlCQUF5QixDQUFDLElBQW1CO1FBRWpELE1BQU0sVUFBVSxHQUF3QjtZQUNwQyxLQUFLLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO1lBQy9CLFlBQVksRUFBRSxJQUFJLENBQUMsSUFBSTtZQUN2QixPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU87WUFDckIsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsWUFBWTtZQUN6RCxPQUFPLEVBQUUsSUFBSSxDQUFDLFFBQVEsSUFBSSxzQkFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7WUFDN0MsVUFBVSxFQUFFLElBQUksQ0FBQyxNQUFNLElBQUksR0FBRztZQUM5QixXQUFXLEVBQUU7Z0JBQ1QsaUJBQWlCLEVBQUUsTUFBTTtnQkFDekIsR0FBRyxJQUFJLENBQUMsV0FBVzthQUN0QjtZQUNELFFBQVEsRUFBRTtnQkFDTixNQUFNLEVBQUUsS0FBSztnQkFDYixNQUFNLEVBQUUsUUFBUTtnQkFDaEIsU0FBUyxFQUFFLElBQUk7Z0JBQ2YsYUFBYSxFQUFFLGlDQUFhLENBQUMsTUFBTTtnQkFDbkMsV0FBVyxFQUFFLElBQUksQ0FBQyxXQUFXLElBQUksSUFBSSxDQUFDLFdBQVc7YUFDcEQ7U0FDSixDQUFBO1FBQ0QsT0FBTyxVQUFVLENBQUM7SUFDdEIsQ0FBQztJQUFBLENBQUM7SUFFTSxxQkFBcUIsQ0FBQyxNQUFzQixFQUFFLGtCQUE0QjtRQUU5RSxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxpQkFBeUIsRUFBRSxFQUFFO1lBRXJELElBQUksTUFBTSxHQUFHLHVCQUFhLENBQUMsd0JBQXdCLENBQUMsaUJBQWlCLENBQUMsQ0FBQztZQUV2RSxNQUFNLENBQUMsSUFBSSxFQUFFLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzFDLENBQUMsQ0FBQyxDQUFDO0lBRVAsQ0FBQztDQUVKO0FBOUZELDRDQThGQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENmbk91dHB1dCwgRHVyYXRpb24gfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCB7IElkZW50aXR5U291cmNlLCBUb2tlbkF1dGhvcml6ZXIsIFRva2VuQXV0aG9yaXplclByb3BzIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1hcGlnYXRld2F5XCI7XG5pbXBvcnQgeyBNYW5hZ2VkUG9saWN5LCBTZXJ2aWNlUHJpbmNpcGFsIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1pYW1cIjtcbmltcG9ydCB7IE5vZGVqc0Z1bmN0aW9uLCBOb2RlanNGdW5jdGlvblByb3BzLCBTb3VyY2VNYXBNb2RlIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1sYW1iZGEtbm9kZWpzXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB7IEFwcENvbmZpZyB9IGZyb20gXCIuLi8uLi9jb25maWcvQXBwQ29uZmlnXCI7XG5cbmltcG9ydCB7IFRzZ0xhbWJkYVByb3AgfSBmcm9tIFwiLi4vLi4vY29uZmlnL3R5cGVzXCI7XG5pbXBvcnQgeyBNaWNyb3NlcnZpY2VQcm9wcyB9IGZyb20gXCIuLi8uLi9pbnRlcmZhY2VzL01pY3Jvc2VydmljZVByb3BzXCI7XG5pbXBvcnQgeyBCYXNlUmVzb3VyY2UgfSBmcm9tIFwiLi4vYmFzZS9iYXNlUmVzb3VyY2VcIjtcbmltcG9ydCB7IENyZWF0ZUxhbWJkYSB9IGZyb20gXCIuLi9sYW1iZGEvY3JlYXRlTGFtYmRhXCI7XG5cbmV4cG9ydCBjbGFzcyBDcmVhdGVBdXRob3JpemVyIGV4dGVuZHMgQmFzZVJlc291cmNlPFRva2VuQXV0aG9yaXplcj4ge1xuXG4gICAgZ2V0IEp3dEF1dGhvcml6ZXIoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZWRSZXNvdXJjZXNbMF07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgcHJvcHM6IEFwcENvbmZpZywgcHJvdGVjdGVkIGF1dGhQcm9wczogVHNnTGFtYmRhUHJvcCkge1xuXG4gICAgICAgIHN1cGVyKHNjb3BlLCBwcm9wcyk7XG5cbiAgICAgICAgdGhpcy5jcmVhdGVkUmVzb3VyY2VzID0gdGhpcy5jcmVhdGVSZXNvdXJjZShzY29wZSkhO1xuXG4gICAgICAgIGlmICh0aGlzLmNyZWF0ZWRSZXNvdXJjZXMpIHtcbiAgICAgICAgICAgIHRoaXMuY3JlYXRlT3V0cHV0PFRva2VuQXV0aG9yaXplcj4oc2NvcGUsIHRoaXMuY3JlYXRlZFJlc291cmNlcyk7XG4gICAgICAgIH1cblxuICAgIH1cblxuICAgIHByb3RlY3RlZCBjcmVhdGVSZXNvdXJjZShzY29wZTogQ29uc3RydWN0KTogVG9rZW5BdXRob3JpemVyW10gfCBudWxsIHtcbiAgICAgICAgcmV0dXJuIFt0aGlzLmNyZWF0ZUxhbWJkYUF1dGhvcml6ZXIoc2NvcGUsIHRoaXMuYXV0aFByb3BzKV07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjcmVhdGVMYW1iZGFBdXRob3JpemVyKHNjb3BlOiBDb25zdHJ1Y3QsIGxhbWJkYUNvbmZpZzogVHNnTGFtYmRhUHJvcCkge1xuICAgICAgICAvL2NvbnNvbGUubG9nKFwiRU5URVIgY3JlYXRlTGFtYmRhQXV0aG9yaXplclwiKTtcblxuICAgICAgICBjb25zdCBhdXRob3JpemVyUHJvcHMgPSB0aGlzLmNyZWF0ZUxhbWJkYUZ1bmN0aW9uUHJvcHMobGFtYmRhQ29uZmlnISk7XG5cbiAgICAgICAgY29uc3QgbGFtYmRhSWQgPSBDcmVhdGVMYW1iZGEuZ2V0SWRGb3JMYW1iZGEobGFtYmRhQ29uZmlnLCB0aGlzLmNvbmZpZyk7XG4gICAgICAgIGNvbnN0IGxhbWJkYSA9IG5ldyBOb2RlanNGdW5jdGlvbihzY29wZSwgbGFtYmRhSWQsIGF1dGhvcml6ZXJQcm9wcyk7XG5cbiAgICAgICAgbGFtYmRhLmdyYW50SW52b2tlKG5ldyBTZXJ2aWNlUHJpbmNpcGFsKCdhcGlnYXRld2F5LmFtYXpvbmF3cy5jb20nKSk7XG5cbiAgICAgICAgaWYgKGxhbWJkYUNvbmZpZz8ubWFuYWdlZFBvbGljaWVzICYmIGxhbWJkYUNvbmZpZy5tYW5hZ2VkUG9saWNpZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdGhpcy5hc3NpZ25NYW5hZ2VkUG9saWNpZXMobGFtYmRhLCBsYW1iZGFDb25maWcubWFuYWdlZFBvbGljaWVzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHByb3BzOiBUb2tlbkF1dGhvcml6ZXJQcm9wcyA9IHtcbiAgICAgICAgICAgIGhhbmRsZXI6IGxhbWJkYSxcbiAgICAgICAgICAgIGF1dGhvcml6ZXJOYW1lOiBsYW1iZGFDb25maWcubmFtZSxcbiAgICAgICAgICAgIHJlc3VsdHNDYWNoZVR0bDogRHVyYXRpb24uc2Vjb25kcygwKSwgXG4gICAgICAgICAgICBpZGVudGl0eVNvdXJjZTogSWRlbnRpdHlTb3VyY2UuaGVhZGVyKCdBdXRob3JpemF0aW9uJyksXG4gICAgICAgICAgICBcbiAgICAgICAgfTtcblxuICAgICAgICBjb25zdCBsYW1iZGFBdXRob3JpemVyID0gbmV3IFRva2VuQXV0aG9yaXplcihzY29wZSwgYCR7bGFtYmRhQ29uZmlnLm5hbWV9LWF1dGhvcml6ZXJgLCBwcm9wcyk7XG5cbiAgICAgICAgcmV0dXJuIGxhbWJkYUF1dGhvcml6ZXI7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGNyZWF0ZU91dHB1dDxUPihzY29wZTogQ29uc3RydWN0LCBjcmVhdGVkQXNzZXRzOiBUW10pOiB2b2lkIHtcblxuICAgICAgICBjb25zdCBlbnRpdHkgPSBjcmVhdGVkQXNzZXRzWzBdO1xuXG4gICAgICAgIC8vIG5ldyBDZm5PdXRwdXQoc2NvcGUsIGBhdXRob3JpemVyYCwge1xuICAgICAgICAvLyAgICAgdmFsdWU6IChlbnRpdHkgYXMgVG9rZW5BdXRob3JpemVyKS5hdXRob3JpemVyQXJuXG4gICAgICAgIC8vIH0pO1xuXG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjcmVhdGVMYW1iZGFGdW5jdGlvblByb3BzKHByb3A6IFRzZ0xhbWJkYVByb3ApIHsgICAgICAgXG5cbiAgICAgICAgY29uc3QgbGFtYmRhUHJvcDogTm9kZWpzRnVuY3Rpb25Qcm9wcyA9IHtcbiAgICAgICAgICAgIGVudHJ5OiBwYXRoLmpvaW4ocHJvcC5jb2RlUGF0aCksXG4gICAgICAgICAgICBmdW5jdGlvbk5hbWU6IHByb3AubmFtZSxcbiAgICAgICAgICAgIGhhbmRsZXI6IHByb3AuaGFuZGxlcixcbiAgICAgICAgICAgIHJ1bnRpbWU6IHByb3AucnVudGltZSB8fCB0aGlzLmNvbmZpZy5HTE9CQUxTLnN0YWNrUnVudGltZSxcbiAgICAgICAgICAgIHRpbWVvdXQ6IHByb3AuZHVyYXRpb24gfHwgRHVyYXRpb24ubWludXRlcygyKSxcbiAgICAgICAgICAgIG1lbW9yeVNpemU6IHByb3AubWVtb3J5IHx8IDUxMixcbiAgICAgICAgICAgIGVudmlyb25tZW50OiB7XG4gICAgICAgICAgICAgICAgXCJWRVJCT1NFX0xPR0dJTkdcIjogXCJ0cnVlXCIsICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIC4uLnByb3AuZW52aXJvbm1lbnRcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBidW5kbGluZzoge1xuICAgICAgICAgICAgICAgIG1pbmlmeTogZmFsc2UsXG4gICAgICAgICAgICAgICAgdGFyZ2V0OiAnZXMyMDIwJyxcbiAgICAgICAgICAgICAgICBzb3VyY2VNYXA6IHRydWUsXG4gICAgICAgICAgICAgICAgc291cmNlTWFwTW9kZTogU291cmNlTWFwTW9kZS5JTkxJTkUsXG4gICAgICAgICAgICAgICAgZW52aXJvbm1lbnQ6IHByb3AuZW52aXJvbm1lbnQgfHwgcHJvcC5lbnZpcm9ubWVudCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGxhbWJkYVByb3A7XG4gICAgfTtcblxuICAgIHByaXZhdGUgYXNzaWduTWFuYWdlZFBvbGljaWVzKGxhbWJkYTogTm9kZWpzRnVuY3Rpb24sIG1hbmFnZWRQb2xpY3lOYW1lczogc3RyaW5nW10pIHtcblxuICAgICAgICBtYW5hZ2VkUG9saWN5TmFtZXMuZm9yRWFjaCgobWFuYWdlZFBvbGljeU5hbWU6IHN0cmluZykgPT4ge1xuXG4gICAgICAgICAgICBsZXQgcG9saWN5ID0gTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUobWFuYWdlZFBvbGljeU5hbWUpO1xuXG4gICAgICAgICAgICBsYW1iZGEucm9sZT8uYWRkTWFuYWdlZFBvbGljeShwb2xpY3kpO1xuICAgICAgICB9KTtcblxuICAgIH1cblxufSJdfQ==
|
|
@@ -1,192 +0,0 @@
|
|
|
1
|
-
import { IRestApi, TokenAuthorizer } from "aws-cdk-lib/aws-apigateway";
|
|
2
|
-
import { ITable, Table } from "aws-cdk-lib/aws-dynamodb";
|
|
3
|
-
import { NodejsFunction } from "aws-cdk-lib/aws-lambda-nodejs";
|
|
4
|
-
import { Effect, PolicyStatement } from "aws-cdk-lib/aws-iam";
|
|
5
|
-
import { Construct } from "constructs";
|
|
6
|
-
import { TsgDynamoTableRef, TsgLambdaProp } from "../../config/types";
|
|
7
|
-
import { TsgLambdaProps } from "../../config/types/TsgLambdaProps";
|
|
8
|
-
import { MicroserviceProps } from "../../interfaces/MicroserviceProps";
|
|
9
|
-
import { CreateAuthorizer } from "../helpers/createAuthorizer";
|
|
10
|
-
import { Routes } from "../helpers/createRoutes";
|
|
11
|
-
import { CreateLambda } from "../lambda/createLambda";
|
|
12
|
-
import { Duration, RemovalPolicy, Stack } from "aws-cdk-lib";
|
|
13
|
-
import { CreateDynamoDb } from "../dynamodb/CreateDynamo";
|
|
14
|
-
import { ISecret } from "aws-cdk-lib/aws-secretsmanager";
|
|
15
|
-
import { LayerVersion } from "aws-cdk-lib/aws-lambda";
|
|
16
|
-
import { AppConfig } from "../../config/AppConfig";
|
|
17
|
-
import { MetricOptions } from "aws-cdk-lib/aws-cloudwatch";
|
|
18
|
-
|
|
19
|
-
export class CreateMicroServiceBundle {
|
|
20
|
-
|
|
21
|
-
protected readonly requireDynamoTableRefs: boolean;
|
|
22
|
-
protected readonly requireAuthorizer: boolean;
|
|
23
|
-
|
|
24
|
-
constructor(scope: Construct,
|
|
25
|
-
private readonly gatewayApi: IRestApi,
|
|
26
|
-
private readonly props: MicroserviceProps,
|
|
27
|
-
private readonly appConfig: AppConfig,
|
|
28
|
-
private readonly tables?: Table[],
|
|
29
|
-
private readonly secretMgr?: ISecret | null,
|
|
30
|
-
private readonly layers?: LayerVersion[],
|
|
31
|
-
) {
|
|
32
|
-
|
|
33
|
-
this.requireDynamoTableRefs = (props.RESOURCES.DYNAMO?.TABLE_REFS?.length ?? 0 > 0) ? true : false;
|
|
34
|
-
this.requireAuthorizer = (props.RESOURCES.AUTHORIZER) ? true : false;
|
|
35
|
-
this.onInit(scope);
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
private onInit(scope: Construct) {
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
let authorizer: TokenAuthorizer|undefined = undefined;
|
|
42
|
-
|
|
43
|
-
// Create Authorizer
|
|
44
|
-
if (this.requireAuthorizer) {
|
|
45
|
-
authorizer = new CreateAuthorizer(scope, this.appConfig, this.props.RESOURCES.AUTHORIZER!).JwtAuthorizer;
|
|
46
|
-
authorizer._attachToApi(this.gatewayApi);
|
|
47
|
-
authorizer.applyRemovalPolicy(RemovalPolicy.DESTROY);
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
// Create Lambdas
|
|
51
|
-
const lambdaProp: TsgLambdaProps = {
|
|
52
|
-
scope,
|
|
53
|
-
prop: this.props,
|
|
54
|
-
layers: this.layers,
|
|
55
|
-
appConfig: this.appConfig
|
|
56
|
-
};
|
|
57
|
-
|
|
58
|
-
const lambdas = new CreateLambda(lambdaProp, this.appConfig);
|
|
59
|
-
|
|
60
|
-
if (this.tables) {
|
|
61
|
-
this.AssignAccessToTables(this.tables, lambdas.Lambdas);
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
// Allow access to existing tables
|
|
65
|
-
// if (this.requireDynamoTableRefs) {
|
|
66
|
-
// this.AssignAccessToTableRefs(scope, this.props.RESOURCES.DYNAMO?.TABLE_REFS, lambdas.Lambdas);
|
|
67
|
-
// }
|
|
68
|
-
|
|
69
|
-
if (this.secretMgr) {
|
|
70
|
-
this.AssignAccessToSecretManager(this.secretMgr, lambdas.Lambdas);
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
// lambdas.Lambdas.map((lambda) => {
|
|
74
|
-
// lambda.metricErrors({
|
|
75
|
-
// label: `${lambda.functionName}-errors`,
|
|
76
|
-
// period: Duration.minutes(3)
|
|
77
|
-
|
|
78
|
-
// })
|
|
79
|
-
// });
|
|
80
|
-
|
|
81
|
-
this.AddRoutes(this.props, this.gatewayApi, lambdas.Lambdas, authorizer);
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
private AssignAccessToTables(tables: Table[], lambdas: NodejsFunction[]) {
|
|
85
|
-
|
|
86
|
-
if (tables) {
|
|
87
|
-
lambdas.forEach((lambda: NodejsFunction) => {
|
|
88
|
-
|
|
89
|
-
tables.forEach((table: ITable) => {
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
// This is a CDK bug: It doesn't provide
|
|
94
|
-
// access to the indexes.
|
|
95
|
-
//table.grantReadWriteData(lambda);
|
|
96
|
-
|
|
97
|
-
// Workaround:
|
|
98
|
-
// lambda.addToRolePolicy(
|
|
99
|
-
// new PolicyStatement({
|
|
100
|
-
// effect: Effect.ALLOW,
|
|
101
|
-
// actions: CreateDynamoDb.ReadWriteActions,
|
|
102
|
-
// resources: [
|
|
103
|
-
// table.tableArn,
|
|
104
|
-
// `${table.tableArn}/*`, // This is not recognized by cdk, but table is. why?
|
|
105
|
-
// ],
|
|
106
|
-
// })
|
|
107
|
-
// );
|
|
108
|
-
|
|
109
|
-
table.grantReadWriteData(lambda);
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
});
|
|
113
|
-
|
|
114
|
-
});
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
private AssignAccessToTableRefs(scope: Construct, tableRefs: TsgDynamoTableRef[] | undefined, lambdas: NodejsFunction[]) {
|
|
119
|
-
|
|
120
|
-
if (tableRefs) {
|
|
121
|
-
tableRefs.forEach((tableRef: TsgDynamoTableRef) => {
|
|
122
|
-
|
|
123
|
-
if (tableRef.region) {
|
|
124
|
-
this.AssignReadWriteAccessToTableInRegion(scope, tableRef, lambdas);
|
|
125
|
-
}
|
|
126
|
-
else {
|
|
127
|
-
this.AssignReadWriteAccessToTable(scope, tableRef, lambdas);
|
|
128
|
-
}
|
|
129
|
-
});
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
private AssignReadWriteAccessToTableInRegion(scope: Construct, tableRef: TsgDynamoTableRef, lambdas: NodejsFunction[]) {
|
|
134
|
-
lambdas.forEach((lambda: NodejsFunction) => {
|
|
135
|
-
|
|
136
|
-
let tableArn = "arn:aws:dynamodb:" + tableRef.region + ":" + ((scope as Stack).account) + ":table/" + tableRef.tableName;
|
|
137
|
-
let statement = new PolicyStatement({
|
|
138
|
-
effect: Effect.ALLOW,
|
|
139
|
-
resources: [
|
|
140
|
-
tableArn,
|
|
141
|
-
tableArn + "/index/*",
|
|
142
|
-
],
|
|
143
|
-
actions: CreateDynamoDb.ReadWriteActions,
|
|
144
|
-
});
|
|
145
|
-
|
|
146
|
-
lambda.role?.addToPrincipalPolicy(statement);
|
|
147
|
-
|
|
148
|
-
});
|
|
149
|
-
}
|
|
150
|
-
|
|
151
|
-
private AssignReadWriteAccessToTable(scope: Construct, tableRef: TsgDynamoTableRef, lambdas: NodejsFunction[]) {
|
|
152
|
-
let table: ITable = Table.fromTableName(scope, tableRef.tableName, tableRef.tableName);
|
|
153
|
-
|
|
154
|
-
lambdas.forEach((lambda: NodejsFunction) => {
|
|
155
|
-
table.grantReadWriteData(lambda)
|
|
156
|
-
|
|
157
|
-
});
|
|
158
|
-
}
|
|
159
|
-
|
|
160
|
-
private AddRoutes(props: MicroserviceProps,
|
|
161
|
-
gateway: IRestApi,
|
|
162
|
-
lambdas: NodejsFunction[],
|
|
163
|
-
authorizer?: TokenAuthorizer) {
|
|
164
|
-
|
|
165
|
-
props.RESOURCES.LAMBDA?.forEach((prop: TsgLambdaProp) => {
|
|
166
|
-
|
|
167
|
-
const lambdaId = CreateLambda.getIdForLambda(prop, this.appConfig);
|
|
168
|
-
|
|
169
|
-
if (!lambdaId) {
|
|
170
|
-
throw new Error(`Can't find lambda`);
|
|
171
|
-
}
|
|
172
|
-
const lambdaNode = lambdas.find(x => x.node.id === lambdaId);
|
|
173
|
-
|
|
174
|
-
if (!lambdaNode) {
|
|
175
|
-
throw new Error("Can't find the Lambda Integration");
|
|
176
|
-
}
|
|
177
|
-
|
|
178
|
-
Routes.createResource(prop, gateway, lambdaNode, authorizer);
|
|
179
|
-
|
|
180
|
-
});
|
|
181
|
-
}
|
|
182
|
-
|
|
183
|
-
private AssignAccessToSecretManager(secret: ISecret, lambdas: NodejsFunction[]) {
|
|
184
|
-
|
|
185
|
-
lambdas.forEach((lambda) => {
|
|
186
|
-
const result = secret.grantRead(lambda);
|
|
187
|
-
|
|
188
|
-
});
|
|
189
|
-
|
|
190
|
-
}
|
|
191
|
-
|
|
192
|
-
}
|