@sylvesterllc/aws-constructs 1.0.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/.github/workflows/publish.yml +36 -0
- package/dist/config/AppConfig.d.ts +24 -0
- package/dist/config/AppConfig.js +62 -0
- package/dist/config/Constants.d.ts +26 -0
- package/dist/config/Constants.js +30 -0
- package/dist/config/Environments.d.ts +2 -0
- package/dist/config/Environments.js +3 -0
- package/dist/config/MicroserviceAppConfig.d.ts +5 -0
- package/dist/config/MicroserviceAppConfig.js +11 -0
- package/dist/config/bishopConfig.d.ts +2 -0
- package/dist/config/bishopConfig.js +81 -0
- package/dist/config/customConfigs/ApiAppConfig.d.ts +5 -0
- package/dist/config/customConfigs/ApiAppConfig.js +4 -0
- package/dist/config/customConfigs/GlobalAppConfig.d.ts +8 -0
- package/dist/config/customConfigs/GlobalAppConfig.js +3 -0
- package/dist/config/customConfigs/IAppConfig.d.ts +10 -0
- package/dist/config/customConfigs/IAppConfig.js +3 -0
- package/dist/config/customConfigs/ResourceAppConfig.d.ts +8 -0
- package/dist/config/customConfigs/ResourceAppConfig.js +3 -0
- package/dist/config/microServiceConfig.d.ts +2 -0
- package/dist/config/microServiceConfig.js +82 -0
- package/dist/config/types/TsgCdkConfigType.d.ts +3 -0
- package/dist/config/types/TsgCdkConfigType.js +3 -0
- package/dist/config/types/TsgCognitoConfig.d.ts +5 -0
- package/dist/config/types/TsgCognitoConfig.js +3 -0
- package/dist/config/types/TsgDnsConfig.d.ts +9 -0
- package/dist/config/types/TsgDnsConfig.js +3 -0
- package/dist/config/types/TsgDynamoDbProp.d.ts +6 -0
- package/dist/config/types/TsgDynamoDbProp.js +3 -0
- package/dist/config/types/TsgDynamoIndex.d.ts +13 -0
- package/dist/config/types/TsgDynamoIndex.js +3 -0
- package/dist/config/types/TsgDynamoProp.d.ts +15 -0
- package/dist/config/types/TsgDynamoProp.js +3 -0
- package/dist/config/types/TsgDynamoTable.d.ts +4 -0
- package/dist/config/types/TsgDynamoTable.js +3 -0
- package/dist/config/types/TsgDynamoTableRef.d.ts +4 -0
- package/dist/config/types/TsgDynamoTableRef.js +3 -0
- package/dist/config/types/TsgLambda.d.ts +4 -0
- package/dist/config/types/TsgLambda.js +3 -0
- package/dist/config/types/TsgLambdaLayerProp.d.ts +5 -0
- package/dist/config/types/TsgLambdaLayerProp.js +3 -0
- package/dist/config/types/TsgLambdaMap.d.ts +3 -0
- package/dist/config/types/TsgLambdaMap.js +3 -0
- package/dist/config/types/TsgLambdaName.d.ts +1 -0
- package/dist/config/types/TsgLambdaName.js +3 -0
- package/dist/config/types/TsgLambdaNode.d.ts +3 -0
- package/dist/config/types/TsgLambdaNode.js +3 -0
- package/dist/config/types/TsgLambdaProp.d.ts +16 -0
- package/dist/config/types/TsgLambdaProp.js +3 -0
- package/dist/config/types/TsgLambdaProps.d.ts +16 -0
- package/dist/config/types/TsgLambdaProps.js +3 -0
- package/dist/config/types/TsgLambdaRoutable.d.ts +6 -0
- package/dist/config/types/TsgLambdaRoutable.js +3 -0
- package/dist/config/types/index.d.ts +8 -0
- package/dist/config/types/index.js +25 -0
- package/dist/constructs/MicroService.d.ts +12 -0
- package/dist/constructs/MicroService.js +47 -0
- package/dist/constructs/index.d.ts +1 -0
- package/dist/constructs/index.js +6 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.js +8 -0
- package/dist/interfaces/CreateLambdaFunctionInput.d.ts +10 -0
- package/dist/interfaces/CreateLambdaFunctionInput.js +3 -0
- package/dist/interfaces/MicroserviceProps.d.ts +10 -0
- package/dist/interfaces/MicroserviceProps.js +3 -0
- package/dist/resources/base/baseResource.d.ts +10 -0
- package/dist/resources/base/baseResource.js +11 -0
- package/dist/resources/certificate/createCertificate.d.ts +9 -0
- package/dist/resources/certificate/createCertificate.js +29 -0
- package/dist/resources/cognito/createCognito.d.ts +7 -0
- package/dist/resources/cognito/createCognito.js +35 -0
- package/dist/resources/cognito/createCognitoProps.d.ts +2 -0
- package/dist/resources/cognito/createCognitoProps.js +47 -0
- package/dist/resources/dynamodb/CreateDynamo.d.ts +15 -0
- package/dist/resources/dynamodb/CreateDynamo.js +87 -0
- package/dist/resources/gateway/createApi.d.ts +19 -0
- package/dist/resources/gateway/createApi.js +104 -0
- package/dist/resources/gateway/createMicroServiceBundle.d.ts +25 -0
- package/dist/resources/gateway/createMicroServiceBundle.js +126 -0
- package/dist/resources/helpers/createAuthorizer.d.ts +15 -0
- package/dist/resources/helpers/createAuthorizer.js +80 -0
- package/dist/resources/helpers/createCommonLayer.d.ts +3 -0
- package/dist/resources/helpers/createCommonLayer.js +15 -0
- package/dist/resources/helpers/createRoutes.d.ts +8 -0
- package/dist/resources/helpers/createRoutes.js +30 -0
- package/dist/resources/lambda/createLambda.d.ts +20 -0
- package/dist/resources/lambda/createLambda.js +135 -0
- package/dist/resources/lambda-layer/createLambdaLayer.d.ts +5 -0
- package/dist/resources/lambda-layer/createLambdaLayer.js +31 -0
- package/dist/resources/layers/common/src/nodejs/api-response/index.d.ts +1 -0
- package/dist/resources/layers/common/src/nodejs/api-response/index.js +18 -0
- package/dist/resources/layers/common/src/nodejs/api-response/responses.d.ts +24 -0
- package/dist/resources/layers/common/src/nodejs/api-response/responses.js +43 -0
- package/dist/resources/layers/common/src/nodejs/index.d.ts +2 -0
- package/dist/resources/layers/common/src/nodejs/index.js +19 -0
- package/dist/resources/layers/common/src/nodejs/logger/IContext.d.ts +5 -0
- package/dist/resources/layers/common/src/nodejs/logger/IContext.js +3 -0
- package/dist/resources/layers/common/src/nodejs/logger/index.d.ts +2 -0
- package/dist/resources/layers/common/src/nodejs/logger/index.js +19 -0
- package/dist/resources/layers/common/src/nodejs/logger/logger.d.ts +2 -0
- package/dist/resources/layers/common/src/nodejs/logger/logger.js +12 -0
- package/dist/resources/resources/iam/policyDocuments/cognitoPolicy.d.ts +4 -0
- package/dist/resources/resources/iam/policyDocuments/cognitoPolicy.js +52 -0
- package/dist/resources/resources/iam/roles/createRole.d.ts +4 -0
- package/dist/resources/resources/iam/roles/createRole.js +22 -0
- package/dist/resources/route53/CreateZone.d.ts +0 -0
- package/dist/resources/route53/CreateZone.js +47 -0
- package/dist/resources/route53/create-zones.d.ts +0 -0
- package/dist/resources/route53/create-zones.js +30 -0
- package/dist/resources/securityManager/index.d.ts +4 -0
- package/dist/resources/securityManager/index.js +18 -0
- package/docs/lambda-config.md +1 -0
- package/package.json +48 -0
- package/readme.md +147 -0
- package/src/config/AppConfig.ts +93 -0
- package/src/config/Constants.ts +27 -0
- package/src/config/Environments.ts +2 -0
- package/src/config/MicroserviceAppConfig.ts +9 -0
- package/src/config/bishopConfig.ts +83 -0
- package/src/config/customConfigs/ApiAppConfig.ts +6 -0
- package/src/config/customConfigs/GlobalAppConfig.ts +11 -0
- package/src/config/customConfigs/IAppConfig.ts +13 -0
- package/src/config/customConfigs/ResourceAppConfig.ts +12 -0
- package/src/config/microServiceConfig.ts +85 -0
- package/src/config/types/TsgCdkConfigType.ts +3 -0
- package/src/config/types/TsgCognitoConfig.ts +6 -0
- package/src/config/types/TsgDnsConfig.ts +9 -0
- package/src/config/types/TsgDynamoDbProp.ts +7 -0
- package/src/config/types/TsgDynamoIndex.ts +16 -0
- package/src/config/types/TsgDynamoProp.ts +17 -0
- package/src/config/types/TsgDynamoTable.ts +5 -0
- package/src/config/types/TsgDynamoTableRef.ts +4 -0
- package/src/config/types/TsgLambda.ts +6 -0
- package/src/config/types/TsgLambdaLayerProp.ts +5 -0
- package/src/config/types/TsgLambdaMap.ts +4 -0
- package/src/config/types/TsgLambdaName.ts +4 -0
- package/src/config/types/TsgLambdaNode.ts +4 -0
- package/src/config/types/TsgLambdaProp.ts +16 -0
- package/src/config/types/TsgLambdaProps.ts +19 -0
- package/src/config/types/TsgLambdaRoutable.ts +6 -0
- package/src/config/types/index.ts +9 -0
- package/src/constructs/MicroService.ts +68 -0
- package/src/constructs/index.ts +1 -0
- package/src/index.ts +4 -0
- package/src/interfaces/CreateLambdaFunctionInput.ts +11 -0
- package/src/interfaces/MicroserviceProps.ts +11 -0
- package/src/resources/.gitkeep +0 -0
- package/src/resources/base/baseResource.ts +15 -0
- package/src/resources/certificate/createCertificate.ts +40 -0
- package/src/resources/cicd/.gitkeep +0 -0
- package/src/resources/cognito/.gitkeep +0 -0
- package/src/resources/cognito/createCognito.ts +47 -0
- package/src/resources/cognito/createCognitoProps.ts +46 -0
- package/src/resources/dynamodb/CreateDynamo.ts +111 -0
- package/src/resources/gateway/createApi.ts +138 -0
- package/src/resources/gateway/createMicroServiceBundle.ts +183 -0
- package/src/resources/helpers/createAuthorizer.ts +106 -0
- package/src/resources/helpers/createCommonLayer.ts +18 -0
- package/src/resources/helpers/createRoutes.ts +43 -0
- package/src/resources/lambda/createLambda.ts +184 -0
- package/src/resources/lambda-layer/createLambdaLayer.ts +40 -0
- package/src/resources/layers/common/package.json +22 -0
- package/src/resources/layers/common/src/nodejs/api-response/index.ts +1 -0
- package/src/resources/layers/common/src/nodejs/api-response/responses.ts +41 -0
- package/src/resources/layers/common/src/nodejs/index.ts +3 -0
- package/src/resources/layers/common/src/nodejs/logger/IContext.ts +7 -0
- package/src/resources/layers/common/src/nodejs/logger/index.ts +2 -0
- package/src/resources/layers/common/src/nodejs/logger/logger.ts +11 -0
- package/src/resources/layers/common/tsconfig.json +7 -0
- package/src/resources/resources/iam/policyDocuments/cognitoPolicy.ts +55 -0
- package/src/resources/resources/iam/roles/createRole.ts +30 -0
- package/src/resources/route53/CreateZone.ts +62 -0
- package/src/resources/route53/create-zones.ts +41 -0
- package/src/resources/securityManager/index.ts +24 -0
- package/tsconfig.json +40 -0
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Api = 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_route53_1 = require("aws-cdk-lib/aws-route53");
|
|
7
|
+
const aws_route53_targets_1 = require("aws-cdk-lib/aws-route53-targets");
|
|
8
|
+
const baseResource_1 = require("../base/baseResource");
|
|
9
|
+
const createCertificate_1 = require("../certificate/createCertificate");
|
|
10
|
+
class Api extends baseResource_1.BaseResource {
|
|
11
|
+
get APIs() {
|
|
12
|
+
return this.createdResources;
|
|
13
|
+
}
|
|
14
|
+
constructor(scope, config) {
|
|
15
|
+
super(scope, config);
|
|
16
|
+
this.corsOptions = this.createDefaultCorsOptions();
|
|
17
|
+
this.createdResources = this.createResource(scope);
|
|
18
|
+
}
|
|
19
|
+
createApi(scope) {
|
|
20
|
+
const zone = this.getZone(this.scope, this.config);
|
|
21
|
+
const api = new aws_apigateway_1.RestApi(this.scope, `${this.config.AppPrefix}-rest-api`, this.createApiProps(zone));
|
|
22
|
+
this.createARecord(scope, zone, api);
|
|
23
|
+
return api;
|
|
24
|
+
}
|
|
25
|
+
createApiProps(zone) {
|
|
26
|
+
const cert = this.createCertificate(this.scope, zone, this.config);
|
|
27
|
+
const props = {
|
|
28
|
+
restApiName: `gs-api-${this.config.AppPrefix}-${this.config.API.Name}`,
|
|
29
|
+
description: this.config.API.Description,
|
|
30
|
+
domainName: {
|
|
31
|
+
domainName: `${this.config.API.DomainPrefix}.${this.config.DNS.ZoneName}`,
|
|
32
|
+
certificate: cert.certificate,
|
|
33
|
+
endpointType: aws_apigateway_1.EndpointType.EDGE,
|
|
34
|
+
securityPolicy: aws_apigateway_1.SecurityPolicy.TLS_1_2
|
|
35
|
+
},
|
|
36
|
+
// TODO: ADD CUSTOM DOMAIN HERE
|
|
37
|
+
// defaultDomainMapping: {
|
|
38
|
+
// domainName: domain,
|
|
39
|
+
// },
|
|
40
|
+
// domainName: '',
|
|
41
|
+
defaultCorsPreflightOptions: this.corsOptions
|
|
42
|
+
};
|
|
43
|
+
return props;
|
|
44
|
+
}
|
|
45
|
+
createDefaultCorsOptions() {
|
|
46
|
+
const corsOptions = {
|
|
47
|
+
allowHeaders: [
|
|
48
|
+
'*',
|
|
49
|
+
],
|
|
50
|
+
allowMethods: aws_apigateway_1.Cors.ALL_METHODS,
|
|
51
|
+
allowCredentials: true,
|
|
52
|
+
allowOrigins: aws_apigateway_1.Cors.ALL_ORIGINS,
|
|
53
|
+
};
|
|
54
|
+
return corsOptions;
|
|
55
|
+
}
|
|
56
|
+
createCustomDomain(scope, config) {
|
|
57
|
+
const domainName = aws_apigateway_1.DomainName.fromDomainNameAttributes(scope, `${config.API.Name}-custom-domain`, {
|
|
58
|
+
domainName: config.DNS.ZoneName,
|
|
59
|
+
domainNameAliasHostedZoneId: config.DNS.ZoneId,
|
|
60
|
+
domainNameAliasTarget: config.API.DomainPrefix,
|
|
61
|
+
});
|
|
62
|
+
return domainName;
|
|
63
|
+
}
|
|
64
|
+
attachDomainToApi(scope, api, domain, config) {
|
|
65
|
+
return new aws_apigateway_1.BasePathMapping(scope, `${config.API.Name}-basePathMapping`, {
|
|
66
|
+
domainName: domain,
|
|
67
|
+
restApi: api,
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
getZone(scope, config) {
|
|
71
|
+
return aws_route53_1.HostedZone.fromHostedZoneAttributes(scope, `${config.DNS.ZoneName}-zone`, {
|
|
72
|
+
zoneName: config.DNS.ZoneName,
|
|
73
|
+
hostedZoneId: config.DNS.ZoneId
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
createCertificate(scope, zone, config) {
|
|
77
|
+
const cert = new createCertificate_1.CreateCertificate(scope, config, zone);
|
|
78
|
+
return cert;
|
|
79
|
+
}
|
|
80
|
+
createARecord(scope, zone, api) {
|
|
81
|
+
return new aws_route53_1.ARecord(scope, "ApiRecord", {
|
|
82
|
+
zone,
|
|
83
|
+
target: aws_route53_1.RecordTarget.fromAlias(new aws_route53_targets_1.ApiGateway(api)),
|
|
84
|
+
recordName: this.config.API.DomainPrefix
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
createResource(scope) {
|
|
88
|
+
const api = this.createApi(scope);
|
|
89
|
+
// TODO: ONLY IF CUSTOM MAPPING IS REQUIRED
|
|
90
|
+
// const domain = this.createCustomDomain(scope, this.config);
|
|
91
|
+
// const mapping = this.attachDomainToApi(scope, api, domain, this.config);
|
|
92
|
+
return [api];
|
|
93
|
+
}
|
|
94
|
+
createOutput(scope, createdAssets) {
|
|
95
|
+
createdAssets.forEach((api, idx) => {
|
|
96
|
+
new aws_cdk_lib_1.CfnOutput(scope, `api${idx}`, {
|
|
97
|
+
// @ts-ignore
|
|
98
|
+
value: api.url
|
|
99
|
+
});
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
exports.Api = Api;
|
|
104
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlQXBpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3Jlc291cmNlcy9nYXRld2F5L2NyZWF0ZUFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw2Q0FBNkM7QUFDN0MsK0RBQXVMO0FBQ3ZMLHlEQUF5RjtBQUN6Rix5RUFBK0U7QUFLL0UsdURBQW9EO0FBQ3BELHdFQUFxRTtBQUVyRSxNQUFhLEdBQUksU0FBUSwyQkFBc0I7SUFLM0MsSUFBSSxJQUFJO1FBQ0osT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7SUFDakMsQ0FBQztJQUVELFlBQVksS0FBZ0IsRUFBRSxNQUFpQjtRQUMzQyxLQUFLLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBRXJCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUM7UUFFbkQsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVPLFNBQVMsQ0FBQyxLQUFnQjtRQUM5QixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRW5ELE1BQU0sR0FBRyxHQUFHLElBQUksd0JBQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLFdBQVcsRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFFcEcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBRXJDLE9BQU8sR0FBRyxDQUFDO0lBQ2YsQ0FBQztJQUVPLGNBQWMsQ0FBQyxJQUFpQjtRQUVwQyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxD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Q0FBQyxDQUFDO1lBQ25ELFVBQVUsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxZQUFZO1NBQzNDLENBQUMsQ0FBQztJQUVQLENBQUM7SUFFUyxjQUFjLENBQUMsS0FBZ0I7UUFFckMsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNsQyw0Q0FBNEM7UUFDNUMsOERBQThEO1FBRTlELDJFQUEyRTtRQUkzRSxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDakIsQ0FBQztJQUVTLFlBQVksQ0FBSSxLQUFnQixFQUFFLGFBQWtCO1FBQzFELGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUU7WUFFL0IsSUFBSSx1QkFBUyxDQUFDLEtBQUssRUFBRSxNQUFNLEdBQUcsRUFBRSxFQUFFO2dCQUM5QixhQUFhO2dCQUNiLEtBQUssRUFBRSxHQUFHLENBQUMsR0FBRzthQUNqQixDQUFDLENBQUM7UUFDUCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7Q0FFSjtBQTlIRCxrQkE4SEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDZm5PdXRwdXQsIFRhZyB9IGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuaW1wb3J0IHsgQmFzZVBhdGhNYXBwaW5nLCBDb3JzLCBDb3JzT3B0aW9ucywgRG9tYWluTmFtZSwgRW5kcG9pbnRUeXBlLCBJRG9tYWluTmFtZSwgSVJlc3RBcGksIE1ldGhvZE9wdGlvbnMsIFJlc3RBcGksIFJlc3RBcGlQcm9wcywgU2VjdXJpdHlQb2xpY3kgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWFwaWdhdGV3YXlcIjtcbmltcG9ydCB7IEFSZWNvcmQsIEhvc3RlZFpvbmUsIElIb3N0ZWRab25lLCBSZWNvcmRUYXJnZXQgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLXJvdXRlNTNcIjtcbmltcG9ydCB7IEFwaUdhdGV3YXksIEFwaUdhdGV3YXlEb21haW4gfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLXJvdXRlNTMtdGFyZ2V0c1wiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7IEFwcENvbmZpZyB9IGZyb20gXCIuLi8uLi9jb25maWcvQXBwQ29uZmlnXCI7XG5pbXBvcnQgeyBNaWNyb3NlcnZpY2VQcm9wcyB9IGZyb20gXCIuLi8uLi9pbnRlcmZhY2VzL01pY3Jvc2VydmljZVByb3BzXCI7XG5cbmltcG9ydCB7IEJhc2VSZXNvdXJjZSB9IGZyb20gXCIuLi9iYXNlL2Jhc2VSZXNvdXJjZVwiO1xuaW1wb3J0IHsgQ3JlYXRlQ2VydGlmaWNhdGUgfSBmcm9tIFwiLi4vY2VydGlmaWNhdGUvY3JlYXRlQ2VydGlmaWNhdGVcIjtcblxuZXhwb3J0IGNsYXNzIEFwaSBleHRlbmRzIEJhc2VSZXNvdXJjZTxJUmVzdEFwaT4ge1xuICAgIFxuICAgIHByaXZhdGUgY29yc09wdGlvbnM6IENvcnNPcHRpb25zO1xuICAgIFxuXG4gICAgZ2V0IEFQSXMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZWRSZXNvdXJjZXM7XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgY29uZmlnOiBBcHBDb25maWcpIHtcbiAgICAgICAgc3VwZXIoc2NvcGUsIGNvbmZpZyk7XG5cbiAgICAgICAgdGhpcy5jb3JzT3B0aW9ucyA9IHRoaXMuY3JlYXRlRGVmYXVsdENvcnNPcHRpb25zKCk7ICBcbiAgICAgICAgXG4gICAgICAgIHRoaXMuY3JlYXRlZFJlc291cmNlcyA9IHRoaXMuY3JlYXRlUmVzb3VyY2Uoc2NvcGUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgY3JlYXRlQXBpKHNjb3BlOiBDb25zdHJ1Y3QpIHtcbiAgICAgICAgY29uc3Qgem9uZSA9IHRoaXMuZ2V0Wm9uZSh0aGlzLnNjb3BlLCB0aGlzLmNvbmZpZyk7XG5cbiAgICAgICAgY29uc3QgYXBpID0gbmV3IFJlc3RBcGkodGhpcy5zY29wZSwgYCR7dGhpcy5jb25maWcuQXBwUHJlZml4fS1yZXN0LWFwaWAsIHRoaXMuY3JlYXRlQXBpUHJvcHMoem9uZSkpO1xuXG4gICAgICAgIHRoaXMuY3JlYXRlQVJlY29yZChzY29wZSwgem9uZSwgYXBpKTtcblxuICAgICAgICByZXR1cm4gYXBpO1xuICAgIH1cblxuICAgIHByaXZhdGUgY3JlYXRlQXBpUHJvcHMoem9uZTogSUhvc3RlZFpvbmUpOiBSZXN0QXBpUHJvcHMge1xuICAgICAgICBcbiAgICAgICAgY29uc3QgY2VydCA9IHRoaXMuY3JlYXRlQ2VydGlmaWNhdGUodGhpcy5zY29wZSwgem9uZSwgdGhpcy5jb25maWcpO1xuXG4gICAgICAgIGNvbnN0IHByb3BzOiBSZXN0QXBpUHJvcHMgPSB7XG4gICAgICAgICAgICByZXN0QXBpTmFtZTogYGdzLWFwaS0ke3RoaXMuY29uZmlnLkFwcFByZWZpeH0tJHt0aGlzLmNvbmZpZy5BUEkuTmFtZX1gLCBcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiB0aGlzLmNvbmZpZy5BUEkuRGVzY3JpcHRpb24sXG4gICAgICAgICAgICBkb21haW5OYW1lOiB7XG4gICAgICAgICAgICAgICAgZG9tYWluTmFtZTogYCR7dGhpcy5jb25maWcuQVBJLkRvbWFpblByZWZpeH0uJHt0aGlzLmNvbmZpZy5ETlMuWm9uZU5hbWV9YCxcbiAgICAgICAgICAgICAgICBjZXJ0aWZpY2F0ZTogY2VydC5jZXJ0aWZpY2F0ZSxcbiAgICAgICAgICAgICAgICBlbmRwb2ludFR5cGU6IEVuZHBvaW50VHlwZS5FREdFLFxuICAgICAgICAgICAgICAgIHNlY3VyaXR5UG9saWN5OiBTZWN1cml0eVBvbGljeS5UTFNfMV8yXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgLy8gVE9ETzogIEFERCBDVVNUT00gRE9NQUlOIEhFUkVcbiAgICAgICAgICAgIC8vIGRlZmF1bHREb21haW5NYXBwaW5nOiB7XG4gICAgICAgICAgICAvLyAgICAgZG9tYWluTmFtZTogZG9tYWluLCAgICAgICAgICAgIFxuICAgICAgICAgICAgLy8gICB9LFxuICAgICAgICAgICAgLy8gZG9tYWluTmFtZTogJycsXG4gICAgICAgICAgICBkZWZhdWx0Q29yc1ByZWZsaWdodE9wdGlvbnM6IHRoaXMuY29yc09wdGlvbnNcbiAgICAgICAgfTtcblxuICAgICAgICByZXR1cm4gcHJvcHM7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjcmVhdGVEZWZhdWx0Q29yc09wdGlvbnMoKSB7XG5cbiAgICAgICAgY29uc3QgY29yc09wdGlvbnM6IENvcnNPcHRpb25zID0ge1xuICAgICAgICAgICAgYWxsb3dIZWFkZXJzOiBbXG4gICAgICAgICAgICAgICAgJyonLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIGFsbG93TWV0aG9kczogQ29ycy5BTExfTUVUSE9EUyxcbiAgICAgICAgICAgIGFsbG93Q3JlZGVudGlhbHM6IHRydWUsXG4gICAgICAgICAgICBhbGxvd09yaWdpbnM6IENvcnMuQUxMX09SSUdJTlMsXG4gICAgICAgIH07XG5cbiAgICAgICAgcmV0dXJuIGNvcnNPcHRpb25zO1xuICAgIH1cbiAgICBcbiAgICBwcml2YXRlIGNyZWF0ZUN1c3RvbURvbWFpbihzY29wZTogQ29uc3RydWN0LCBjb25maWc6IE1pY3Jvc2VydmljZVByb3BzKSB7XG4gICAgICAgIGNvbnN0IGRvbWFpbk5hbWUgPSBEb21haW5OYW1lLmZyb21Eb21haW5OYW1lQXR0cmlidXRlcyhzY29wZSwgYCR7Y29uZmlnLkFQSS5OYW1lfS1jdXN0b20tZG9tYWluYCwge1xuICAgICAgICAgICAgZG9tYWluTmFtZTogY29uZmlnLkROUy5ab25lTmFtZSxcbiAgICAgICAgICAgIGRvbWFpbk5hbWVBbGlhc0hvc3RlZFpvbmVJZDogY29uZmlnLkROUy5ab25lSWQhLFxuICAgICAgICAgICAgZG9tYWluTmFtZUFsaWFzVGFyZ2V0OiBjb25maWcuQVBJLkRvbWFpblByZWZpeCEsXG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICByZXR1cm4gZG9tYWluTmFtZVxuICAgIH1cbiAgIFxuICAgIHByaXZhdGUgYXR0YWNoRG9tYWluVG9BcGkoc2NvcGU6IENvbnN0cnVjdCwgYXBpOiBJUmVzdEFwaSwgZG9tYWluOiBJRG9tYWluTmFtZSwgY29uZmlnOiBNaWNyb3NlcnZpY2VQcm9wcykge1xuICAgICAgICByZXR1cm4gbmV3IEJhc2VQYXRoTWFwcGluZyhzY29wZSwgYCR7Y29uZmlnLkFQSS5OYW1lfS1iYXNlUGF0aE1hcHBpbmdgLCB7XG4gICAgICAgICAgICBkb21haW5OYW1lOiBkb21haW4sXG4gICAgICAgICAgICByZXN0QXBpOiBhcGksXG4gICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRab25lKHNjb3BlOiBDb25zdHJ1Y3QsIGNvbmZpZzogTWljcm9zZXJ2aWNlUHJvcHMpIHtcbiAgICAgICAgcmV0dXJuIEhvc3RlZFpvbmUuZnJvbUhvc3RlZFpvbmVBdHRyaWJ1dGVzKHNjb3BlLCBgJHtjb25maWcuRE5TLlpvbmVOYW1lfS16b25lYCwge1xuICAgICAgICAgICAgem9uZU5hbWU6IGNvbmZpZy5ETlMuWm9uZU5hbWUsXG4gICAgICAgICAgICBob3N0ZWRab25lSWQ6IGNvbmZpZy5ETlMuWm9uZUlkIVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNyZWF0ZUNlcnRpZmljYXRlKHNjb3BlOiBDb25zdHJ1Y3QsIHpvbmU6IElIb3N0ZWRab25lLCBjb25maWc6IE1pY3Jvc2VydmljZVByb3BzKSB7XG4gICAgICAgIGNvbnN0IGNlcnQgPSBuZXcgQ3JlYXRlQ2VydGlmaWNhdGUoc2NvcGUsIGNvbmZpZywgem9uZSk7XG4gICAgICAgIHJldHVybiBjZXJ0O1xuICAgIH1cblxuICAgIHByaXZhdGUgY3JlYXRlQVJlY29yZChzY29wZTogQ29uc3RydWN0LCB6b25lOiBJSG9zdGVkWm9uZSwgYXBpOiBSZXN0QXBpKSB7XG4gICAgICAgIHJldHVybiBuZXcgQVJlY29yZChzY29wZSwgXCJBcGlSZWNvcmRcIiwge1xuICAgICAgICAgICAgem9uZSxcbiAgICAgICAgICAgIHRhcmdldDogUmVjb3JkVGFyZ2V0LmZyb21BbGlhcyhuZXcgQXBpR2F0ZXdheShhcGkpKSxcbiAgICAgICAgICAgIHJlY29yZE5hbWU6IHRoaXMuY29uZmlnLkFQSS5Eb21haW5QcmVmaXhcbiAgICAgICAgfSk7XG4gICAgICAgICAgICBcbiAgICB9ICAgIFxuXG4gICAgcHJvdGVjdGVkIGNyZWF0ZVJlc291cmNlKHNjb3BlOiBDb25zdHJ1Y3QpIHsgICAgICAgIFxuXG4gICAgICAgIGNvbnN0IGFwaSA9IHRoaXMuY3JlYXRlQXBpKHNjb3BlKTtcbiAgICAgICAgLy8gVE9ETzogIE9OTFkgSUYgQ1VTVE9NIE1BUFBJTkcgSVMgUkVRVUlSRURcbiAgICAgICAgLy8gY29uc3QgZG9tYWluID0gdGhpcy5jcmVhdGVDdXN0b21Eb21haW4oc2NvcGUsIHRoaXMuY29uZmlnKTtcblxuICAgICAgICAvLyBjb25zdCBtYXBwaW5nID0gdGhpcy5hdHRhY2hEb21haW5Ub0FwaShzY29wZSwgYXBpLCBkb21haW4sIHRoaXMuY29uZmlnKTtcblxuICAgICAgICBcblxuICAgICAgICByZXR1cm4gW2FwaV07XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGNyZWF0ZU91dHB1dDxUPihzY29wZTogQ29uc3RydWN0LCBjcmVhdGVkQXNzZXRzOiBUW10pOiB2b2lkIHtcbiAgICAgICAgY3JlYXRlZEFzc2V0cy5mb3JFYWNoKChhcGksIGlkeCkgPT4ge1xuXG4gICAgICAgICAgICBuZXcgQ2ZuT3V0cHV0KHNjb3BlLCBgYXBpJHtpZHh9YCwgeyAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICAgICAgdmFsdWU6IGFwaS51cmxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgXG59Il19
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { IRestApi } from "aws-cdk-lib/aws-apigateway";
|
|
2
|
+
import { Table } from "aws-cdk-lib/aws-dynamodb";
|
|
3
|
+
import { Construct } from "constructs";
|
|
4
|
+
import { MicroserviceProps } from "../../interfaces/MicroserviceProps";
|
|
5
|
+
import { ISecret } from "aws-cdk-lib/aws-secretsmanager";
|
|
6
|
+
import { LayerVersion } from "aws-cdk-lib/aws-lambda";
|
|
7
|
+
import { AppConfig } from "../../config/AppConfig";
|
|
8
|
+
export declare class CreateMicroServiceBundle {
|
|
9
|
+
private readonly gatewayApi;
|
|
10
|
+
private readonly props;
|
|
11
|
+
private readonly appConfig;
|
|
12
|
+
private readonly tables?;
|
|
13
|
+
private readonly secretMgr?;
|
|
14
|
+
private readonly layers?;
|
|
15
|
+
protected readonly requireDynamoTableRefs: boolean;
|
|
16
|
+
protected readonly requireAuthorizer: boolean;
|
|
17
|
+
constructor(scope: Construct, gatewayApi: IRestApi, props: MicroserviceProps, appConfig: AppConfig, tables?: Table[] | undefined, secretMgr?: ISecret | undefined, layers?: LayerVersion[] | undefined);
|
|
18
|
+
private onInit;
|
|
19
|
+
private AssignAccessToTables;
|
|
20
|
+
private AssignAccessToTableRefs;
|
|
21
|
+
private AssignReadWriteAccessToTableInRegion;
|
|
22
|
+
private AssignReadWriteAccessToTable;
|
|
23
|
+
private AddRoutes;
|
|
24
|
+
private AssignAccessToSecretManager;
|
|
25
|
+
}
|
|
@@ -0,0 +1,126 @@
|
|
|
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
|
+
//console.log("ENTER CreateMicroServiceBundle.onInit");
|
|
25
|
+
let authorizer = undefined;
|
|
26
|
+
// Create Authorizer
|
|
27
|
+
if (this.requireAuthorizer) {
|
|
28
|
+
authorizer = new createAuthorizer_1.CreateAuthorizer(scope, this.appConfig, this.props.RESOURCES.AUTHORIZER).JwtAuthorizer;
|
|
29
|
+
}
|
|
30
|
+
// Create Lambdas
|
|
31
|
+
const lambdaProp = {
|
|
32
|
+
scope,
|
|
33
|
+
prop: this.props,
|
|
34
|
+
layers: this.layers,
|
|
35
|
+
appConfig: this.appConfig
|
|
36
|
+
};
|
|
37
|
+
const lambdas = new createLambda_1.CreateLambda(lambdaProp, this.appConfig);
|
|
38
|
+
if (this.tables) {
|
|
39
|
+
this.AssignAccessToTables(this.tables, lambdas.Lambdas);
|
|
40
|
+
}
|
|
41
|
+
// Allow access to existing tables
|
|
42
|
+
if (this.requireDynamoTableRefs) {
|
|
43
|
+
this.AssignAccessToTableRefs(scope, this.props.RESOURCES.DYNAMO?.TABLE_REFS, lambdas.Lambdas);
|
|
44
|
+
}
|
|
45
|
+
if (this.secretMgr) {
|
|
46
|
+
this.AssignAccessToSecretManager(this.secretMgr, lambdas.Lambdas);
|
|
47
|
+
}
|
|
48
|
+
lambdas.Lambdas.map((lambda) => {
|
|
49
|
+
lambda.metricErrors({
|
|
50
|
+
label: `${lambda.functionName}-errors`,
|
|
51
|
+
period: aws_cdk_lib_1.Duration.minutes(3)
|
|
52
|
+
});
|
|
53
|
+
});
|
|
54
|
+
this.AddRoutes(this.props, this.gatewayApi, lambdas.Lambdas, authorizer);
|
|
55
|
+
}
|
|
56
|
+
AssignAccessToTables(tables, lambdas) {
|
|
57
|
+
if (tables) {
|
|
58
|
+
tables.forEach((table) => {
|
|
59
|
+
lambdas.forEach((lambda) => {
|
|
60
|
+
// This is a CDK bug: It doesn't provide
|
|
61
|
+
// access to the indexes.
|
|
62
|
+
//table.grantReadWriteData(lambda);
|
|
63
|
+
// Workaround:
|
|
64
|
+
lambda.addToRolePolicy(new aws_iam_1.PolicyStatement({
|
|
65
|
+
effect: aws_iam_1.Effect.ALLOW,
|
|
66
|
+
actions: CreateDynamo_1.CreateDynamoDb.ReadWriteActions,
|
|
67
|
+
resources: [
|
|
68
|
+
table.tableArn,
|
|
69
|
+
`${table.tableArn}/*`, // This is not recognized by cdk, but table is. why?
|
|
70
|
+
],
|
|
71
|
+
}));
|
|
72
|
+
});
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
AssignAccessToTableRefs(scope, tableRefs, lambdas) {
|
|
77
|
+
if (tableRefs) {
|
|
78
|
+
tableRefs.forEach((tableRef) => {
|
|
79
|
+
if (tableRef.region) {
|
|
80
|
+
this.AssignReadWriteAccessToTableInRegion(scope, tableRef, lambdas);
|
|
81
|
+
}
|
|
82
|
+
else {
|
|
83
|
+
this.AssignReadWriteAccessToTable(scope, tableRef, lambdas);
|
|
84
|
+
}
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
AssignReadWriteAccessToTableInRegion(scope, tableRef, lambdas) {
|
|
89
|
+
lambdas.forEach((lambda) => {
|
|
90
|
+
let tableArn = "arn:aws:dynamodb:" + tableRef.region + ":" + (scope.account) + ":table/" + tableRef.tableName;
|
|
91
|
+
let statement = new aws_iam_1.PolicyStatement({
|
|
92
|
+
effect: aws_iam_1.Effect.ALLOW,
|
|
93
|
+
resources: [
|
|
94
|
+
tableArn,
|
|
95
|
+
tableArn + "/index/*",
|
|
96
|
+
],
|
|
97
|
+
actions: CreateDynamo_1.CreateDynamoDb.ReadWriteActions,
|
|
98
|
+
});
|
|
99
|
+
lambda.role?.addToPrincipalPolicy(statement);
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
AssignReadWriteAccessToTable(scope, tableRef, lambdas) {
|
|
103
|
+
let table = aws_dynamodb_1.Table.fromTableName(scope, tableRef.tableName, tableRef.tableName);
|
|
104
|
+
lambdas.forEach((lambda) => {
|
|
105
|
+
table.grantReadWriteData(lambda);
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
AddRoutes(props, gateway, lambdas, authorizer) {
|
|
109
|
+
this.appConfig.lambdaConfigs?.forEach((prop) => {
|
|
110
|
+
const lambdaId = createLambda_1.CreateLambda.getIdForLambda(prop);
|
|
111
|
+
const lambdaNode = lambdas.find(x => x.node.id === lambdaId);
|
|
112
|
+
if (!lambdaNode) {
|
|
113
|
+
throw new Error("Can't find the Lambda Integration");
|
|
114
|
+
}
|
|
115
|
+
createRoutes_1.Routes.createResource(prop, gateway, lambdaNode, authorizer);
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
AssignAccessToSecretManager(secret, lambdas) {
|
|
119
|
+
lambdas.forEach((lambda) => {
|
|
120
|
+
const result = secret.grantRead(lambda);
|
|
121
|
+
console.log('Assigning Access to Secret Manager: ', result);
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
exports.CreateMicroServiceBundle = CreateMicroServiceBundle;
|
|
126
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlTWljcm9TZXJ2aWNlQnVuZGxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3Jlc291cmNlcy9nYXRld2F5L2NyZWF0ZU1pY3JvU2VydmljZUJ1bmRsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSwyREFBeUQ7QUFFekQsaURBQThEO0FBSzlELGtFQUErRDtBQUMvRCwwREFBaUQ7QUFDakQseURBQXNEO0FBQ3RELDZDQUE4QztBQUM5QywyREFBMEQ7QUFNMUQsTUFBYSx3QkFBd0I7SUFLakMsWUFBWSxLQUFnQixFQUNQLFVBQW9CLEVBQ3BCLEtBQXdCLEVBQ3hCLFNBQW9CLEVBQ3BCLE1BQWdCLEVBQ2hCLFNBQW1CLEVBQ25CLE1BQXVCO1FBTHZCLGVBQVUsR0FBVixVQUFVLENBQVU7UUFDcEIsVUFBSyxHQUFMLEtBQUssQ0FBbUI7UUFDeEIsY0FBUyxHQUFULFNBQVMsQ0FBVztRQUNwQixXQUFNLEdBQU4sTUFBTSxDQUFVO1FBQ2hCLGNBQVMsR0FBVCxTQUFTLENBQVU7UUFDbkIsV0FBTSxHQUFOLE1BQU0sQ0FBaUI7UUFHeEMsSUFBSSxDQUFDLHNCQUFzQixHQUFHLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO1FBQ25HLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO1FBQ3JFLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdkIsQ0FBQztJQUVPLE1BQU0sQ0FBQyxLQUFnQjtRQUUzQix1REFBdUQ7UUFDdkQsSUFBSSxVQUFVLEdBQThCLFNBQVMsQ0FBQztRQUV0RCxv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QUFDLGFBQWEsRUFBRSxPQUFPLENBQUMsQ0FBQyxJQUFtQixFQUFFLEVBQUU7WUFFMUQsTUFBTSxRQUFRLEdBQUcsMkJBQVksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDbkQsTUFBTSxVQUFVLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLFFBQVEsQ0FBQyxDQUFDO1lBRTdELElBQUksQ0FBQyxVQUFVLEVBQUU7Z0JBQ2IsTUFBTSxJQUFJLEtBQUssQ0FBQyxtQ0FBbUMsQ0FBQyxDQUFDO2FBQ3hEO1lBRUQscUJBQU0sQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFFakUsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU8sMkJBQTJCLENBQUMsTUFBZSxFQUFFLE9BQXlCO1FBRTFFLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtZQUN2QixNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3hDLE9BQU8sQ0FBQyxHQUFHLENBQUMsc0NBQXNDLEVBQUMsTUFBTSxDQUFDLENBQUM7UUFDL0QsQ0FBQyxDQUFDLENBQUM7SUFFUCxDQUFDO0NBRUo7QUFwS0QsNERBb0tDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSVJlc3RBcGksIFRva2VuQXV0aG9yaXplciB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtYXBpZ2F0ZXdheVwiO1xuaW1wb3J0IHsgSVRhYmxlLCBUYWJsZSB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtZHluYW1vZGJcIjtcbmltcG9ydCB7IE5vZGVqc0Z1bmN0aW9uIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1sYW1iZGEtbm9kZWpzXCI7XG5pbXBvcnQgeyBFZmZlY3QsIFBvbGljeVN0YXRlbWVudCB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtaWFtXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHsgVHNnRHluYW1vVGFibGVSZWYsIFRzZ0xhbWJkYVByb3AgfSBmcm9tIFwiLi4vLi4vY29uZmlnL3R5cGVzXCI7XG5pbXBvcnQgeyBUc2dMYW1iZGFQcm9wcyB9IGZyb20gXCIuLi8uLi9jb25maWcvdHlwZXMvVHNnTGFtYmRhUHJvcHNcIjtcbmltcG9ydCB7IE1pY3Jvc2VydmljZVByb3BzIH0gZnJvbSBcIi4uLy4uL2ludGVyZmFjZXMvTWljcm9zZXJ2aWNlUHJvcHNcIjtcbmltcG9ydCB7IENyZWF0ZUF1dGhvcml6ZXIgfSBmcm9tIFwiLi4vaGVscGVycy9jcmVhdGVBdXRob3JpemVyXCI7XG5pbXBvcnQgeyBSb3V0ZXMgfSBmcm9tIFwiLi4vaGVscGVycy9jcmVhdGVSb3V0ZXNcIjtcbmltcG9ydCB7IENyZWF0ZUxhbWJkYSB9IGZyb20gXCIuLi9sYW1iZGEvY3JlYXRlTGFtYmRhXCI7XG5pbXBvcnQgeyBEdXJhdGlvbiwgU3RhY2sgfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCB7IENyZWF0ZUR5bmFtb0RiIH0gZnJvbSBcIi4uL2R5bmFtb2RiL0NyZWF0ZUR5bmFtb1wiO1xuaW1wb3J0IHsgSVNlY3JldCB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3Mtc2VjcmV0c21hbmFnZXJcIjtcbmltcG9ydCB7IExheWVyVmVyc2lvbiB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtbGFtYmRhXCI7XG5pbXBvcnQgeyBBcHBDb25maWcgfSBmcm9tIFwiLi4vLi4vY29uZmlnL0FwcENvbmZpZ1wiO1xuaW1wb3J0IHsgTWV0cmljT3B0aW9ucyB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtY2xvdWR3YXRjaFwiO1xuXG5leHBvcnQgY2xhc3MgQ3JlYXRlTWljcm9TZXJ2aWNlQnVuZGxlIHtcbiAgICBcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgcmVxdWlyZUR5bmFtb1RhYmxlUmVmczogYm9vbGVhbjtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgcmVxdWlyZUF1dGhvcml6ZXI6IGJvb2xlYW47XG5cbiAgICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBnYXRld2F5QXBpOiBJUmVzdEFwaSwgXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgcHJvcHM6IE1pY3Jvc2VydmljZVByb3BzLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGFwcENvbmZpZzogQXBwQ29uZmlnLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHRhYmxlcz86IFRhYmxlW10sIFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHNlY3JldE1ncj86IElTZWNyZXQsIFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGxheWVycz86IExheWVyVmVyc2lvbltdLFxuICAgICAgICApIHtcbiAgICAgICAgXG4gICAgICAgIHRoaXMucmVxdWlyZUR5bmFtb1RhYmxlUmVmcyA9IChwcm9wcy5SRVNPVVJDRVMuRFlOQU1PPy5UQUJMRV9SRUZTPy5sZW5ndGggPz8gMCA+IDApID8gdHJ1ZSA6IGZhbHNlO1xuICAgICAgICB0aGlzLnJlcXVpcmVBdXRob3JpemVyID0gKHByb3BzLlJFU09VUkNFUy5BVVRIT1JJWkVSKSA/IHRydWUgOiBmYWxzZTtcbiAgICAgICAgdGhpcy5vbkluaXQoc2NvcGUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgb25Jbml0KHNjb3BlOiBDb25zdHJ1Y3QpIHtcblxuICAgICAgICAvL2NvbnNvbGUubG9nKFwiRU5URVIgQ3JlYXRlTWljcm9TZXJ2aWNlQnVuZGxlLm9uSW5pdFwiKTtcbiAgICAgICAgbGV0IGF1dGhvcml6ZXI6IFRva2VuQXV0aG9yaXplcnx1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG5cbiAgICAgICAgLy8gQ3JlYXRlIEF1dGhvcml6ZXJcbiAgICAgICAgaWYgKHRoaXMucmVxdWlyZUF1dGhvcml6ZXIpIHtcbiAgICAgICAgICAgIGF1dGhvcml6ZXIgPSBuZXcgQ3JlYXRlQXV0aG9yaXplcihzY29wZSwgdGhpcy5hcHBDb25maWcsIHRoaXMucHJvcHMuUkVTT1VSQ0VTLkFVVEhPUklaRVIhKS5Kd3RBdXRob3JpemVyOyAgIFxuICAgICAgICB9ICAgICAgICBcblxuICAgICAgICAvLyBDcmVhdGUgTGFtYmRhc1xuICAgICAgICBjb25zdCBsYW1iZGFQcm9wOiBUc2dMYW1iZGFQcm9wcyA9IHtcbiAgICAgICAgICAgIHNjb3BlLFxuICAgICAgICAgICAgcHJvcDogdGhpcy5wcm9wcywgICAgICAgICAgICBcbiAgICAgICAgICAgIGxheWVyczogdGhpcy5sYXllcnMsXG4gICAgICAgICAgICBhcHBDb25maWc6IHRoaXMuYXBwQ29uZmlnXG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3QgbGFtYmRhcyA9IG5ldyBDcmVhdGVMYW1iZGEobGFtYmRhUHJvcCwgdGhpcy5hcHBDb25maWcpO1xuXG4gICAgICAgIGlmICh0aGlzLnRhYmxlcykge1xuICAgICAgICAgICAgdGhpcy5Bc3NpZ25BY2Nlc3NUb1RhYmxlcyh0aGlzLnRhYmxlcywgbGFtYmRhcy5MYW1iZGFzKTtcbiAgICAgICAgfSAgICAgICAgXG5cbiAgICAgICAgLy8gQWxsb3cgYWNjZXNzIHRvIGV4aXN0aW5nIHRhYmxlc1xuICAgICAgICBpZiAodGhpcy5yZXF1aXJlRHluYW1vVGFibGVSZWZzKSB7XG4gICAgICAgICAgICB0aGlzLkFzc2lnbkFjY2Vzc1RvVGFibGVSZWZzKHNjb3BlLCB0aGlzLnByb3BzLlJFU09VUkNFUy5EWU5BTU8/LlRBQkxFX1JFRlMsIGxhbWJkYXMuTGFtYmRhcyk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5zZWNyZXRNZ3IpIHtcbiAgICAgICAgICAgIHRoaXMuQXNzaWduQWNjZXNzVG9TZWNyZXRNYW5hZ2VyKHRoaXMuc2VjcmV0TWdyLCBsYW1iZGFzLkxhbWJkYXMpO1xuICAgICAgICB9ICAgICAgICBcblxuICAgICAgICBsYW1iZGFzLkxhbWJkYXMubWFwKChsYW1iZGEpID0+IHtcbiAgICAgICAgICAgIGxhbWJkYS5tZXRyaWNFcnJvcnMoeyAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGAke2xhbWJkYS5mdW5jdGlvbk5hbWV9LWVycm9yc2AsIFxuICAgICAgICAgICAgICAgICAgICBwZXJpb2Q6IER1cmF0aW9uLm1pbnV0ZXMoMykgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgfSlcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5BZGRSb3V0ZXModGhpcy5wcm9wcywgdGhpcy5nYXRld2F5QXBpLCBsYW1iZGFzLkxhbWJkYXMsIGF1dGhvcml6ZXIpO1xuICAgIH1cblxuICAgIHByaXZhdGUgQXNzaWduQWNjZXNzVG9UYWJsZXModGFibGVzOiBUYWJsZVtdLCBsYW1iZGFzOiBOb2RlanNGdW5jdGlvbltdKSB7XG5cbiAgICAgICAgaWYgKHRhYmxlcykge1xuICAgICAgICAgICAgdGFibGVzLmZvckVhY2goKHRhYmxlOiBJVGFibGUpID0+IHtcblxuICAgICAgICAgICAgICAgIGxhbWJkYXMuZm9yRWFjaCgobGFtYmRhOiBOb2RlanNGdW5jdGlvbikgPT4ge1xuXG4gICAgICAgICAgICAgICAgICAgIC8vICBUaGlzIGlzIGEgQ0RLIGJ1ZzogSXQgZG9lc24ndCBwcm92aWRlXG4gICAgICAgICAgICAgICAgICAgIC8vICBhY2Nlc3MgdG8gdGhlIGluZGV4ZXMuXG4gICAgICAgICAgICAgICAgICAgIC8vdGFibGUuZ3JhbnRSZWFkV3JpdGVEYXRhKGxhbWJkYSk7XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gIFdvcmthcm91bmQ6XG4gICAgICAgICAgICAgICAgICAgIGxhbWJkYS5hZGRUb1JvbGVQb2xpY3koXG4gICAgICAgICAgICAgICAgICAgICAgICBuZXcgUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlZmZlY3Q6IEVmZmVjdC5BTExPVyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb25zOiBDcmVhdGVEeW5hbW9EYi5SZWFkV3JpdGVBY3Rpb25zLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc291cmNlczogW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJsZS50YWJsZUFybixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYCR7dGFibGUudGFibGVBcm59LypgLCAvLyBUaGlzIGlzIG5vdCByZWNvZ25pemVkIGJ5IGNkaywgYnV0IHRhYmxlIGlzLiAgd2h5P1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIEFzc2lnbkFjY2Vzc1RvVGFibGVSZWZzKHNjb3BlOiBDb25zdHJ1Y3QsIHRhYmxlUmVmczogVHNnRHluYW1vVGFibGVSZWZbXSB8IHVuZGVmaW5lZCwgbGFtYmRhczogTm9kZWpzRnVuY3Rpb25bXSkge1xuXG4gICAgICAgIGlmICh0YWJsZVJlZnMpIHtcbiAgICAgICAgICAgIHRhYmxlUmVmcy5mb3JFYWNoKCh0YWJsZVJlZjogVHNnRHluYW1vVGFibGVSZWYpID0+IHtcblxuICAgICAgICAgICAgICAgIGlmICh0YWJsZVJlZi5yZWdpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5Bc3NpZ25SZWFkV3JpdGVBY2Nlc3NUb1RhYmxlSW5SZWdpb24oc2NvcGUsIHRhYmxlUmVmLCBsYW1iZGFzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuQXNzaWduUmVhZFdyaXRlQWNjZXNzVG9UYWJsZShzY29wZSwgdGFibGVSZWYsIGxhbWJkYXMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBBc3NpZ25SZWFkV3JpdGVBY2Nlc3NUb1RhYmxlSW5SZWdpb24oc2NvcGU6IENvbnN0cnVjdCwgdGFibGVSZWY6IFRzZ0R5bmFtb1RhYmxlUmVmLCBsYW1iZGFzOiBOb2RlanNGdW5jdGlvbltdKSB7XG4gICAgICAgIGxhbWJkYXMuZm9yRWFjaCgobGFtYmRhOiBOb2RlanNGdW5jdGlvbikgPT4ge1xuXG4gICAgICAgICAgICBsZXQgdGFibGVBcm4gPSBcImFybjphd3M6ZHluYW1vZGI6XCIgKyB0YWJsZVJlZi5yZWdpb24gKyBcIjpcIiArICgoc2NvcGUgYXMgU3RhY2spLmFjY291bnQpICsgXCI6dGFibGUvXCIgKyB0YWJsZVJlZi50YWJsZU5hbWU7XG4gICAgICAgICAgICBsZXQgc3RhdGVtZW50ID0gbmV3IFBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgICAgICAgICAgZWZmZWN0OiBFZmZlY3QuQUxMT1csXG4gICAgICAgICAgICAgICAgcmVzb3VyY2VzOiBbXG4gICAgICAgICAgICAgICAgICAgIHRhYmxlQXJuLFxuICAgICAgICAgICAgICAgICAgICB0YWJsZUFybiArIFwiL2luZGV4LypcIixcbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIGFjdGlvbnM6IENyZWF0ZUR5bmFtb0RiLlJlYWRXcml0ZUFjdGlvbnMsXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgbGFtYmRhLnJvbGU/LmFkZFRvUHJpbmNpcGFsUG9saWN5KHN0YXRlbWVudCk7XG4gICAgICAgICAgICBcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBBc3NpZ25SZWFkV3JpdGVBY2Nlc3NUb1RhYmxlKHNjb3BlOiBDb25zdHJ1Y3QsIHRhYmxlUmVmOiBUc2dEeW5hbW9UYWJsZVJlZiwgbGFtYmRhczogTm9kZWpzRnVuY3Rpb25bXSkge1xuICAgICAgICBsZXQgdGFibGU6IElUYWJsZSA9IFRhYmxlLmZyb21UYWJsZU5hbWUoc2NvcGUsIHRhYmxlUmVmLnRhYmxlTmFtZSwgdGFibGVSZWYudGFibGVOYW1lKTtcblxuICAgICAgICBsYW1iZGFzLmZvckVhY2goKGxhbWJkYTogTm9kZWpzRnVuY3Rpb24pID0+IHtcbiAgICAgICAgICAgIHRhYmxlLmdyYW50UmVhZFdyaXRlRGF0YShsYW1iZGEpXG4gICAgICAgICAgICBcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBBZGRSb3V0ZXMocHJvcHM6IE1pY3Jvc2VydmljZVByb3BzLCBcbiAgICAgICAgZ2F0ZXdheTogSVJlc3RBcGksIFxuICAgICAgICBsYW1iZGFzOiBOb2RlanNGdW5jdGlvbltdLCBcbiAgICAgICAgYXV0aG9yaXplcj86IFRva2VuQXV0aG9yaXplcikge1xuXG4gICAgICAgIHRoaXMuYXBwQ29uZmlnLmxhbWJkYUNvbmZpZ3M/LmZvckVhY2goKHByb3A6IFRzZ0xhbWJkYVByb3ApID0+IHtcblxuICAgICAgICAgICAgY29uc3QgbGFtYmRhSWQgPSBDcmVhdGVMYW1iZGEuZ2V0SWRGb3JMYW1iZGEocHJvcCk7XG4gICAgICAgICAgICBjb25zdCBsYW1iZGFOb2RlID0gbGFtYmRhcy5maW5kKHggPT4geC5ub2RlLmlkID09PSBsYW1iZGFJZCk7XG5cbiAgICAgICAgICAgIGlmICghbGFtYmRhTm9kZSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkNhbid0IGZpbmQgdGhlIExhbWJkYSBJbnRlZ3JhdGlvblwiKTsgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIFJvdXRlcy5jcmVhdGVSZXNvdXJjZShwcm9wLCBnYXRld2F5LCBsYW1iZGFOb2RlLCBhdXRob3JpemVyKTtcbiAgICAgICAgXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgQXNzaWduQWNjZXNzVG9TZWNyZXRNYW5hZ2VyKHNlY3JldDogSVNlY3JldCwgbGFtYmRhczogTm9kZWpzRnVuY3Rpb25bXSkge1xuXG4gICAgICAgIGxhbWJkYXMuZm9yRWFjaCgobGFtYmRhKSA9PiB7XG4gICAgICAgICAgICBjb25zdCByZXN1bHQgPSBzZWNyZXQuZ3JhbnRSZWFkKGxhbWJkYSk7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygnQXNzaWduaW5nIEFjY2VzcyB0byBTZWNyZXQgTWFuYWdlcjogJyxyZXN1bHQpO1xuICAgICAgICB9KTtcbiAgICAgICAgXG4gICAgfVxuXG59Il19
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { TokenAuthorizer } from "aws-cdk-lib/aws-apigateway";
|
|
2
|
+
import { Construct } from "constructs";
|
|
3
|
+
import { AppConfig } from "../../config/AppConfig";
|
|
4
|
+
import { TsgLambdaProp } from "../../config/types";
|
|
5
|
+
import { BaseResource } from "../base/baseResource";
|
|
6
|
+
export declare class CreateAuthorizer extends BaseResource<TokenAuthorizer> {
|
|
7
|
+
protected authProps: TsgLambdaProp;
|
|
8
|
+
get JwtAuthorizer(): TokenAuthorizer;
|
|
9
|
+
constructor(scope: Construct, props: AppConfig, authProps: TsgLambdaProp);
|
|
10
|
+
protected createResource(scope: Construct): TokenAuthorizer[] | null;
|
|
11
|
+
private createLambdaAuthorizer;
|
|
12
|
+
protected createOutput<T>(scope: Construct, createdAssets: T[]): void;
|
|
13
|
+
private createLambdaFunctionProps;
|
|
14
|
+
private assignManagedPolicies;
|
|
15
|
+
}
|
|
@@ -0,0 +1,80 @@
|
|
|
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);
|
|
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 lambdaAuthorizer = new aws_apigateway_1.TokenAuthorizer(scope, `${lambdaConfig.name}-authorizer`, {
|
|
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
|
+
return lambdaAuthorizer;
|
|
42
|
+
}
|
|
43
|
+
createOutput(scope, createdAssets) {
|
|
44
|
+
const entity = createdAssets[0];
|
|
45
|
+
// new CfnOutput(scope, `authorizer`, {
|
|
46
|
+
// value: (entity as TokenAuthorizer).authorizerArn
|
|
47
|
+
// });
|
|
48
|
+
}
|
|
49
|
+
createLambdaFunctionProps(prop) {
|
|
50
|
+
const lambdaProp = {
|
|
51
|
+
entry: path.join(prop.codePath),
|
|
52
|
+
functionName: prop.name,
|
|
53
|
+
handler: prop.handler,
|
|
54
|
+
runtime: prop.runtime || this.config.GLOBALS.stackRuntime,
|
|
55
|
+
timeout: prop.duration || aws_cdk_lib_1.Duration.minutes(2),
|
|
56
|
+
memorySize: prop.memory || 512,
|
|
57
|
+
environment: {
|
|
58
|
+
"VERBOSE_LOGGING": "true",
|
|
59
|
+
...prop.environment
|
|
60
|
+
},
|
|
61
|
+
bundling: {
|
|
62
|
+
minify: false,
|
|
63
|
+
target: 'es2020',
|
|
64
|
+
sourceMap: true,
|
|
65
|
+
sourceMapMode: aws_lambda_nodejs_1.SourceMapMode.INLINE,
|
|
66
|
+
environment: prop.environment || prop.environment,
|
|
67
|
+
},
|
|
68
|
+
};
|
|
69
|
+
return lambdaProp;
|
|
70
|
+
}
|
|
71
|
+
;
|
|
72
|
+
assignManagedPolicies(lambda, managedPolicyNames) {
|
|
73
|
+
managedPolicyNames.forEach((managedPolicyName) => {
|
|
74
|
+
let policy = aws_iam_1.ManagedPolicy.fromAwsManagedPolicyName(managedPolicyName);
|
|
75
|
+
lambda.role?.addManagedPolicy(policy);
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
exports.CreateAuthorizer = CreateAuthorizer;
|
|
80
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlQXV0aG9yaXplci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9yZXNvdXJjZXMvaGVscGVycy9jcmVhdGVBdXRob3JpemVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZDQUFrRDtBQUNsRCwrREFBNkU7QUFDN0UsaURBQXNFO0FBQ3RFLHFFQUFtRztBQUVuRyw2QkFBNkI7QUFLN0IsdURBQW9EO0FBQ3BELHlEQUFzRDtBQUV0RCxNQUFhLGdCQUFpQixTQUFRLDJCQUE2QjtJQUUvRCxJQUFJLGFBQWE7UUFDYixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRUQsWUFBWSxLQUFnQixFQUFFLEtBQWdCLEVBQVksU0FBd0I7UUFFOUUsS0FBSyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztRQUZrQyxjQUFTLEdBQVQsU0FBUyxDQUFlO1FBSTlFLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBRSxDQUFDO1FBRXBELElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFO1lBQ3ZCLElBQUksQ0FBQyxZQUFZLENBQWtCLEtBQUssRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztTQUNwRTtJQUVMLENBQUM7SUFFUyxjQUFjLENBQUMsS0FBZ0I7UUFDckMsT0FBTyxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7SUFDaEUsQ0FBQztJQUVPLHNCQUFzQixDQUFDLEtBQWdCLEVBQUUsWUFBMkI7UUFDeEUsOENBQThDO1FBRTlDLE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxZQUFhLENBQUMsQ0FBQztRQUV0RSxNQUFNLFFBQVEsR0FBRywyQkFBWSxDQUFDLGNBQWMsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUMzRCxNQUFNLE1BQU0sR0FBRyxJQUFJLGtDQUFjLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxlQUFlLENBQUMsQ0FBQztRQUVwRSxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUksMEJBQWdCLENBQUMsMEJBQTBCLENBQUMsQ0FBQyxDQUFDO1FBRXJFLElBQUksWUFBWSxFQUFFLGVBQWUsSUFBSSxZQUFZLENBQUMsZUFBZSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDMUUsSUFBSSxDQUFDLHFCQUFxQixDQUFDLE1BQU0sRUFBRSxZQUFZLENBQUMsZUFBZSxDQUFDLENBQUM7U0FDcEU7UUFFRCxNQUFNLGdCQUFnQixHQUFHLElBQUksZ0NBQWUsQ0FBQyxLQUFLLEVBQUUsR0FBRyxZQUFZLENBQUMsSUFBSSxhQUFhLEVBQUU7WUFDbkYsT0FBTyxFQUFFLE1BQU07WUFDZixjQUFjLEVBQUUsWUFBWSxDQUFDLElBQUk7WUFDakMsZUFBZSxFQUFFLHNCQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztZQUNwQyxjQUFjLEVBQUUsK0JBQWMsQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDO1NBRXpELENBQUMsQ0FBQztRQUVILE9BQU8sZ0JBQWdCLENBQUM7SUFDNUIsQ0FBQztJQUVTLFlBQVksQ0FBSSxLQUFnQixFQUFFLGFBQWtCO1FBRTFELE1BQU0sTUFBTSxHQUFHLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUVoQyx1Q0FBdUM7UUFDdkMsdURBQXVEO1FBQ3ZELE1BQU07SUFFVixDQUFDO0lBRU8seUJBQXlCLENBQUMsSUFBbUI7UUFFakQsTUFBTSxVQUFVLEdBQXdCO1lBQ3BDLEtBQUssRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7WUFDL0IsWUFBWSxFQUFFLElBQUksQ0FBQyxJQUFJO1lBQ3ZCLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTztZQUNyQixPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxZQUFZO1lBQ3pELE9BQU8sRUFBRSxJQUFJLENBQUMsUUFBUSxJQUFJLHNCQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztZQUM3QyxVQUFVLEVBQUUsSUFBSSxDQUFDLE1BQU0sSUFBSSxHQUFHO1lBQzlCLFdBQVcsRUFBRTtnQkFDVCxpQkFBaUIsRUFBRSxNQUFNO2dCQUN6QixHQUFHLElBQUksQ0FBQyxXQUFXO2FBQ3RCO1lBQ0QsUUFBUSxFQUFFO2dCQUNOLE1BQU0sRUFBRSxLQUFLO2dCQUNiLE1BQU0sRUFBRSxRQUFRO2dCQUNoQixTQUFTLEVBQUUsSUFBSTtnQkFDZixhQUFhLEVBQUUsaUNBQWEsQ0FBQyxNQUFNO2dCQUNuQyxXQUFXLEVBQUUsSUFBSSxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsV0FBVzthQUNwRDtTQUNKLENBQUE7UUFDRCxPQUFPLFVBQVUsQ0FBQztJQUN0QixDQUFDO0lBQUEsQ0FBQztJQUVNLHFCQUFxQixDQUFDLE1BQXNCLEVBQUUsa0JBQTRCO1FBRTlFLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxDQUFDLGlCQUF5QixFQUFFLEVBQUU7WUFFckQsSUFBSSxNQUFNLEdBQUcsdUJBQWEsQ0FBQyx3QkFBd0IsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1lBRXZFLE1BQU0sQ0FBQyxJQUFJLEVBQUUsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDMUMsQ0FBQyxDQUFDLENBQUM7SUFFUCxDQUFDO0NBRUo7QUE1RkQsNENBNEZDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2ZuT3V0cHV0LCBEdXJhdGlvbiB9IGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuaW1wb3J0IHsgSWRlbnRpdHlTb3VyY2UsIFRva2VuQXV0aG9yaXplciB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtYXBpZ2F0ZXdheVwiO1xuaW1wb3J0IHsgTWFuYWdlZFBvbGljeSwgU2VydmljZVByaW5jaXBhbCB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtaWFtXCI7XG5pbXBvcnQgeyBOb2RlanNGdW5jdGlvbiwgTm9kZWpzRnVuY3Rpb25Qcm9wcywgU291cmNlTWFwTW9kZSB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtbGFtYmRhLW5vZGVqc1wiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgeyBBcHBDb25maWcgfSBmcm9tIFwiLi4vLi4vY29uZmlnL0FwcENvbmZpZ1wiO1xuXG5pbXBvcnQgeyBUc2dMYW1iZGFQcm9wIH0gZnJvbSBcIi4uLy4uL2NvbmZpZy90eXBlc1wiO1xuaW1wb3J0IHsgTWljcm9zZXJ2aWNlUHJvcHMgfSBmcm9tIFwiLi4vLi4vaW50ZXJmYWNlcy9NaWNyb3NlcnZpY2VQcm9wc1wiO1xuaW1wb3J0IHsgQmFzZVJlc291cmNlIH0gZnJvbSBcIi4uL2Jhc2UvYmFzZVJlc291cmNlXCI7XG5pbXBvcnQgeyBDcmVhdGVMYW1iZGEgfSBmcm9tIFwiLi4vbGFtYmRhL2NyZWF0ZUxhbWJkYVwiO1xuXG5leHBvcnQgY2xhc3MgQ3JlYXRlQXV0aG9yaXplciBleHRlbmRzIEJhc2VSZXNvdXJjZTxUb2tlbkF1dGhvcml6ZXI+IHtcblxuICAgIGdldCBKd3RBdXRob3JpemVyKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVkUmVzb3VyY2VzWzBdO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIHByb3BzOiBBcHBDb25maWcsIHByb3RlY3RlZCBhdXRoUHJvcHM6IFRzZ0xhbWJkYVByb3ApIHtcblxuICAgICAgICBzdXBlcihzY29wZSwgcHJvcHMpO1xuXG4gICAgICAgIHRoaXMuY3JlYXRlZFJlc291cmNlcyA9IHRoaXMuY3JlYXRlUmVzb3VyY2Uoc2NvcGUpITtcblxuICAgICAgICBpZiAodGhpcy5jcmVhdGVkUmVzb3VyY2VzKSB7XG4gICAgICAgICAgICB0aGlzLmNyZWF0ZU91dHB1dDxUb2tlbkF1dGhvcml6ZXI+KHNjb3BlLCB0aGlzLmNyZWF0ZWRSZXNvdXJjZXMpO1xuICAgICAgICB9XG5cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgY3JlYXRlUmVzb3VyY2Uoc2NvcGU6IENvbnN0cnVjdCk6IFRva2VuQXV0aG9yaXplcltdIHwgbnVsbCB7XG4gICAgICAgIHJldHVybiBbdGhpcy5jcmVhdGVMYW1iZGFBdXRob3JpemVyKHNjb3BlLCB0aGlzLmF1dGhQcm9wcyldO1xuICAgIH1cblxuICAgIHByaXZhdGUgY3JlYXRlTGFtYmRhQXV0aG9yaXplcihzY29wZTogQ29uc3RydWN0LCBsYW1iZGFDb25maWc6IFRzZ0xhbWJkYVByb3ApIHtcbiAgICAgICAgLy9jb25zb2xlLmxvZyhcIkVOVEVSIGNyZWF0ZUxhbWJkYUF1dGhvcml6ZXJcIik7XG5cbiAgICAgICAgY29uc3QgYXV0aG9yaXplclByb3BzID0gdGhpcy5jcmVhdGVMYW1iZGFGdW5jdGlvblByb3BzKGxhbWJkYUNvbmZpZyEpO1xuXG4gICAgICAgIGNvbnN0IGxhbWJkYUlkID0gQ3JlYXRlTGFtYmRhLmdldElkRm9yTGFtYmRhKGxhbWJkYUNvbmZpZyk7XG4gICAgICAgIGNvbnN0IGxhbWJkYSA9IG5ldyBOb2RlanNGdW5jdGlvbihzY29wZSwgbGFtYmRhSWQsIGF1dGhvcml6ZXJQcm9wcyk7XG5cbiAgICAgICAgbGFtYmRhLmdyYW50SW52b2tlKG5ldyBTZXJ2aWNlUHJpbmNpcGFsKCdhcGlnYXRld2F5LmFtYXpvbmF3cy5jb20nKSk7XG5cbiAgICAgICAgaWYgKGxhbWJkYUNvbmZpZz8ubWFuYWdlZFBvbGljaWVzICYmIGxhbWJkYUNvbmZpZy5tYW5hZ2VkUG9saWNpZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdGhpcy5hc3NpZ25NYW5hZ2VkUG9saWNpZXMobGFtYmRhLCBsYW1iZGFDb25maWcubWFuYWdlZFBvbGljaWVzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGxhbWJkYUF1dGhvcml6ZXIgPSBuZXcgVG9rZW5BdXRob3JpemVyKHNjb3BlLCBgJHtsYW1iZGFDb25maWcubmFtZX0tYXV0aG9yaXplcmAsIHtcbiAgICAgICAgICAgIGhhbmRsZXI6IGxhbWJkYSxcbiAgICAgICAgICAgIGF1dGhvcml6ZXJOYW1lOiBsYW1iZGFDb25maWcubmFtZSxcbiAgICAgICAgICAgIHJlc3VsdHNDYWNoZVR0bDogRHVyYXRpb24uc2Vjb25kcygwKSwgXG4gICAgICAgICAgICBpZGVudGl0eVNvdXJjZTogSWRlbnRpdHlTb3VyY2UuaGVhZGVyKCdBdXRob3JpemF0aW9uJyksXG4gICAgICAgICAgICBcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIGxhbWJkYUF1dGhvcml6ZXI7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGNyZWF0ZU91dHB1dDxUPihzY29wZTogQ29uc3RydWN0LCBjcmVhdGVkQXNzZXRzOiBUW10pOiB2b2lkIHtcblxuICAgICAgICBjb25zdCBlbnRpdHkgPSBjcmVhdGVkQXNzZXRzWzBdO1xuXG4gICAgICAgIC8vIG5ldyBDZm5PdXRwdXQoc2NvcGUsIGBhdXRob3JpemVyYCwge1xuICAgICAgICAvLyAgICAgdmFsdWU6IChlbnRpdHkgYXMgVG9rZW5BdXRob3JpemVyKS5hdXRob3JpemVyQXJuXG4gICAgICAgIC8vIH0pO1xuXG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjcmVhdGVMYW1iZGFGdW5jdGlvblByb3BzKHByb3A6IFRzZ0xhbWJkYVByb3ApIHsgICAgICAgXG5cbiAgICAgICAgY29uc3QgbGFtYmRhUHJvcDogTm9kZWpzRnVuY3Rpb25Qcm9wcyA9IHtcbiAgICAgICAgICAgIGVudHJ5OiBwYXRoLmpvaW4ocHJvcC5jb2RlUGF0aCksXG4gICAgICAgICAgICBmdW5jdGlvbk5hbWU6IHByb3AubmFtZSxcbiAgICAgICAgICAgIGhhbmRsZXI6IHByb3AuaGFuZGxlcixcbiAgICAgICAgICAgIHJ1bnRpbWU6IHByb3AucnVudGltZSB8fCB0aGlzLmNvbmZpZy5HTE9CQUxTLnN0YWNrUnVudGltZSxcbiAgICAgICAgICAgIHRpbWVvdXQ6IHByb3AuZHVyYXRpb24gfHwgRHVyYXRpb24ubWludXRlcygyKSxcbiAgICAgICAgICAgIG1lbW9yeVNpemU6IHByb3AubWVtb3J5IHx8IDUxMixcbiAgICAgICAgICAgIGVudmlyb25tZW50OiB7XG4gICAgICAgICAgICAgICAgXCJWRVJCT1NFX0xPR0dJTkdcIjogXCJ0cnVlXCIsICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIC4uLnByb3AuZW52aXJvbm1lbnRcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBidW5kbGluZzoge1xuICAgICAgICAgICAgICAgIG1pbmlmeTogZmFsc2UsXG4gICAgICAgICAgICAgICAgdGFyZ2V0OiAnZXMyMDIwJyxcbiAgICAgICAgICAgICAgICBzb3VyY2VNYXA6IHRydWUsXG4gICAgICAgICAgICAgICAgc291cmNlTWFwTW9kZTogU291cmNlTWFwTW9kZS5JTkxJTkUsXG4gICAgICAgICAgICAgICAgZW52aXJvbm1lbnQ6IHByb3AuZW52aXJvbm1lbnQgfHwgcHJvcC5lbnZpcm9ubWVudCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGxhbWJkYVByb3A7XG4gICAgfTtcblxuICAgIHByaXZhdGUgYXNzaWduTWFuYWdlZFBvbGljaWVzKGxhbWJkYTogTm9kZWpzRnVuY3Rpb24sIG1hbmFnZWRQb2xpY3lOYW1lczogc3RyaW5nW10pIHtcblxuICAgICAgICBtYW5hZ2VkUG9saWN5TmFtZXMuZm9yRWFjaCgobWFuYWdlZFBvbGljeU5hbWU6IHN0cmluZykgPT4ge1xuXG4gICAgICAgICAgICBsZXQgcG9saWN5ID0gTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUobWFuYWdlZFBvbGljeU5hbWUpO1xuXG4gICAgICAgICAgICBsYW1iZGEucm9sZT8uYWRkTWFuYWdlZFBvbGljeShwb2xpY3kpO1xuICAgICAgICB9KTtcblxuICAgIH1cblxufSJdfQ==
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createCommonLayer = void 0;
|
|
4
|
+
const createLambdaLayer_1 = require("../lambda-layer/createLambdaLayer");
|
|
5
|
+
const createCommonLayer = (scope, appProps) => {
|
|
6
|
+
const prop = {
|
|
7
|
+
description: 'Common Lambda layer',
|
|
8
|
+
codePath: './node_modules/@davissylvester/bishop-cdk-constructs/dist',
|
|
9
|
+
name: 'bishop-common-layer'
|
|
10
|
+
};
|
|
11
|
+
const layer = (0, createLambdaLayer_1.createLambdaLayer)(scope, appProps, prop);
|
|
12
|
+
return layer;
|
|
13
|
+
};
|
|
14
|
+
exports.createCommonLayer = createCommonLayer;
|
|
15
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlQ29tbW9uTGF5ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcmVzb3VyY2VzL2hlbHBlcnMvY3JlYXRlQ29tbW9uTGF5ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EseUVBQXNFO0FBSS9ELE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxLQUFnQixFQUFFLFFBQW1CLEVBQUUsRUFBRTtJQUV2RSxNQUFNLElBQUksR0FBdUI7UUFDN0IsV0FBVyxFQUFFLHFCQUFxQjtRQUNsQyxRQUFRLEVBQUUsMkRBQTJEO1FBQ3JFLElBQUksRUFBRSxxQkFBcUI7S0FDOUIsQ0FBQztJQUVGLE1BQU0sS0FBSyxHQUFHLElBQUEscUNBQWlCLEVBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQTtJQUV0RCxPQUFPLEtBQUssQ0FBQztBQUNqQixDQUFDLENBQUM7QUFYVyxRQUFBLGlCQUFpQixxQkFXNUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHsgY3JlYXRlTGFtYmRhTGF5ZXIgfSBmcm9tIFwiLi4vbGFtYmRhLWxheWVyL2NyZWF0ZUxhbWJkYUxheWVyXCI7XG5pbXBvcnQgeyBUc2dMYW1iZGFMYXllclByb3AgfSBmcm9tIFwiLi4vLi4vY29uZmlnL3R5cGVzL1RzZ0xhbWJkYUxheWVyUHJvcFwiO1xuaW1wb3J0IHsgQXBwQ29uZmlnIH0gZnJvbSBcIi4uLy4uL2NvbmZpZy9BcHBDb25maWdcIjtcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZUNvbW1vbkxheWVyID0gKHNjb3BlOiBDb25zdHJ1Y3QsIGFwcFByb3BzOiBBcHBDb25maWcpID0+IHtcblxuICAgIGNvbnN0IHByb3A6IFRzZ0xhbWJkYUxheWVyUHJvcCA9IHtcbiAgICAgICAgZGVzY3JpcHRpb246ICdDb21tb24gTGFtYmRhIGxheWVyJyxcbiAgICAgICAgY29kZVBhdGg6ICcuL25vZGVfbW9kdWxlcy9AZGF2aXNzeWx2ZXN0ZXIvYmlzaG9wLWNkay1jb25zdHJ1Y3RzL2Rpc3QnLFxuICAgICAgICBuYW1lOiAnYmlzaG9wLWNvbW1vbi1sYXllcidcbiAgICB9OyAgXG4gICAgXG4gICAgY29uc3QgbGF5ZXIgPSBjcmVhdGVMYW1iZGFMYXllcihzY29wZSwgYXBwUHJvcHMsIHByb3ApXG4gICAgXG4gICAgcmV0dXJuIGxheWVyO1xufTtcblxuIl19
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { IRestApi, Resource, TokenAuthorizer } from "aws-cdk-lib/aws-apigateway";
|
|
2
|
+
import { NodejsFunction } from "aws-cdk-lib/aws-lambda-nodejs";
|
|
3
|
+
import { TsgLambdaProp } from "../../config/types";
|
|
4
|
+
export declare class Routes {
|
|
5
|
+
static Resources: Resource[];
|
|
6
|
+
private static routeMap;
|
|
7
|
+
static createResource(prop: TsgLambdaProp, api: IRestApi, lambdaNode: NodejsFunction, authorizer?: TokenAuthorizer): void;
|
|
8
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Routes = void 0;
|
|
4
|
+
const aws_apigateway_1 = require("aws-cdk-lib/aws-apigateway");
|
|
5
|
+
class Routes {
|
|
6
|
+
static createResource(prop, api, lambdaNode, authorizer) {
|
|
7
|
+
const routeMap = new Map();
|
|
8
|
+
// Only attach lambda to an Api Gateway if a route exist
|
|
9
|
+
if (prop.apiGateway?.route) {
|
|
10
|
+
// Note: this now uses the bundle version as the first segment in the path.
|
|
11
|
+
let activeRoutePath = `/${(prop.apiGateway.version) ? prop.apiGateway.version : 1}`;
|
|
12
|
+
let activeResource = Routes.routeMap.get(activeRoutePath) || api.root.addResource(activeRoutePath);
|
|
13
|
+
Routes.routeMap.set(activeRoutePath, activeResource);
|
|
14
|
+
// Now we go through our route segments creating the rest of the path.
|
|
15
|
+
const pathSegments = prop.apiGateway?.route.split("/").filter(x => (x));
|
|
16
|
+
for (let i = 0; i < pathSegments.length; i++) {
|
|
17
|
+
activeRoutePath = `${activeRoutePath}/${pathSegments[i]}`;
|
|
18
|
+
let secondaryResource = Routes.routeMap.get(activeRoutePath) || activeResource.addResource(pathSegments[i]);
|
|
19
|
+
Routes.routeMap.set(activeRoutePath, secondaryResource);
|
|
20
|
+
activeResource = secondaryResource;
|
|
21
|
+
}
|
|
22
|
+
// Finally, we attach our function to the last resource
|
|
23
|
+
activeResource.addMethod(prop.apiGateway.method || 'GET', new aws_apigateway_1.LambdaIntegration(lambdaNode, { proxy: true, }), prop.apiGateway.secure ? { authorizer } : undefined);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
Routes.Resources = [];
|
|
28
|
+
Routes.routeMap = new Map();
|
|
29
|
+
exports.Routes = Routes;
|
|
30
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlUm91dGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3Jlc291cmNlcy9oZWxwZXJzL2NyZWF0ZVJvdXRlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwrREFBb0c7QUFLcEcsTUFBYSxNQUFNO0lBS1IsTUFBTSxDQUFDLGNBQWMsQ0FDeEIsSUFBbUIsRUFDbkIsR0FBYSxFQUNiLFVBQTBCLEVBQzFCLFVBQTRCO1FBRTVCLE1BQU0sUUFBUSxHQUEwQixJQUFJLEdBQUcsRUFBRSxDQUFDO1FBRWxELHlEQUF5RDtRQUN6RCxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsS0FBSyxFQUFFO1lBRTVCLDZFQUE2RTtZQUM3RSxJQUFJLGVBQWUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUUsRUFBRSxDQUFDO1lBQ3JGLElBQUksY0FBYyxHQUFhLE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxJQUFLLEdBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1lBQzlHLE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLGVBQWUsRUFBRSxjQUFjLENBQUMsQ0FBQztZQUVyRCx1RUFBdUU7WUFDdkUsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN4RSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsWUFBWSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtnQkFDMUMsZUFBZSxHQUFHLEdBQUcsZUFBZSxJQUFJLFlBQVksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO2dCQUMxRCxJQUFJLGlCQUFpQixHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxJQUFJLGNBQWUsQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQzdHLE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLGVBQWUsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO2dCQUN4RCxjQUFjLEdBQUcsaUJBQWlCLENBQUM7YUFDdEM7WUFFRCx3REFBd0Q7WUFDeEQsY0FBYyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sSUFBSSxLQUFLLEVBQ3BELElBQUksa0NBQWlCLENBQUMsVUFBVSxFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksR0FBRyxDQUFDLEVBQ25ELElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQztTQUM1RDtJQUNMLENBQUM7O0FBakNpQixnQkFBUyxHQUFlLEVBQUUsQ0FBQztBQUMxQixlQUFRLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQztBQUgzQix3QkFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElSZXN0QXBpLCBMYW1iZGFJbnRlZ3JhdGlvbiwgUmVzb3VyY2UsIFRva2VuQXV0aG9yaXplciB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtYXBpZ2F0ZXdheVwiO1xuaW1wb3J0IHsgTm9kZWpzRnVuY3Rpb24gfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWxhbWJkYS1ub2RlanNcIjtcbmltcG9ydCB7IFRzZ0xhbWJkYVByb3AgfSBmcm9tIFwiLi4vLi4vY29uZmlnL3R5cGVzXCI7XG5cblxuZXhwb3J0IGNsYXNzIFJvdXRlcyB7XG5cbiAgICBwdWJsaWMgc3RhdGljIFJlc291cmNlczogUmVzb3VyY2VbXSA9IFtdOyAgXG4gICAgcHJpdmF0ZSBzdGF0aWMgcm91dGVNYXAgPSBuZXcgTWFwKCk7ICAgICAgIFxuXG4gICAgcHVibGljIHN0YXRpYyBjcmVhdGVSZXNvdXJjZSggICAgICAgIFxuICAgICAgICBwcm9wOiBUc2dMYW1iZGFQcm9wLCBcbiAgICAgICAgYXBpOiBJUmVzdEFwaSwgXG4gICAgICAgIGxhbWJkYU5vZGU6IE5vZGVqc0Z1bmN0aW9uLCBcbiAgICAgICAgYXV0aG9yaXplcj86IFRva2VuQXV0aG9yaXplcikge1xuXG4gICAgICAgIGNvbnN0IHJvdXRlTWFwOiBNYXA8c3RyaW5nLCBSZXNvdXJjZT4gPSBuZXcgTWFwKCk7XG5cbiAgICAgICAgLy8gIE9ubHkgYXR0YWNoIGxhbWJkYSB0byBhbiBBcGkgR2F0ZXdheSBpZiBhIHJvdXRlIGV4aXN0XG4gICAgICAgIGlmIChwcm9wLmFwaUdhdGV3YXk/LnJvdXRlKSB7XG5cbiAgICAgICAgLy8gIE5vdGU6ICB0aGlzIG5vdyB1c2VzIHRoZSBidW5kbGUgdmVyc2lvbiBhcyB0aGUgZmlyc3Qgc2VnbWVudCBpbiB0aGUgcGF0aC5cbiAgICAgICAgbGV0IGFjdGl2ZVJvdXRlUGF0aCA9IGAvJHsocHJvcC5hcGlHYXRld2F5LnZlcnNpb24pID8gcHJvcC5hcGlHYXRld2F5LnZlcnNpb24gOiAxIH1gO1xuICAgICAgICBsZXQgYWN0aXZlUmVzb3VyY2U6IFJlc291cmNlID0gUm91dGVzLnJvdXRlTWFwLmdldChhY3RpdmVSb3V0ZVBhdGgpIHx8ICBhcGkucm9vdC5hZGRSZXNvdXJjZShhY3RpdmVSb3V0ZVBhdGgpO1xuICAgICAgICBSb3V0ZXMucm91dGVNYXAuc2V0KGFjdGl2ZVJvdXRlUGF0aCwgYWN0aXZlUmVzb3VyY2UpO1xuXG4gICAgICAgIC8vICBOb3cgd2UgZ28gdGhyb3VnaCBvdXIgcm91dGUgc2VnbWVudHMgY3JlYXRpbmcgdGhlIHJlc3Qgb2YgdGhlIHBhdGguXG4gICAgICAgIGNvbnN0IHBhdGhTZWdtZW50cyA9IHByb3AuYXBpR2F0ZXdheT8ucm91dGUuc3BsaXQoXCIvXCIpLmZpbHRlcih4ID0+ICh4KSk7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcGF0aFNlZ21lbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBhY3RpdmVSb3V0ZVBhdGggPSBgJHthY3RpdmVSb3V0ZVBhdGh9LyR7cGF0aFNlZ21lbnRzW2ldfWA7XG4gICAgICAgICAgICBsZXQgc2Vjb25kYXJ5UmVzb3VyY2UgPSBSb3V0ZXMucm91dGVNYXAuZ2V0KGFjdGl2ZVJvdXRlUGF0aCkgfHwgYWN0aXZlUmVzb3VyY2UhLmFkZFJlc291cmNlKHBhdGhTZWdtZW50c1tpXSk7ICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgUm91dGVzLnJvdXRlTWFwLnNldChhY3RpdmVSb3V0ZVBhdGgsIHNlY29uZGFyeVJlc291cmNlKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICBhY3RpdmVSZXNvdXJjZSA9IHNlY29uZGFyeVJlc291cmNlOyAgICAgICAgICAgICAgICBcbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgLy8gIEZpbmFsbHksIHdlIGF0dGFjaCBvdXIgZnVuY3Rpb24gdG8gdGhlIGxhc3QgcmVzb3VyY2VcbiAgICAgICAgYWN0aXZlUmVzb3VyY2UuYWRkTWV0aG9kKHByb3AuYXBpR2F0ZXdheS5tZXRob2QgfHwgJ0dFVCcsXG4gICAgICAgICAgICBuZXcgTGFtYmRhSW50ZWdyYXRpb24obGFtYmRhTm9kZSwgeyBwcm94eTogdHJ1ZSwgfSksIFxuICAgICAgICAgICAgcHJvcC5hcGlHYXRld2F5LnNlY3VyZSA/IHsgYXV0aG9yaXplciB9IDogdW5kZWZpbmVkKTsgICAgXG4gICAgfVxufVxuXG59Il19
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { NodejsFunction } from "aws-cdk-lib/aws-lambda-nodejs";
|
|
2
|
+
import { Construct } from "constructs";
|
|
3
|
+
import { AppConfig } from "../../config/AppConfig";
|
|
4
|
+
import { TsgLambdaProp } from "../../config/types";
|
|
5
|
+
import { TsgLambdaProps } from "../../config/types/TsgLambdaProps";
|
|
6
|
+
import { BaseResource } from "../base/baseResource";
|
|
7
|
+
export declare class CreateLambda extends BaseResource<NodejsFunction> {
|
|
8
|
+
private props;
|
|
9
|
+
Lambdas: NodejsFunction[];
|
|
10
|
+
constructor(props: TsgLambdaProps, config: AppConfig);
|
|
11
|
+
protected createResource(scope: Construct): NodejsFunction[];
|
|
12
|
+
protected createOutput<T>(scope: Construct, createdAssets: T[]): void;
|
|
13
|
+
private createLambdas;
|
|
14
|
+
private createLambdaFunctions;
|
|
15
|
+
private createLambdaProps;
|
|
16
|
+
private createLambdaFunctionProps;
|
|
17
|
+
private assignManagedPolicies;
|
|
18
|
+
private createAlarmsForLambdas;
|
|
19
|
+
static getIdForLambda(lambdaProp: TsgLambdaProp): string;
|
|
20
|
+
}
|