@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.
Files changed (175) hide show
  1. package/.github/workflows/publish.yml +36 -0
  2. package/dist/config/AppConfig.d.ts +24 -0
  3. package/dist/config/AppConfig.js +62 -0
  4. package/dist/config/Constants.d.ts +26 -0
  5. package/dist/config/Constants.js +30 -0
  6. package/dist/config/Environments.d.ts +2 -0
  7. package/dist/config/Environments.js +3 -0
  8. package/dist/config/MicroserviceAppConfig.d.ts +5 -0
  9. package/dist/config/MicroserviceAppConfig.js +11 -0
  10. package/dist/config/bishopConfig.d.ts +2 -0
  11. package/dist/config/bishopConfig.js +81 -0
  12. package/dist/config/customConfigs/ApiAppConfig.d.ts +5 -0
  13. package/dist/config/customConfigs/ApiAppConfig.js +4 -0
  14. package/dist/config/customConfigs/GlobalAppConfig.d.ts +8 -0
  15. package/dist/config/customConfigs/GlobalAppConfig.js +3 -0
  16. package/dist/config/customConfigs/IAppConfig.d.ts +10 -0
  17. package/dist/config/customConfigs/IAppConfig.js +3 -0
  18. package/dist/config/customConfigs/ResourceAppConfig.d.ts +8 -0
  19. package/dist/config/customConfigs/ResourceAppConfig.js +3 -0
  20. package/dist/config/microServiceConfig.d.ts +2 -0
  21. package/dist/config/microServiceConfig.js +82 -0
  22. package/dist/config/types/TsgCdkConfigType.d.ts +3 -0
  23. package/dist/config/types/TsgCdkConfigType.js +3 -0
  24. package/dist/config/types/TsgCognitoConfig.d.ts +5 -0
  25. package/dist/config/types/TsgCognitoConfig.js +3 -0
  26. package/dist/config/types/TsgDnsConfig.d.ts +9 -0
  27. package/dist/config/types/TsgDnsConfig.js +3 -0
  28. package/dist/config/types/TsgDynamoDbProp.d.ts +6 -0
  29. package/dist/config/types/TsgDynamoDbProp.js +3 -0
  30. package/dist/config/types/TsgDynamoIndex.d.ts +13 -0
  31. package/dist/config/types/TsgDynamoIndex.js +3 -0
  32. package/dist/config/types/TsgDynamoProp.d.ts +15 -0
  33. package/dist/config/types/TsgDynamoProp.js +3 -0
  34. package/dist/config/types/TsgDynamoTable.d.ts +4 -0
  35. package/dist/config/types/TsgDynamoTable.js +3 -0
  36. package/dist/config/types/TsgDynamoTableRef.d.ts +4 -0
  37. package/dist/config/types/TsgDynamoTableRef.js +3 -0
  38. package/dist/config/types/TsgLambda.d.ts +4 -0
  39. package/dist/config/types/TsgLambda.js +3 -0
  40. package/dist/config/types/TsgLambdaLayerProp.d.ts +5 -0
  41. package/dist/config/types/TsgLambdaLayerProp.js +3 -0
  42. package/dist/config/types/TsgLambdaMap.d.ts +3 -0
  43. package/dist/config/types/TsgLambdaMap.js +3 -0
  44. package/dist/config/types/TsgLambdaName.d.ts +1 -0
  45. package/dist/config/types/TsgLambdaName.js +3 -0
  46. package/dist/config/types/TsgLambdaNode.d.ts +3 -0
  47. package/dist/config/types/TsgLambdaNode.js +3 -0
  48. package/dist/config/types/TsgLambdaProp.d.ts +16 -0
  49. package/dist/config/types/TsgLambdaProp.js +3 -0
  50. package/dist/config/types/TsgLambdaProps.d.ts +16 -0
  51. package/dist/config/types/TsgLambdaProps.js +3 -0
  52. package/dist/config/types/TsgLambdaRoutable.d.ts +6 -0
  53. package/dist/config/types/TsgLambdaRoutable.js +3 -0
  54. package/dist/config/types/index.d.ts +8 -0
  55. package/dist/config/types/index.js +25 -0
  56. package/dist/constructs/MicroService.d.ts +12 -0
  57. package/dist/constructs/MicroService.js +47 -0
  58. package/dist/constructs/index.d.ts +1 -0
  59. package/dist/constructs/index.js +6 -0
  60. package/dist/index.d.ts +4 -0
  61. package/dist/index.js +8 -0
  62. package/dist/interfaces/CreateLambdaFunctionInput.d.ts +10 -0
  63. package/dist/interfaces/CreateLambdaFunctionInput.js +3 -0
  64. package/dist/interfaces/MicroserviceProps.d.ts +10 -0
  65. package/dist/interfaces/MicroserviceProps.js +3 -0
  66. package/dist/resources/base/baseResource.d.ts +10 -0
  67. package/dist/resources/base/baseResource.js +11 -0
  68. package/dist/resources/certificate/createCertificate.d.ts +9 -0
  69. package/dist/resources/certificate/createCertificate.js +29 -0
  70. package/dist/resources/cognito/createCognito.d.ts +7 -0
  71. package/dist/resources/cognito/createCognito.js +35 -0
  72. package/dist/resources/cognito/createCognitoProps.d.ts +2 -0
  73. package/dist/resources/cognito/createCognitoProps.js +47 -0
  74. package/dist/resources/dynamodb/CreateDynamo.d.ts +15 -0
  75. package/dist/resources/dynamodb/CreateDynamo.js +87 -0
  76. package/dist/resources/gateway/createApi.d.ts +19 -0
  77. package/dist/resources/gateway/createApi.js +104 -0
  78. package/dist/resources/gateway/createMicroServiceBundle.d.ts +25 -0
  79. package/dist/resources/gateway/createMicroServiceBundle.js +126 -0
  80. package/dist/resources/helpers/createAuthorizer.d.ts +15 -0
  81. package/dist/resources/helpers/createAuthorizer.js +80 -0
  82. package/dist/resources/helpers/createCommonLayer.d.ts +3 -0
  83. package/dist/resources/helpers/createCommonLayer.js +15 -0
  84. package/dist/resources/helpers/createRoutes.d.ts +8 -0
  85. package/dist/resources/helpers/createRoutes.js +30 -0
  86. package/dist/resources/lambda/createLambda.d.ts +20 -0
  87. package/dist/resources/lambda/createLambda.js +135 -0
  88. package/dist/resources/lambda-layer/createLambdaLayer.d.ts +5 -0
  89. package/dist/resources/lambda-layer/createLambdaLayer.js +31 -0
  90. package/dist/resources/layers/common/src/nodejs/api-response/index.d.ts +1 -0
  91. package/dist/resources/layers/common/src/nodejs/api-response/index.js +18 -0
  92. package/dist/resources/layers/common/src/nodejs/api-response/responses.d.ts +24 -0
  93. package/dist/resources/layers/common/src/nodejs/api-response/responses.js +43 -0
  94. package/dist/resources/layers/common/src/nodejs/index.d.ts +2 -0
  95. package/dist/resources/layers/common/src/nodejs/index.js +19 -0
  96. package/dist/resources/layers/common/src/nodejs/logger/IContext.d.ts +5 -0
  97. package/dist/resources/layers/common/src/nodejs/logger/IContext.js +3 -0
  98. package/dist/resources/layers/common/src/nodejs/logger/index.d.ts +2 -0
  99. package/dist/resources/layers/common/src/nodejs/logger/index.js +19 -0
  100. package/dist/resources/layers/common/src/nodejs/logger/logger.d.ts +2 -0
  101. package/dist/resources/layers/common/src/nodejs/logger/logger.js +12 -0
  102. package/dist/resources/resources/iam/policyDocuments/cognitoPolicy.d.ts +4 -0
  103. package/dist/resources/resources/iam/policyDocuments/cognitoPolicy.js +52 -0
  104. package/dist/resources/resources/iam/roles/createRole.d.ts +4 -0
  105. package/dist/resources/resources/iam/roles/createRole.js +22 -0
  106. package/dist/resources/route53/CreateZone.d.ts +0 -0
  107. package/dist/resources/route53/CreateZone.js +47 -0
  108. package/dist/resources/route53/create-zones.d.ts +0 -0
  109. package/dist/resources/route53/create-zones.js +30 -0
  110. package/dist/resources/securityManager/index.d.ts +4 -0
  111. package/dist/resources/securityManager/index.js +18 -0
  112. package/docs/lambda-config.md +1 -0
  113. package/package.json +48 -0
  114. package/readme.md +147 -0
  115. package/src/config/AppConfig.ts +93 -0
  116. package/src/config/Constants.ts +27 -0
  117. package/src/config/Environments.ts +2 -0
  118. package/src/config/MicroserviceAppConfig.ts +9 -0
  119. package/src/config/bishopConfig.ts +83 -0
  120. package/src/config/customConfigs/ApiAppConfig.ts +6 -0
  121. package/src/config/customConfigs/GlobalAppConfig.ts +11 -0
  122. package/src/config/customConfigs/IAppConfig.ts +13 -0
  123. package/src/config/customConfigs/ResourceAppConfig.ts +12 -0
  124. package/src/config/microServiceConfig.ts +85 -0
  125. package/src/config/types/TsgCdkConfigType.ts +3 -0
  126. package/src/config/types/TsgCognitoConfig.ts +6 -0
  127. package/src/config/types/TsgDnsConfig.ts +9 -0
  128. package/src/config/types/TsgDynamoDbProp.ts +7 -0
  129. package/src/config/types/TsgDynamoIndex.ts +16 -0
  130. package/src/config/types/TsgDynamoProp.ts +17 -0
  131. package/src/config/types/TsgDynamoTable.ts +5 -0
  132. package/src/config/types/TsgDynamoTableRef.ts +4 -0
  133. package/src/config/types/TsgLambda.ts +6 -0
  134. package/src/config/types/TsgLambdaLayerProp.ts +5 -0
  135. package/src/config/types/TsgLambdaMap.ts +4 -0
  136. package/src/config/types/TsgLambdaName.ts +4 -0
  137. package/src/config/types/TsgLambdaNode.ts +4 -0
  138. package/src/config/types/TsgLambdaProp.ts +16 -0
  139. package/src/config/types/TsgLambdaProps.ts +19 -0
  140. package/src/config/types/TsgLambdaRoutable.ts +6 -0
  141. package/src/config/types/index.ts +9 -0
  142. package/src/constructs/MicroService.ts +68 -0
  143. package/src/constructs/index.ts +1 -0
  144. package/src/index.ts +4 -0
  145. package/src/interfaces/CreateLambdaFunctionInput.ts +11 -0
  146. package/src/interfaces/MicroserviceProps.ts +11 -0
  147. package/src/resources/.gitkeep +0 -0
  148. package/src/resources/base/baseResource.ts +15 -0
  149. package/src/resources/certificate/createCertificate.ts +40 -0
  150. package/src/resources/cicd/.gitkeep +0 -0
  151. package/src/resources/cognito/.gitkeep +0 -0
  152. package/src/resources/cognito/createCognito.ts +47 -0
  153. package/src/resources/cognito/createCognitoProps.ts +46 -0
  154. package/src/resources/dynamodb/CreateDynamo.ts +111 -0
  155. package/src/resources/gateway/createApi.ts +138 -0
  156. package/src/resources/gateway/createMicroServiceBundle.ts +183 -0
  157. package/src/resources/helpers/createAuthorizer.ts +106 -0
  158. package/src/resources/helpers/createCommonLayer.ts +18 -0
  159. package/src/resources/helpers/createRoutes.ts +43 -0
  160. package/src/resources/lambda/createLambda.ts +184 -0
  161. package/src/resources/lambda-layer/createLambdaLayer.ts +40 -0
  162. package/src/resources/layers/common/package.json +22 -0
  163. package/src/resources/layers/common/src/nodejs/api-response/index.ts +1 -0
  164. package/src/resources/layers/common/src/nodejs/api-response/responses.ts +41 -0
  165. package/src/resources/layers/common/src/nodejs/index.ts +3 -0
  166. package/src/resources/layers/common/src/nodejs/logger/IContext.ts +7 -0
  167. package/src/resources/layers/common/src/nodejs/logger/index.ts +2 -0
  168. package/src/resources/layers/common/src/nodejs/logger/logger.ts +11 -0
  169. package/src/resources/layers/common/tsconfig.json +7 -0
  170. package/src/resources/resources/iam/policyDocuments/cognitoPolicy.ts +55 -0
  171. package/src/resources/resources/iam/roles/createRole.ts +30 -0
  172. package/src/resources/route53/CreateZone.ts +62 -0
  173. package/src/resources/route53/create-zones.ts +41 -0
  174. package/src/resources/securityManager/index.ts +24 -0
  175. package/tsconfig.json +40 -0
@@ -0,0 +1,55 @@
1
+ import { IUserPool } from "aws-cdk-lib/aws-cognito";
2
+ import { Effect, PolicyDocument, PolicyStatement } from "aws-cdk-lib/aws-iam";
3
+ import { MicroserviceProps } from "../../../../interfaces/MicroserviceProps";
4
+
5
+
6
+ export const cognitoPolicyDocument = (userPool: IUserPool, config: MicroserviceProps) => {
7
+
8
+ const cpd: PolicyDocument = new PolicyDocument({
9
+
10
+ statements: [
11
+ new PolicyStatement({
12
+ resources: [userPool.userPoolArn],
13
+ actions: [
14
+ "cognito:*",
15
+ "cognito-idp:ListUsers"
16
+ ],
17
+ effect: Effect.ALLOW,
18
+ }),
19
+ new PolicyStatement({
20
+ effect: Effect.ALLOW,
21
+ actions: [
22
+ "logs:CreateLogGroup",
23
+ "logs:CreateLogStream",
24
+ "logs:DescribeLogGroups",
25
+ "logs:DescribeLogStreams",
26
+ "logs:PutLogEvents",
27
+ "logs:GetLogEvents",
28
+ "logs:FilterLogEvents"
29
+ ],
30
+ resources: ["*"]
31
+ }),
32
+ new PolicyStatement({
33
+ resources: [`arn:aws:dynamodb:${config.GLOBALS.region}:${config.GLOBALS.accountNumber}:table/*`],
34
+ actions: [
35
+ "dynamodb:BatchGetItem",
36
+ "dynamodb:BatchWriteItem",
37
+ "dynamodb:ConditionCheckItem",
38
+ "dynamodb:DeleteItem",
39
+ "dynamodb:DescribeTable",
40
+ "dynamodb:GetItem",
41
+ "dynamodb:GetRecords",
42
+ "dynamodb:GetShardIterator",
43
+ "dynamodb:PutItem",
44
+ "dynamodb:Query",
45
+ "dynamodb:Scan",
46
+ "dynamodb:UpdateItem",
47
+
48
+ ],
49
+ effect: Effect.ALLOW,
50
+ }),
51
+ ],
52
+ });
53
+
54
+ return cpd;
55
+ };
@@ -0,0 +1,30 @@
1
+ import { CompositePrincipal, PolicyDocument, Role, RoleProps, ServicePrincipal } from "aws-cdk-lib/aws-iam";
2
+ import { Construct } from "constructs";
3
+
4
+
5
+ export const createRole = (scope: Construct, roleName: string, desc: string, policyDocument: PolicyDocument,
6
+ servicePrincipal: ServicePrincipal) => {
7
+
8
+ const role = new Role(scope, `${roleName}-role`, createRoleProps(roleName, desc,
9
+ policyDocument, servicePrincipal));
10
+
11
+ return role;
12
+ };
13
+
14
+ export const createRoleProps = (roleName: string, desc: string, policyDocument: PolicyDocument,
15
+ servicePrincipal: ServicePrincipal) => {
16
+
17
+ const roleProp: RoleProps = {
18
+ roleName,
19
+ description: 'Allows access to DynamoDb Client Table',
20
+ inlinePolicies: {
21
+ policyDocument
22
+ },
23
+ assumedBy: new CompositePrincipal(
24
+ servicePrincipal,
25
+ )
26
+
27
+ };
28
+
29
+ return roleProp;
30
+ };
@@ -0,0 +1,62 @@
1
+ // import { CfnOutput } from "aws-cdk-lib";
2
+ // import { HostedZoneProps, IHostedZone, IPublicHostedZone, PublicHostedZone } from "aws-cdk-lib/aws-route53";
3
+ // import { Construct } from "constructs";
4
+ // import { BaseResource } from "../base/BaseResource";
5
+
6
+ // export class CreateHostedZone extends BaseResource {
7
+
8
+ // public createdPublicZones: IPublicHostedZone[] = [];
9
+
10
+ // constructor(scope: Construct) {
11
+ // super(scope);
12
+
13
+ // this.createZone();
14
+
15
+ // }
16
+
17
+ // public createZone() {
18
+ // const props: HostedZoneProps = {
19
+ // zoneName: this.appConfig.DNS.ZoneName
20
+ // };
21
+
22
+ // let zone: IPublicHostedZone;
23
+
24
+ // if (!this.appConfig.DNS.ZoneExist) {
25
+ // zone = new PublicHostedZone(this.scope, `${this.appConfig.DNS.ZoneNameWithoutPeriod}-hosted-zone`, props);
26
+ // } else {
27
+ // if (!this.appConfig.DNS.ZoneName || !this.appConfig.DNS.ZoneId) {
28
+ // throw new Error("You must provide a Zone Name and Zone Id");
29
+ // }
30
+ // zone = PublicHostedZone.fromHostedZoneAttributes(this.scope, `${this.appConfig.DNS.ZoneNameWithoutPeriod}-hosted-zone`, {
31
+ // zoneName: this.appConfig.DNS.ZoneName,
32
+ // hostedZoneId: this.appConfig.DNS.ZoneId
33
+ // });
34
+ // }
35
+
36
+ // this.createdPublicZones.push(zone);
37
+
38
+ // this.createOutput(this.scope, this.createdPublicZones);
39
+ // }
40
+
41
+ // protected createOutput<HostedZone>(scope: Construct, createdAssets: HostedZone[]): void {
42
+
43
+ // let nameServers = '';
44
+
45
+ // this.createdPublicZones.forEach((zone, index) => {
46
+ // console.log('Name Servers:', zone.hostedZoneNameServers);
47
+
48
+ // zone.hostedZoneNameServers?.forEach((server, idx) => {
49
+ // console.log(nameServers);
50
+ // nameServers = `${nameServers} - ${idx}: ${server}`;
51
+ // }, '');
52
+
53
+ // new CfnOutput(scope, `zone-output-${index}`, {
54
+ // value: zone.hostedZoneId,
55
+ // exportName: 'hosted-zone-id'
56
+ // });
57
+
58
+ // nameServers = '';
59
+ // });
60
+ // }
61
+
62
+ // }
@@ -0,0 +1,41 @@
1
+ // import { CfnOutput, Token } from "aws-cdk-lib";
2
+ // import { HostedZoneProps, PublicHostedZone, ZoneDelegationRecord } from "aws-cdk-lib/aws-route53";
3
+ // import { Construct } from "constructs";
4
+ // import { MicroserviceProps } from "../../interfaces/MicroserviceProps";
5
+
6
+
7
+ // export const createZones = (scope: Construct, appConfig: MicroserviceProps) => {
8
+
9
+ // const createdPublicZones: PublicHostedZone[] = [];
10
+
11
+ // const props: HostedZoneProps = {
12
+ // zoneName: appConfig.DNS.ZoneName
13
+ // };
14
+
15
+ // const createdZone = new PublicHostedZone(scope, `${appConfig.DNS.ZoneNameWithoutPeriod}-hosted-zone`, props);
16
+
17
+ // createdPublicZones.push(createdZone);
18
+
19
+ // zoneOutput(scope, createdPublicZones);
20
+ // };
21
+
22
+ // const zoneOutput = (scope: Construct, publicZones: PublicHostedZone[]) => {
23
+
24
+
25
+ // let nameServers = '';
26
+ // publicZones.forEach((zone, index) => {
27
+ // console.log('Name Servers:', zone.hostedZoneNameServers);
28
+ // zone.hostedZoneNameServers?.forEach((server, idx) => {
29
+ // console.log(nameServers);
30
+ // nameServers = `${nameServers} - ${idx}: ${server}`;
31
+ // }, '');
32
+
33
+ // new CfnOutput(scope, `zone-output-${index}`, {
34
+ // value: zone.hostedZoneId,
35
+ // exportName: 'hosted-zone-id'
36
+ // });
37
+
38
+ // nameServers = '';
39
+ // });
40
+
41
+ // };
@@ -0,0 +1,24 @@
1
+ import { SecretValue } from "aws-cdk-lib";
2
+ import { Secret } from "aws-cdk-lib/aws-secretsmanager";
3
+ import { Construct } from "constructs";
4
+ import { MicroserviceProps } from "../../interfaces/MicroserviceProps";
5
+
6
+ export const createSecretManager = (scope: Construct) => {
7
+
8
+ const secureMgr = new Secret(scope, 'TemplatedSecret', {
9
+ secretName: 'GITHUB_TOKEN',
10
+ secretStringValue: SecretValue.unsafePlainText(process.env.GITHUB_TOKEN!),
11
+ });
12
+
13
+
14
+
15
+ };
16
+
17
+ export const getSecretManager = (scope: Construct, prop: MicroserviceProps,
18
+ secretManagerARN: string) => {
19
+
20
+ const secretMgr = Secret.fromSecretCompleteArn(scope, `${prop.GLOBALS.name}-secret-manager`,
21
+ secretManagerARN);
22
+
23
+ return secretMgr;
24
+ };
package/tsconfig.json ADDED
@@ -0,0 +1,40 @@
1
+ {
2
+ "compilerOptions": {
3
+ "target": "ES2020",
4
+ "module": "commonjs",
5
+ "lib": [
6
+ "es2020"
7
+ ],
8
+ "declaration": true,
9
+ "strict": true,
10
+ "noImplicitAny": true,
11
+ "strictNullChecks": true,
12
+ "noImplicitThis": true,
13
+ "alwaysStrict": true,
14
+ "noUnusedLocals": false,
15
+ "noUnusedParameters": false,
16
+ "noImplicitReturns": true,
17
+ "noFallthroughCasesInSwitch": false,
18
+ "inlineSourceMap": true,
19
+ "inlineSources": true,
20
+ "experimentalDecorators": true,
21
+ "strictPropertyInitialization": false,
22
+ "rootDir": "src",
23
+ "outDir": "dist",
24
+ "typeRoots": [
25
+ "./node_modules/@types"
26
+ ],
27
+ "paths": {
28
+ "@davissylvester/common": ["./layers/common/dist/nodejs/node_modules/@davissylvester/common"],
29
+
30
+ }
31
+ },
32
+ "exclude": [
33
+ "node_modules",
34
+ "cdk.out"
35
+ ],
36
+ "include": [
37
+ "src"
38
+ ],
39
+ }
40
+