@sylvesterllc/aws-constructs 1.0.31 → 1.0.34

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.
Files changed (67) hide show
  1. package/__tests__/data/testConfig.tsx +136 -0
  2. package/__tests__/mocks/ResourceMock.ts +10 -0
  3. package/__tests__/router.test.ts +195 -0
  4. package/dist/config/AppConfig.js +11 -1
  5. package/dist/config/customConfigs/ResourceAppConfig.d.ts +4 -1
  6. package/dist/config/customConfigs/ResourceAppConfig.js +1 -1
  7. package/dist/config/types/LogDuration.d.ts +8 -0
  8. package/dist/config/types/LogDuration.js +13 -0
  9. package/dist/config/types/TsgAuthorizerProp.d.ts +6 -0
  10. package/dist/config/types/TsgAuthorizerProp.js +3 -0
  11. package/dist/config/types/TsgAuthorizerType.d.ts +4 -0
  12. package/dist/config/types/TsgAuthorizerType.js +9 -0
  13. package/dist/config/types/TsgEc2Prop.d.ts +7 -0
  14. package/dist/config/types/TsgEc2Prop.js +3 -0
  15. package/dist/config/types/TsgKeyPair.d.ts +4 -0
  16. package/dist/config/types/TsgKeyPair.js +3 -0
  17. package/dist/config/types/TsgLambdaProp.d.ts +2 -0
  18. package/dist/config/types/TsgLambdaProp.js +1 -1
  19. package/dist/config/types/TsgLambdaProps.d.ts +0 -2
  20. package/dist/config/types/TsgLambdaProps.js +1 -1
  21. package/dist/config/types/index.d.ts +3 -0
  22. package/dist/config/types/index.js +4 -1
  23. package/dist/constructs/MicroService.js +4 -13
  24. package/dist/interfaces/ApiLambdaResult.d.ts +4 -0
  25. package/dist/interfaces/ApiLambdaResult.js +3 -0
  26. package/dist/resources/dynamodb/CreateDynamo.js +3 -3
  27. package/dist/resources/ec2/create-ec2-instance.d.ts +9 -0
  28. package/dist/resources/ec2/create-ec2-instance.js +42 -0
  29. package/dist/resources/gateway/CreateApiAndAttachLambdas.d.ts +24 -0
  30. package/dist/resources/gateway/CreateApiAndAttachLambdas.js +89 -0
  31. package/dist/resources/helpers/createRoutes.d.ts +2 -2
  32. package/dist/resources/helpers/createRoutes.js +3 -3
  33. package/dist/resources/lambda/createLambda.d.ts +5 -4
  34. package/dist/resources/lambda/createLambda.js +49 -28
  35. package/dist/resources/{helpers/createAuthorizer.d.ts → lambda-authorizer/TsgJwtTokenAuthorizer.d.ts} +2 -4
  36. package/dist/resources/lambda-authorizer/TsgJwtTokenAuthorizer.js +80 -0
  37. package/dist/resources/lambda-authorizer/TsgRequestAuthorizer.d.ts +12 -0
  38. package/dist/resources/lambda-authorizer/TsgRequestAuthorizer.js +32 -0
  39. package/dist/resources/lambda-authorizer/createAuthorizerHelpers.d.ts +5 -0
  40. package/dist/resources/lambda-authorizer/createAuthorizerHelpers.js +50 -0
  41. package/jest.config.js +9 -0
  42. package/jest.config.ts.old +20 -0
  43. package/package.json +13 -11
  44. package/src/config/AppConfig.ts +13 -0
  45. package/src/config/customConfigs/ResourceAppConfig.ts +5 -1
  46. package/src/config/types/LogDuration.ts +8 -0
  47. package/src/config/types/TsgAuthorizerProp.ts +9 -0
  48. package/src/config/types/TsgAuthorizerType.ts +5 -0
  49. package/src/config/types/TsgEc2Prop.ts +9 -0
  50. package/src/config/types/TsgKeyPair.ts +6 -0
  51. package/src/config/types/TsgLambdaProp.ts +4 -0
  52. package/src/config/types/TsgLambdaProps.ts +0 -1
  53. package/src/config/types/index.ts +3 -1
  54. package/src/constructs/MicroService.ts +4 -14
  55. package/src/interfaces/ApiLambdaResult.ts +6 -0
  56. package/src/resources/dynamodb/CreateDynamo.ts +1 -1
  57. package/src/resources/ec2/create-ec2-instance.ts +53 -0
  58. package/src/resources/gateway/CreateApiAndAttachLambdas.ts +137 -0
  59. package/src/resources/helpers/createRoutes.ts +3 -3
  60. package/src/resources/lambda/createLambda.ts +83 -55
  61. package/src/resources/{helpers/createAuthorizer.ts → lambda-authorizer/TsgJwtTokenAuthorizer.ts} +3 -3
  62. package/src/resources/lambda-authorizer/TsgRequestAuthorizer.ts +36 -0
  63. package/src/resources/lambda-authorizer/createAuthorizerHelpers.ts +69 -0
  64. package/dist/resources/gateway/createMicroServiceBundle.d.ts +0 -14
  65. package/dist/resources/gateway/createMicroServiceBundle.js +0 -127
  66. package/dist/resources/helpers/createAuthorizer.js +0 -81
  67. package/src/resources/gateway/createMicroServiceBundle.ts +0 -184
@@ -1,127 +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(serviceBundleConfig) {
13
- this.serviceBundleConfig = serviceBundleConfig;
14
- this.requireDynamoTableRefs = (this.serviceBundleConfig.props.RESOURCES.DYNAMO?.TABLE_REFS?.length ?? 0 > 0) ? true : false;
15
- this.requireAuthorizer = (this.serviceBundleConfig.props.RESOURCES.AUTHORIZER) ? true : false;
16
- this.onInit(this.serviceBundleConfig.scope);
17
- }
18
- onInit(scope) {
19
- let authorizer = undefined;
20
- // Create Authorizer
21
- if (this.requireAuthorizer) {
22
- authorizer = new createAuthorizer_1.CreateAuthorizer(scope, this.serviceBundleConfig.appConfig, this.serviceBundleConfig.props.RESOURCES.AUTHORIZER).JwtAuthorizer;
23
- authorizer._attachToApi(this.serviceBundleConfig.gatewayApi);
24
- authorizer.applyRemovalPolicy(aws_cdk_lib_1.RemovalPolicy.DESTROY);
25
- }
26
- // Create Lambdas
27
- const lambdaProp = {
28
- scope,
29
- prop: this.serviceBundleConfig.props,
30
- layers: this.serviceBundleConfig.layers,
31
- appConfig: this.serviceBundleConfig.appConfig
32
- };
33
- const lambdas = new createLambda_1.CreateLambda(lambdaProp, this.serviceBundleConfig.appConfig);
34
- if (this.serviceBundleConfig.tables) {
35
- this.AssignAccessToTables(this.serviceBundleConfig.tables, lambdas.Lambdas);
36
- }
37
- // Allow access to existing tables
38
- // if (this.requireDynamoTableRefs) {
39
- // this.AssignAccessToTableRefs(scope, this.props.RESOURCES.DYNAMO?.TABLE_REFS, lambdas.Lambdas);
40
- // }
41
- if (this.serviceBundleConfig.secretMgr) {
42
- this.AssignAccessToSecretManager(this.serviceBundleConfig.secretMgr, lambdas.Lambdas);
43
- }
44
- // lambdas.Lambdas.map((lambda) => {
45
- // lambda.metricErrors({
46
- // label: `${lambda.functionName}-errors`,
47
- // period: Duration.minutes(3)
48
- // })
49
- // });
50
- this.AddRoutes(this.serviceBundleConfig.props, this.serviceBundleConfig.gatewayApi, lambdas.Lambdas, authorizer);
51
- }
52
- AssignAccessToTables(tables, lambdas) {
53
- if (tables) {
54
- lambdas.forEach((lambda) => {
55
- tables.forEach((table) => {
56
- // This is a CDK bug: It doesn't provide
57
- // access to the indexes.
58
- //table.grantReadWriteData(lambda);
59
- // Workaround:
60
- // lambda.addToRolePolicy(
61
- // new PolicyStatement({
62
- // effect: Effect.ALLOW,
63
- // actions: CreateDynamoDb.ReadWriteActions,
64
- // resources: [
65
- // table.tableArn,
66
- // `${table.tableArn}/*`, // This is not recognized by cdk, but table is. why?
67
- // ],
68
- // })
69
- // );
70
- table.grantReadWriteData(lambda);
71
- });
72
- });
73
- }
74
- }
75
- AssignAccessToTableRefs(scope, tableRefs, lambdas) {
76
- if (tableRefs) {
77
- tableRefs.forEach((tableRef) => {
78
- if (tableRef.region) {
79
- this.AssignReadWriteAccessToTableInRegion(scope, tableRef, lambdas);
80
- }
81
- else {
82
- this.AssignReadWriteAccessToTable(scope, tableRef, lambdas);
83
- }
84
- });
85
- }
86
- }
87
- AssignReadWriteAccessToTableInRegion(scope, tableRef, lambdas) {
88
- lambdas.forEach((lambda) => {
89
- let tableArn = "arn:aws:dynamodb:" + tableRef.region + ":" + (scope.account) + ":table/" + tableRef.tableName;
90
- let statement = new aws_iam_1.PolicyStatement({
91
- effect: aws_iam_1.Effect.ALLOW,
92
- resources: [
93
- tableArn,
94
- tableArn + "/index/*",
95
- ],
96
- actions: CreateDynamo_1.CreateDynamoDb.ReadWriteActions,
97
- });
98
- lambda.role?.addToPrincipalPolicy(statement);
99
- });
100
- }
101
- AssignReadWriteAccessToTable(scope, tableRef, lambdas) {
102
- let table = aws_dynamodb_1.Table.fromTableName(scope, tableRef.tableName, tableRef.tableName);
103
- lambdas.forEach((lambda) => {
104
- table.grantReadWriteData(lambda);
105
- });
106
- }
107
- AddRoutes(props, gateway, lambdas, authorizer) {
108
- props.RESOURCES.LAMBDA?.forEach((prop) => {
109
- const lambdaId = createLambda_1.CreateLambda.getIdForLambda(prop, this.serviceBundleConfig.appConfig);
110
- if (!lambdaId) {
111
- throw new Error(`Can't find lambda`);
112
- }
113
- const lambdaNode = lambdas.find(x => x.node.id === lambdaId);
114
- if (!lambdaNode) {
115
- throw new Error("Can't find the Lambda Integration");
116
- }
117
- createRoutes_1.Routes.createResource(prop, gateway, lambdaNode, authorizer);
118
- });
119
- }
120
- AssignAccessToSecretManager(secret, lambdas) {
121
- lambdas.forEach((lambda) => {
122
- const result = secret.grantRead(lambda);
123
- });
124
- }
125
- }
126
- exports.CreateMicroServiceBundle = CreateMicroServiceBundle;
127
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlTWljcm9TZXJ2aWNlQnVuZGxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3Jlc291cmNlcy9nYXRld2F5L2NyZWF0ZU1pY3JvU2VydmljZUJ1bmRsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSwyREFBeUQ7QUFFekQsaURBQThEO0FBSzlELGtFQUErRDtBQUMvRCwwREFBaUQ7QUFDakQseURBQXNEO0FBQ3RELDZDQUFtRDtBQUNuRCwyREFBMEQ7QUFLMUQsTUFBYSx3QkFBd0I7SUFLakMsWUFBb0IsbUJBQXdDO1FBQXhDLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBcUI7UUFFeEQsSUFBSSxDQUFDLHNCQUFzQixHQUFHLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUM1SCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7UUFDOUYsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVPLE1BQU0sQ0FBQyxLQUFnQjtRQUczQixJQUFJLFVBQVUsR0FBOEIsU0FBUyxDQUFDO1FBRXRELG9CQUFvQjtRQUNwQixJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRTtZQUN4QixVQUFVLEdBQUcsSUFBSSxtQ0FBZ0IsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsbUJBQW1CLENBQUMsS0FBSyxD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SSxLQUFLLENBQUMsbUJBQW1CLENBQUMsQ0FBQzthQUN4QztZQUNELE1BQU0sVUFBVSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxRQUFRLENBQUMsQ0FBQztZQUU3RCxJQUFJLENBQUMsVUFBVSxFQUFFO2dCQUNiLE1BQU0sSUFBSSxLQUFLLENBQUMsbUNBQW1DLENBQUMsQ0FBQzthQUN4RDtZQUVELHFCQUFNLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBRWpFLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVPLDJCQUEyQixDQUFDLE1BQWUsRUFBRSxPQUF5QjtRQUUxRSxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7WUFDdkIsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUU1QyxDQUFDLENBQUMsQ0FBQztJQUVQLENBQUM7Q0FFSjtBQXRLRCw0REFzS0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJUmVzdEFwaSwgVG9rZW5BdXRob3JpemVyIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1hcGlnYXRld2F5XCI7XG5pbXBvcnQgeyBJVGFibGUsIFRhYmxlIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1keW5hbW9kYlwiO1xuaW1wb3J0IHsgTm9kZWpzRnVuY3Rpb24gfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWxhbWJkYS1ub2RlanNcIjtcbmltcG9ydCB7IEVmZmVjdCwgUG9saWN5U3RhdGVtZW50IH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1pYW1cIjtcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgeyBUc2dEeW5hbW9UYWJsZVJlZiwgVHNnTGFtYmRhUHJvcCB9IGZyb20gXCIuLi8uLi9jb25maWcvdHlwZXNcIjtcbmltcG9ydCB7IFRzZ0xhbWJkYVByb3BzIH0gZnJvbSBcIi4uLy4uL2NvbmZpZy90eXBlcy9Uc2dMYW1iZGFQcm9wc1wiO1xuaW1wb3J0IHsgTWljcm9zZXJ2aWNlUHJvcHMgfSBmcm9tIFwiLi4vLi4vaW50ZXJmYWNlcy9NaWNyb3NlcnZpY2VQcm9wc1wiO1xuaW1wb3J0IHsgQ3JlYXRlQXV0aG9yaXplciB9IGZyb20gXCIuLi9oZWxwZXJzL2NyZWF0ZUF1dGhvcml6ZXJcIjtcbmltcG9ydCB7IFJvdXRlcyB9IGZyb20gXCIuLi9oZWxwZXJzL2NyZWF0ZVJvdXRlc1wiO1xuaW1wb3J0IHsgQ3JlYXRlTGFtYmRhIH0gZnJvbSBcIi4uL2xhbWJkYS9jcmVhdGVMYW1iZGFcIjtcbmltcG9ydCB7IFJlbW92YWxQb2xpY3ksIFN0YWNrIH0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQgeyBDcmVhdGVEeW5hbW9EYiB9IGZyb20gXCIuLi9keW5hbW9kYi9DcmVhdGVEeW5hbW9cIjtcbmltcG9ydCB7IElTZWNyZXQgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLXNlY3JldHNtYW5hZ2VyXCI7XG5cbmltcG9ydCB7IFNlcnZpY2VCdW5kbGVDb25maWcgfSBmcm9tIFwiLi4vLi4vY29uZmlnL1NlcnZpY2VCdW5kbGVDb25maWdcIjtcblxuZXhwb3J0IGNsYXNzIENyZWF0ZU1pY3JvU2VydmljZUJ1bmRsZSB7XG4gICAgXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHJlcXVpcmVEeW5hbW9UYWJsZVJlZnM6IGJvb2xlYW47XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHJlcXVpcmVBdXRob3JpemVyOiBib29sZWFuO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBzZXJ2aWNlQnVuZGxlQ29uZmlnOiBTZXJ2aWNlQnVuZGxlQ29uZmlnKSB7XG4gICAgICAgIFxuICAgICAgICB0aGlzLnJlcXVpcmVEeW5hbW9UYWJsZVJlZnMgPSAodGhpcy5zZXJ2aWNlQnVuZGxlQ29uZmlnLnByb3BzLlJFU09VUkNFUy5EWU5BTU8/LlRBQkxFX1JFRlM/Lmxlbmd0aCA/PyAwID4gMCkgPyB0cnVlIDogZmFsc2U7XG4gICAgICAgIHRoaXMucmVxdWlyZUF1dGhvcml6ZXIgPSAodGhpcy5zZXJ2aWNlQnVuZGxlQ29uZmlnLnByb3BzLlJFU09VUkNFUy5BVVRIT1JJWkVSKSA/IHRydWUgOiBmYWxzZTtcbiAgICAgICAgdGhpcy5vbkluaXQodGhpcy5zZXJ2aWNlQnVuZGxlQ29uZmlnLnNjb3BlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG9uSW5pdChzY29wZTogQ29uc3RydWN0KSB7XG5cbiAgICAgICAgXG4gICAgICAgIGxldCBhdXRob3JpemVyOiBUb2tlbkF1dGhvcml6ZXJ8dW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuXG4gICAgICAgIC8vIENyZWF0ZSBBdXRob3JpemVyXG4gICAgICAgIGlmICh0aGlzLnJlcXVpcmVBdXRob3JpemVyKSB7XG4gICAgICAgICAgICBhdXRob3JpemVyID0gbmV3IENyZWF0ZUF1dGhvcml6ZXIoc2NvcGUsIHRoaXMuc2VydmljZUJ1bmRsZUNvbmZpZy5hcHBDb25maWcsIHRoaXMuc2VydmljZUJ1bmRsZUNvbmZpZy5wcm9wcy5SRVNPVVJDRVMuQVVUSE9SSVpFUiEpLkp3dEF1dGhvcml6ZXI7XG4gICAgICAgICAgICBhdXRob3JpemVyLl9hdHRhY2hUb0FwaSh0aGlzLnNlcnZpY2VCdW5kbGVDb25maWcuZ2F0ZXdheUFwaSk7ICAgXG4gICAgICAgICAgICBhdXRob3JpemVyLmFwcGx5UmVtb3ZhbFBvbGljeShSZW1vdmFsUG9saWN5LkRFU1RST1kpO1xuICAgICAgICB9ICAgICAgICBcblxuICAgICAgICAvLyBDcmVhdGUgTGFtYmRhc1xuICAgICAgICBjb25zdCBsYW1iZGFQcm9wOiBUc2dMYW1iZGFQcm9wcyA9IHtcbiAgICAgICAgICAgIHNjb3BlLFxuICAgICAgICAgICAgcHJvcDogdGhpcy5zZXJ2aWNlQnVuZGxlQ29uZmlnLnByb3BzLCAgICAgICAgICAgIFxuICAgICAgICAgICAgbGF5ZXJzOiB0aGlzLnNlcnZpY2VCdW5kbGVDb25maWcubGF5ZXJzLFxuICAgICAgICAgICAgYXBwQ29uZmlnOiB0aGlzLnNlcnZpY2VCdW5kbGVDb25maWcuYXBwQ29uZmlnXG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3QgbGFtYmRhcyA9IG5ldyBDcmVhdGVMYW1iZGEobGFtYmRhUHJvcCwgdGhpcy5zZXJ2aWNlQnVuZGxlQ29uZmlnLmFwcENvbmZpZyk7XG5cbiAgICAgICAgaWYgKHRoaXMuc2VydmljZUJ1bmRsZUNvbmZpZy50YWJsZXMpIHtcbiAgICAgICAgICAgIHRoaXMuQXNzaWduQWNjZXNzVG9UYWJsZXModGhpcy5zZXJ2aWNlQnVuZGxlQ29uZmlnLnRhYmxlcywgbGFtYmRhcy5MYW1iZGFzKTtcbiAgICAgICAgfSAgICAgICAgXG5cbiAgICAgICAgLy8gQWxsb3cgYWNjZXNzIHRvIGV4aXN0aW5nIHRhYmxlc1xuICAgICAgICAvLyBpZiAodGhpcy5yZXF1aXJlRHluYW1vVGFibGVSZWZzKSB7XG4gICAgICAgIC8vICAgICB0aGlzLkFzc2lnbkFjY2Vzc1RvVGFibGVSZWZzKHNjb3BlLCB0aGlzLnByb3BzLlJFU09VUkNFUy5EWU5BTU8/LlRBQkxFX1JFRlMsIGxhbWJkYXMuTGFtYmRhcyk7XG4gICAgICAgIC8vIH1cblxuICAgICAgICBpZiAodGhpcy5zZXJ2aWNlQnVuZGxlQ29uZmlnLnNlY3JldE1ncikge1xuICAgICAgICAgICAgdGhpcy5Bc3NpZ25BY2Nlc3NUb1NlY3JldE1hbmFnZXIodGhpcy5zZXJ2aWNlQnVuZGxlQ29uZmlnLnNlY3JldE1nciwgbGFtYmRhcy5MYW1iZGFzKTtcbiAgICAgICAgfSAgICAgICAgXG5cbiAgICAgICAgLy8gbGFtYmRhcy5MYW1iZGFzLm1hcCgobGFtYmRhKSA9PiB7XG4gICAgICAgIC8vICAgICBsYW1iZGEubWV0cmljRXJyb3JzKHsgICAgICAgICAgICAgICAgXG4gICAgICAgIC8vICAgICAgICAgICAgIGxhYmVsOiBgJHtsYW1iZGEuZnVuY3Rpb25OYW1lfS1lcnJvcnNgLCBcbiAgICAgICAgLy8gICAgICAgICAgICAgcGVyaW9kOiBEdXJhdGlvbi5taW51dGVzKDMpICAgICAgICAgICBcbiAgICAgICAgICAgICAgICBcbiAgICAgICAgLy8gICAgIH0pXG4gICAgICAgIC8vIH0pO1xuXG4gICAgICAgIHRoaXMuQWRkUm91dGVzKHRoaXMuc2VydmljZUJ1bmRsZUNvbmZpZy5wcm9wcywgdGhpcy5zZXJ2aWNlQnVuZGxlQ29uZmlnLmdhdGV3YXlBcGksIGxhbWJkYXMuTGFtYmRhcywgYXV0aG9yaXplcik7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBBc3NpZ25BY2Nlc3NUb1RhYmxlcyh0YWJsZXM6IFRhYmxlW10sIGxhbWJkYXM6IE5vZGVqc0Z1bmN0aW9uW10pIHtcblxuICAgICAgICBpZiAodGFibGVzKSB7XG4gICAgICAgICAgICBsYW1iZGFzLmZvckVhY2goKGxhbWJkYTogTm9kZWpzRnVuY3Rpb24pID0+IHtcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIHRhYmxlcy5mb3JFYWNoKCh0YWJsZTogSVRhYmxlKSA9PiB7XG5cbiAgICAgICAgICAgICAgICBcblxuICAgICAgICAgICAgICAgICAgICAvLyAgVGhpcyBpcyBhIENESyBidWc6IEl0IGRvZXNuJ3QgcHJvdmlkZVxuICAgICAgICAgICAgICAgICAgICAvLyAgYWNjZXNzIHRvIHRoZSBpbmRleGVzLlxuICAgICAgICAgICAgICAgICAgICAvL3RhYmxlLmdyYW50UmVhZFdyaXRlRGF0YShsYW1iZGEpO1xuXG4gICAgICAgICAgICAgICAgICAgIC8vICBXb3JrYXJvdW5kOlxuICAgICAgICAgICAgICAgICAgICAvLyBsYW1iZGEuYWRkVG9Sb2xlUG9saWN5KFxuICAgICAgICAgICAgICAgICAgICAvLyAgICAgbmV3IFBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgICAgICAgICAgICAgIC8vICAgICAgICAgZWZmZWN0OiBFZmZlY3QuQUxMT1csXG4gICAgICAgICAgICAgICAgICAgIC8vICAgICAgICAgYWN0aW9uczogQ3JlYXRlRHluYW1vRGIuUmVhZFdyaXRlQWN0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgLy8gICAgICAgICByZXNvdXJjZXM6IFtcbiAgICAgICAgICAgICAgICAgICAgLy8gICAgICAgICAgICAgdGFibGUudGFibGVBcm4sXG4gICAgICAgICAgICAgICAgICAgIC8vICAgICAgICAgICAgIGAke3RhYmxlLnRhYmxlQXJufS8qYCwgLy8gVGhpcyBpcyBub3QgcmVjb2duaXplZCBieSBjZGssIGJ1dCB0YWJsZSBpcy4gIHdoeT9cbiAgICAgICAgICAgICAgICAgICAgLy8gICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAvLyAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgLy8gKTtcblxuICAgICAgICAgICAgICAgICAgICB0YWJsZS5ncmFudFJlYWRXcml0ZURhdGEobGFtYmRhKTtcbiAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgQXNzaWduQWNjZXNzVG9UYWJsZVJlZnMoc2NvcGU6IENvbnN0cnVjdCwgdGFibGVSZWZzOiBUc2dEeW5hbW9UYWJsZVJlZltdIHwgdW5kZWZpbmVkLCBsYW1iZGFzOiBOb2RlanNGdW5jdGlvbltdKSB7XG5cbiAgICAgICAgaWYgKHRhYmxlUmVmcykge1xuICAgICAgICAgICAgdGFibGVSZWZzLmZvckVhY2goKHRhYmxlUmVmOiBUc2dEeW5hbW9UYWJsZVJlZikgPT4ge1xuXG4gICAgICAgICAgICAgICAgaWYgKHRhYmxlUmVmLnJlZ2lvbikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLkFzc2lnblJlYWRXcml0ZUFjY2Vzc1RvVGFibGVJblJlZ2lvbihzY29wZSwgdGFibGVSZWYsIGxhbWJkYXMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5Bc3NpZ25SZWFkV3JpdGVBY2Nlc3NUb1RhYmxlKHNjb3BlLCB0YWJsZVJlZiwgbGFtYmRhcyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIEFzc2lnblJlYWRXcml0ZUFjY2Vzc1RvVGFibGVJblJlZ2lvbihzY29wZTogQ29uc3RydWN0LCB0YWJsZVJlZjogVHNnRHluYW1vVGFibGVSZWYsIGxhbWJkYXM6IE5vZGVqc0Z1bmN0aW9uW10pIHtcbiAgICAgICAgbGFtYmRhcy5mb3JFYWNoKChsYW1iZGE6IE5vZGVqc0Z1bmN0aW9uKSA9PiB7XG5cbiAgICAgICAgICAgIGxldCB0YWJsZUFybiA9IFwiYXJuOmF3czpkeW5hbW9kYjpcIiArIHRhYmxlUmVmLnJlZ2lvbiArIFwiOlwiICsgKChzY29wZSBhcyBTdGFjaykuYWNjb3VudCkgKyBcIjp0YWJsZS9cIiArIHRhYmxlUmVmLnRhYmxlTmFtZTtcbiAgICAgICAgICAgIGxldCBzdGF0ZW1lbnQgPSBuZXcgUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICAgICAgICBlZmZlY3Q6IEVmZmVjdC5BTExPVyxcbiAgICAgICAgICAgICAgICByZXNvdXJjZXM6IFtcbiAgICAgICAgICAgICAgICAgICAgdGFibGVBcm4sXG4gICAgICAgICAgICAgICAgICAgIHRhYmxlQXJuICsgXCIvaW5kZXgvKlwiLFxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgYWN0aW9uczogQ3JlYXRlRHluYW1vRGIuUmVhZFdyaXRlQWN0aW9ucyxcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBsYW1iZGEucm9sZT8uYWRkVG9QcmluY2lwYWxQb2xpY3koc3RhdGVtZW50KTtcbiAgICAgICAgICAgIFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIEFzc2lnblJlYWRXcml0ZUFjY2Vzc1RvVGFibGUoc2NvcGU6IENvbnN0cnVjdCwgdGFibGVSZWY6IFRzZ0R5bmFtb1RhYmxlUmVmLCBsYW1iZGFzOiBOb2RlanNGdW5jdGlvbltdKSB7XG4gICAgICAgIGxldCB0YWJsZTogSVRhYmxlID0gVGFibGUuZnJvbVRhYmxlTmFtZShzY29wZSwgdGFibGVSZWYudGFibGVOYW1lLCB0YWJsZVJlZi50YWJsZU5hbWUpO1xuXG4gICAgICAgIGxhbWJkYXMuZm9yRWFjaCgobGFtYmRhOiBOb2RlanNGdW5jdGlvbikgPT4ge1xuICAgICAgICAgICAgdGFibGUuZ3JhbnRSZWFkV3JpdGVEYXRhKGxhbWJkYSlcbiAgICAgICAgICAgIFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIEFkZFJvdXRlcyhwcm9wczogTWljcm9zZXJ2aWNlUHJvcHMsIFxuICAgICAgICBnYXRld2F5OiBJUmVzdEFwaSwgXG4gICAgICAgIGxhbWJkYXM6IE5vZGVqc0Z1bmN0aW9uW10sIFxuICAgICAgICBhdXRob3JpemVyPzogVG9rZW5BdXRob3JpemVyKSB7XG5cbiAgICAgICAgcHJvcHMuUkVTT1VSQ0VTLkxBTUJEQT8uZm9yRWFjaCgocHJvcDogVHNnTGFtYmRhUHJvcCkgPT4ge1xuXG4gICAgICAgICAgICBjb25zdCBsYW1iZGFJZCA9IENyZWF0ZUxhbWJkYS5nZXRJZEZvckxhbWJkYShwcm9wLCB0aGlzLnNlcnZpY2VCdW5kbGVDb25maWcuYXBwQ29uZmlnKTtcblxuICAgICAgICAgICAgaWYgKCFsYW1iZGFJZCkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgQ2FuJ3QgZmluZCBsYW1iZGFgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGxhbWJkYU5vZGUgPSBsYW1iZGFzLmZpbmQoeCA9PiB4Lm5vZGUuaWQgPT09IGxhbWJkYUlkKTtcblxuICAgICAgICAgICAgaWYgKCFsYW1iZGFOb2RlKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQ2FuJ3QgZmluZCB0aGUgTGFtYmRhIEludGVncmF0aW9uXCIpOyAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgUm91dGVzLmNyZWF0ZVJlc291cmNlKHByb3AsIGdhdGV3YXksIGxhbWJkYU5vZGUsIGF1dGhvcml6ZXIpO1xuICAgICAgICBcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBBc3NpZ25BY2Nlc3NUb1NlY3JldE1hbmFnZXIoc2VjcmV0OiBJU2VjcmV0LCBsYW1iZGFzOiBOb2RlanNGdW5jdGlvbltdKSB7XG5cbiAgICAgICAgbGFtYmRhcy5mb3JFYWNoKChsYW1iZGEpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IHNlY3JldC5ncmFudFJlYWQobGFtYmRhKTtcbiAgICAgICAgICAgIFxuICAgICAgICB9KTtcbiAgICAgICAgXG4gICAgfVxuXG59Il19
@@ -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,184 +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 { RemovalPolicy, Stack } from "aws-cdk-lib";
13
- import { CreateDynamoDb } from "../dynamodb/CreateDynamo";
14
- import { ISecret } from "aws-cdk-lib/aws-secretsmanager";
15
-
16
- import { ServiceBundleConfig } from "../../config/ServiceBundleConfig";
17
-
18
- export class CreateMicroServiceBundle {
19
-
20
- protected readonly requireDynamoTableRefs: boolean;
21
- protected readonly requireAuthorizer: boolean;
22
-
23
- constructor(private serviceBundleConfig: ServiceBundleConfig) {
24
-
25
- this.requireDynamoTableRefs = (this.serviceBundleConfig.props.RESOURCES.DYNAMO?.TABLE_REFS?.length ?? 0 > 0) ? true : false;
26
- this.requireAuthorizer = (this.serviceBundleConfig.props.RESOURCES.AUTHORIZER) ? true : false;
27
- this.onInit(this.serviceBundleConfig.scope);
28
- }
29
-
30
- private onInit(scope: Construct) {
31
-
32
-
33
- let authorizer: TokenAuthorizer|undefined = undefined;
34
-
35
- // Create Authorizer
36
- if (this.requireAuthorizer) {
37
- authorizer = new CreateAuthorizer(scope, this.serviceBundleConfig.appConfig, this.serviceBundleConfig.props.RESOURCES.AUTHORIZER!).JwtAuthorizer;
38
- authorizer._attachToApi(this.serviceBundleConfig.gatewayApi);
39
- authorizer.applyRemovalPolicy(RemovalPolicy.DESTROY);
40
- }
41
-
42
- // Create Lambdas
43
- const lambdaProp: TsgLambdaProps = {
44
- scope,
45
- prop: this.serviceBundleConfig.props,
46
- layers: this.serviceBundleConfig.layers,
47
- appConfig: this.serviceBundleConfig.appConfig
48
- };
49
-
50
- const lambdas = new CreateLambda(lambdaProp, this.serviceBundleConfig.appConfig);
51
-
52
- if (this.serviceBundleConfig.tables) {
53
- this.AssignAccessToTables(this.serviceBundleConfig.tables, lambdas.Lambdas);
54
- }
55
-
56
- // Allow access to existing tables
57
- // if (this.requireDynamoTableRefs) {
58
- // this.AssignAccessToTableRefs(scope, this.props.RESOURCES.DYNAMO?.TABLE_REFS, lambdas.Lambdas);
59
- // }
60
-
61
- if (this.serviceBundleConfig.secretMgr) {
62
- this.AssignAccessToSecretManager(this.serviceBundleConfig.secretMgr, lambdas.Lambdas);
63
- }
64
-
65
- // lambdas.Lambdas.map((lambda) => {
66
- // lambda.metricErrors({
67
- // label: `${lambda.functionName}-errors`,
68
- // period: Duration.minutes(3)
69
-
70
- // })
71
- // });
72
-
73
- this.AddRoutes(this.serviceBundleConfig.props, this.serviceBundleConfig.gatewayApi, lambdas.Lambdas, authorizer);
74
- }
75
-
76
- private AssignAccessToTables(tables: Table[], lambdas: NodejsFunction[]) {
77
-
78
- if (tables) {
79
- lambdas.forEach((lambda: NodejsFunction) => {
80
-
81
- tables.forEach((table: ITable) => {
82
-
83
-
84
-
85
- // This is a CDK bug: It doesn't provide
86
- // access to the indexes.
87
- //table.grantReadWriteData(lambda);
88
-
89
- // Workaround:
90
- // lambda.addToRolePolicy(
91
- // new PolicyStatement({
92
- // effect: Effect.ALLOW,
93
- // actions: CreateDynamoDb.ReadWriteActions,
94
- // resources: [
95
- // table.tableArn,
96
- // `${table.tableArn}/*`, // This is not recognized by cdk, but table is. why?
97
- // ],
98
- // })
99
- // );
100
-
101
- table.grantReadWriteData(lambda);
102
-
103
-
104
- });
105
-
106
- });
107
- }
108
- }
109
-
110
- private AssignAccessToTableRefs(scope: Construct, tableRefs: TsgDynamoTableRef[] | undefined, lambdas: NodejsFunction[]) {
111
-
112
- if (tableRefs) {
113
- tableRefs.forEach((tableRef: TsgDynamoTableRef) => {
114
-
115
- if (tableRef.region) {
116
- this.AssignReadWriteAccessToTableInRegion(scope, tableRef, lambdas);
117
- }
118
- else {
119
- this.AssignReadWriteAccessToTable(scope, tableRef, lambdas);
120
- }
121
- });
122
- }
123
- }
124
-
125
- private AssignReadWriteAccessToTableInRegion(scope: Construct, tableRef: TsgDynamoTableRef, lambdas: NodejsFunction[]) {
126
- lambdas.forEach((lambda: NodejsFunction) => {
127
-
128
- let tableArn = "arn:aws:dynamodb:" + tableRef.region + ":" + ((scope as Stack).account) + ":table/" + tableRef.tableName;
129
- let statement = new PolicyStatement({
130
- effect: Effect.ALLOW,
131
- resources: [
132
- tableArn,
133
- tableArn + "/index/*",
134
- ],
135
- actions: CreateDynamoDb.ReadWriteActions,
136
- });
137
-
138
- lambda.role?.addToPrincipalPolicy(statement);
139
-
140
- });
141
- }
142
-
143
- private AssignReadWriteAccessToTable(scope: Construct, tableRef: TsgDynamoTableRef, lambdas: NodejsFunction[]) {
144
- let table: ITable = Table.fromTableName(scope, tableRef.tableName, tableRef.tableName);
145
-
146
- lambdas.forEach((lambda: NodejsFunction) => {
147
- table.grantReadWriteData(lambda)
148
-
149
- });
150
- }
151
-
152
- private AddRoutes(props: MicroserviceProps,
153
- gateway: IRestApi,
154
- lambdas: NodejsFunction[],
155
- authorizer?: TokenAuthorizer) {
156
-
157
- props.RESOURCES.LAMBDA?.forEach((prop: TsgLambdaProp) => {
158
-
159
- const lambdaId = CreateLambda.getIdForLambda(prop, this.serviceBundleConfig.appConfig);
160
-
161
- if (!lambdaId) {
162
- throw new Error(`Can't find lambda`);
163
- }
164
- const lambdaNode = lambdas.find(x => x.node.id === lambdaId);
165
-
166
- if (!lambdaNode) {
167
- throw new Error("Can't find the Lambda Integration");
168
- }
169
-
170
- Routes.createResource(prop, gateway, lambdaNode, authorizer);
171
-
172
- });
173
- }
174
-
175
- private AssignAccessToSecretManager(secret: ISecret, lambdas: NodejsFunction[]) {
176
-
177
- lambdas.forEach((lambda) => {
178
- const result = secret.grantRead(lambda);
179
-
180
- });
181
-
182
- }
183
-
184
- }