@sylvesterllc/aws-constructs 1.1.60 → 1.1.62

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 (182) hide show
  1. package/.github/workflows/publish.yml +74 -56
  2. package/__tests__/app-config.test.ts +32 -32
  3. package/__tests__/data/testConfig.ts +146 -146
  4. package/__tests__/mocks/ResourceMock.ts +9 -9
  5. package/__tests__/router.test.ts +194 -194
  6. package/dist/config/AppConfig.js +1 -1
  7. package/dist/config/Constants.js +1 -1
  8. package/dist/config/Environments.js +1 -1
  9. package/dist/config/MicroserviceAppConfig.js +1 -1
  10. package/dist/config/ServiceBundleConfig.js +1 -1
  11. package/dist/config/bishopConfig.js +1 -1
  12. package/dist/config/customConfigs/ApiAppConfig.js +1 -1
  13. package/dist/config/customConfigs/GlobalAppConfig.js +1 -1
  14. package/dist/config/customConfigs/IAppConfig.js +1 -1
  15. package/dist/config/customConfigs/ResourceAppConfig.js +1 -1
  16. package/dist/config/microServiceConfig.js +1 -1
  17. package/dist/config/types/LogDuration.js +1 -1
  18. package/dist/config/types/TsgAuthorizerProp.js +1 -1
  19. package/dist/config/types/TsgAuthorizerType.js +1 -1
  20. package/dist/config/types/TsgCdkConfigType.js +1 -1
  21. package/dist/config/types/TsgCognitoConfig.js +1 -1
  22. package/dist/config/types/TsgDnsConfig.js +1 -1
  23. package/dist/config/types/TsgDynamoDbProp.js +1 -1
  24. package/dist/config/types/TsgDynamoIndex.js +1 -1
  25. package/dist/config/types/TsgDynamoProp.js +1 -1
  26. package/dist/config/types/TsgDynamoTable.js +1 -1
  27. package/dist/config/types/TsgDynamoTableRef.js +1 -1
  28. package/dist/config/types/TsgEc2Prop.js +1 -1
  29. package/dist/config/types/TsgKeyPair.js +1 -1
  30. package/dist/config/types/TsgLambda.js +1 -1
  31. package/dist/config/types/TsgLambdaLayerProp.js +1 -1
  32. package/dist/config/types/TsgLambdaMap.js +1 -1
  33. package/dist/config/types/TsgLambdaName.js +1 -1
  34. package/dist/config/types/TsgLambdaNode.js +1 -1
  35. package/dist/config/types/TsgLambdaProp.js +1 -1
  36. package/dist/config/types/TsgLambdaProps.js +1 -1
  37. package/dist/config/types/TsgLambdaRoutable.js +1 -1
  38. package/dist/config/types/index.js +1 -1
  39. package/dist/constants/aws-service-principal-constants.js +1 -1
  40. package/dist/constructs/BasicLambda.js +3 -3
  41. package/dist/constructs/DynamoDbSingleTable.js +1 -1
  42. package/dist/constructs/MicroService.js +1 -1
  43. package/dist/constructs/basic-queue.js +1 -1
  44. package/dist/constructs/index.js +1 -1
  45. package/dist/constructs/timer-job.js +3 -3
  46. package/dist/helpers/logger.js +1 -1
  47. package/dist/helpers/util-helper.js +1 -1
  48. package/dist/index.js +1 -1
  49. package/dist/interfaces/ApiLambdaResult.js +1 -1
  50. package/dist/interfaces/BaseResourceProps.js +1 -1
  51. package/dist/interfaces/CreateLambdaFunctionInput.js +1 -1
  52. package/dist/interfaces/MicroserviceProps.js +1 -1
  53. package/dist/interfaces/lambda/index.js +1 -1
  54. package/dist/interfaces/lambda/lambda-props.js +1 -1
  55. package/dist/interfaces/timer-job/timer-job-props.js +1 -1
  56. package/dist/resources/base/baseResource.js +1 -1
  57. package/dist/resources/base/tsgBaseResource.js +1 -1
  58. package/dist/resources/certificate/createCertificate.js +1 -1
  59. package/dist/resources/cognito/createCognito.js +1 -1
  60. package/dist/resources/cognito/createCognitoProps.js +1 -1
  61. package/dist/resources/customResource/createSeedDatabaseCustomResource.js +1 -1
  62. package/dist/resources/dynamodb/CreateDynamo.js +1 -1
  63. package/dist/resources/dynamodb/CreateDynamoSingleTableDesign.js +1 -1
  64. package/dist/resources/ec2/create-ec2-instance.js +3 -3
  65. package/dist/resources/ecr/CreateEcr.js +2 -2
  66. package/dist/resources/gateway/CreateApiAndAttachLambdas.js +1 -1
  67. package/dist/resources/gateway/createApi.js +1 -1
  68. package/dist/resources/gateway/createApiKey.js +1 -1
  69. package/dist/resources/helpers/createCommonLayer.js +1 -1
  70. package/dist/resources/helpers/createRoutes.js +1 -1
  71. package/dist/resources/index.js +1 -1
  72. package/dist/resources/lambda/create-basic-lambda-helper.js +1 -1
  73. package/dist/resources/lambda/create-basic-lambda.js +1 -1
  74. package/dist/resources/lambda/createLambda.js +1 -1
  75. package/dist/resources/lambda/lambdaHelper.js +1 -1
  76. package/dist/resources/lambda-authorizer/TsgJwtTokenAuthorizer.js +1 -1
  77. package/dist/resources/lambda-authorizer/TsgRequestAuthorizer.js +1 -1
  78. package/dist/resources/lambda-authorizer/createAuthorizerHelpers.js +1 -1
  79. package/dist/resources/lambda-layer/createLambdaLayer.js +1 -1
  80. package/dist/resources/layers/common/src/nodejs/api-response/responses.js +1 -1
  81. package/dist/resources/layers/common/src/nodejs/index.js +1 -1
  82. package/dist/resources/layers/common/src/nodejs/logger/IContext.js +1 -1
  83. package/dist/resources/layers/common/src/nodejs/logger/index.js +1 -1
  84. package/dist/resources/layers/common/src/nodejs/logger/logger.js +1 -1
  85. package/dist/resources/resources/iam/policyDocuments/cognitoPolicy.js +1 -1
  86. package/dist/resources/resources/iam/roles/createRole.js +1 -1
  87. package/dist/resources/route53/CreateZone.js +1 -1
  88. package/dist/resources/route53/create-zones.js +1 -1
  89. package/dist/resources/securityManager/index.js +1 -1
  90. package/dist/resources/sqs/create-sqs-resource.js +1 -1
  91. package/jest.config.js +8 -8
  92. package/jest.config.ts.old +20 -20
  93. package/package.json +1 -1
  94. package/readme.md +147 -147
  95. package/src/config/AppConfig.ts +106 -106
  96. package/src/config/Constants.ts +26 -26
  97. package/src/config/Environments.ts +1 -1
  98. package/src/config/MicroserviceAppConfig.ts +8 -8
  99. package/src/config/ServiceBundleConfig.ts +17 -17
  100. package/src/config/bishopConfig.ts +82 -82
  101. package/src/config/customConfigs/ApiAppConfig.ts +5 -5
  102. package/src/config/customConfigs/GlobalAppConfig.ts +10 -10
  103. package/src/config/customConfigs/IAppConfig.ts +12 -12
  104. package/src/config/customConfigs/ResourceAppConfig.ts +15 -15
  105. package/src/config/microServiceConfig.ts +83 -83
  106. package/src/config/types/LogDuration.ts +7 -7
  107. package/src/config/types/TsgAuthorizerProp.ts +8 -8
  108. package/src/config/types/TsgAuthorizerType.ts +4 -4
  109. package/src/config/types/TsgCdkConfigType.ts +2 -2
  110. package/src/config/types/TsgCognitoConfig.ts +5 -5
  111. package/src/config/types/TsgDnsConfig.ts +10 -10
  112. package/src/config/types/TsgDynamoDbProp.ts +9 -9
  113. package/src/config/types/TsgDynamoIndex.ts +15 -15
  114. package/src/config/types/TsgDynamoProp.ts +16 -16
  115. package/src/config/types/TsgDynamoTable.ts +4 -4
  116. package/src/config/types/TsgDynamoTableRef.ts +3 -3
  117. package/src/config/types/TsgEc2Prop.ts +8 -8
  118. package/src/config/types/TsgKeyPair.ts +5 -5
  119. package/src/config/types/TsgLambda.ts +5 -5
  120. package/src/config/types/TsgLambdaLayerProp.ts +4 -4
  121. package/src/config/types/TsgLambdaMap.ts +3 -3
  122. package/src/config/types/TsgLambdaName.ts +3 -3
  123. package/src/config/types/TsgLambdaNode.ts +3 -3
  124. package/src/config/types/TsgLambdaProp.ts +19 -19
  125. package/src/config/types/TsgLambdaProps.ts +17 -17
  126. package/src/config/types/TsgLambdaRoutable.ts +8 -8
  127. package/src/config/types/index.ts +11 -11
  128. package/src/constants/aws-service-principal-constants.ts +2 -2
  129. package/src/constructs/BasicLambda.ts +19 -19
  130. package/src/constructs/DynamoDbSingleTable.ts +9 -9
  131. package/src/constructs/MicroService.ts +131 -131
  132. package/src/constructs/basic-queue.ts +18 -18
  133. package/src/constructs/index.ts +6 -6
  134. package/src/constructs/timer-job.ts +19 -19
  135. package/src/helpers/logger.ts +12 -12
  136. package/src/helpers/util-helper.ts +19 -19
  137. package/src/index.ts +8 -8
  138. package/src/interfaces/ApiLambdaResult.ts +6 -6
  139. package/src/interfaces/BaseResourceProps.ts +6 -6
  140. package/src/interfaces/CreateLambdaFunctionInput.ts +10 -10
  141. package/src/interfaces/MicroserviceProps.ts +10 -10
  142. package/src/interfaces/lambda/index.ts +1 -1
  143. package/src/interfaces/lambda/lambda-props.ts +15 -15
  144. package/src/interfaces/timer-job/timer-job-props.ts +6 -6
  145. package/src/resources/base/baseResource.ts +14 -14
  146. package/src/resources/base/tsgBaseResource.ts +21 -21
  147. package/src/resources/certificate/createCertificate.ts +57 -57
  148. package/src/resources/cognito/createCognito.ts +47 -47
  149. package/src/resources/cognito/createCognitoProps.ts +46 -46
  150. package/src/resources/customResource/createSeedDatabaseCustomResource.ts +36 -36
  151. package/src/resources/dynamodb/CreateDynamo.ts +110 -110
  152. package/src/resources/dynamodb/CreateDynamoSingleTableDesign.ts +118 -118
  153. package/src/resources/ec2/create-ec2-instance.ts +52 -52
  154. package/src/resources/ecr/CreateEcr.ts +57 -57
  155. package/src/resources/gateway/CreateApiAndAttachLambdas.ts +161 -161
  156. package/src/resources/gateway/createApi.ts +173 -173
  157. package/src/resources/gateway/createApiKey.ts +88 -88
  158. package/src/resources/helpers/createCommonLayer.ts +18 -18
  159. package/src/resources/helpers/createRoutes.ts +74 -74
  160. package/src/resources/index.ts +1 -1
  161. package/src/resources/lambda/create-basic-lambda-helper.ts +124 -124
  162. package/src/resources/lambda/create-basic-lambda.ts +162 -162
  163. package/src/resources/lambda/createLambda.ts +239 -239
  164. package/src/resources/lambda/lambdaHelper.ts +133 -133
  165. package/src/resources/lambda-authorizer/TsgJwtTokenAuthorizer.ts +107 -107
  166. package/src/resources/lambda-authorizer/TsgRequestAuthorizer.ts +44 -44
  167. package/src/resources/lambda-authorizer/createAuthorizerHelpers.ts +76 -76
  168. package/src/resources/lambda-layer/createLambdaLayer.ts +39 -39
  169. package/src/resources/layers/common/package.json +22 -22
  170. package/src/resources/layers/common/src/nodejs/api-response/responses.ts +41 -41
  171. package/src/resources/layers/common/src/nodejs/index.ts +3 -3
  172. package/src/resources/layers/common/src/nodejs/logger/IContext.ts +6 -6
  173. package/src/resources/layers/common/src/nodejs/logger/index.ts +1 -1
  174. package/src/resources/layers/common/src/nodejs/logger/logger.ts +10 -10
  175. package/src/resources/layers/common/tsconfig.json +7 -7
  176. package/src/resources/resources/iam/policyDocuments/cognitoPolicy.ts +54 -54
  177. package/src/resources/resources/iam/roles/createRole.ts +29 -29
  178. package/src/resources/route53/CreateZone.ts +61 -61
  179. package/src/resources/route53/create-zones.ts +40 -40
  180. package/src/resources/securityManager/index.ts +23 -23
  181. package/src/resources/sqs/create-sqs-resource.ts +26 -26
  182. package/tsconfig.json +46 -46
@@ -1,20 +1,20 @@
1
- import { v4 as uuidv4 } from 'uuid';
2
- import { Environment } from '../config/Environments';
3
-
4
- export const getUUID = () => {
5
-
6
- return uuidv4();
7
- };
8
-
9
- export const environmentSuffix = (env: Environment = "prod") => {
10
- return env === 'prod' ? '' : env === 'qa' ? '-qa' : '-dev';
11
- }
12
-
13
- export const environmentSuffixForDomain = (env: Environment = "prod") => {
14
- return env === 'prod' ? '.' : env === 'qa' ? '.qa' : '.dev';
15
- }
16
-
17
- export const clog = (message: string) => {
18
-
19
-
1
+ import { v4 as uuidv4 } from 'uuid';
2
+ import { Environment } from '../config/Environments';
3
+
4
+ export const getUUID = () => {
5
+
6
+ return uuidv4();
7
+ };
8
+
9
+ export const environmentSuffix = (env: Environment = "prod") => {
10
+ return env === 'prod' ? '' : env === 'qa' ? '-qa' : '-dev';
11
+ }
12
+
13
+ export const environmentSuffixForDomain = (env: Environment = "prod") => {
14
+ return env === 'prod' ? '.' : env === 'qa' ? '.qa' : '.dev';
15
+ }
16
+
17
+ export const clog = (message: string) => {
18
+
19
+
20
20
  };
package/src/index.ts CHANGED
@@ -1,8 +1,8 @@
1
- export { MicroService } from "./constructs/MicroService";
2
- export { MicroserviceProps } from "./interfaces/MicroserviceProps";
3
- export { IAppConfig } from "./config/customConfigs/IAppConfig";
4
- export { MicroServiceAppConfig } from "./config/MicroserviceAppConfig";
5
- export { TsgAuthorizerType } from "./config/types/TsgAuthorizerType";
6
- export * from "./interfaces/timer-job/index";
7
- export * from "./interfaces/lambda/index";
8
- export * from "./constructs/index";
1
+ export { MicroService } from "./constructs/MicroService";
2
+ export { MicroserviceProps } from "./interfaces/MicroserviceProps";
3
+ export { IAppConfig } from "./config/customConfigs/IAppConfig";
4
+ export { MicroServiceAppConfig } from "./config/MicroserviceAppConfig";
5
+ export { TsgAuthorizerType } from "./config/types/TsgAuthorizerType";
6
+ export * from "./interfaces/timer-job/index";
7
+ export * from "./interfaces/lambda/index";
8
+ export * from "./constructs/index";
@@ -1,7 +1,7 @@
1
- import { Token } from "aws-cdk-lib";
2
- import { IRestApi, RequestAuthorizer, TokenAuthorizer } from "aws-cdk-lib/aws-apigateway";
3
-
4
- export interface ApiLambdaResult {
5
- api: IRestApi;
6
- authorizer: TokenAuthorizer | RequestAuthorizer | undefined | null;
1
+ import { Token } from "aws-cdk-lib";
2
+ import { IRestApi, RequestAuthorizer, TokenAuthorizer } from "aws-cdk-lib/aws-apigateway";
3
+
4
+ export interface ApiLambdaResult {
5
+ api: IRestApi;
6
+ authorizer: TokenAuthorizer | RequestAuthorizer | undefined | null;
7
7
  }
@@ -1,7 +1,7 @@
1
- import { Construct } from "constructs";
2
- import { AppConfig } from "../config/AppConfig";
3
-
4
- export interface BaseResourceProps {
5
- scope: Construct;
6
- config: AppConfig
1
+ import { Construct } from "constructs";
2
+ import { AppConfig } from "../config/AppConfig";
3
+
4
+ export interface BaseResourceProps {
5
+ scope: Construct;
6
+ config: AppConfig
7
7
  }
@@ -1,11 +1,11 @@
1
- import { IRole } from "aws-cdk-lib/aws-iam";
2
- import { LayerVersion } from "aws-cdk-lib/aws-lambda";
3
- import { TsgLambdaProp } from "../config/types";
4
- import { TsgLambdaProps } from "../config/types/TsgLambdaProps";
5
-
6
- export interface CreateLambdaFunctionInput {
7
- prop: TsgLambdaProp;
8
- role?: IRole;
9
- layers?: LayerVersion[],
10
- props?: TsgLambdaProps
1
+ import { IRole } from "aws-cdk-lib/aws-iam";
2
+ import { LayerVersion } from "aws-cdk-lib/aws-lambda";
3
+ import { TsgLambdaProp } from "../config/types";
4
+ import { TsgLambdaProps } from "../config/types/TsgLambdaProps";
5
+
6
+ export interface CreateLambdaFunctionInput {
7
+ prop: TsgLambdaProp;
8
+ role?: IRole;
9
+ layers?: LayerVersion[],
10
+ props?: TsgLambdaProps
11
11
  }
@@ -1,11 +1,11 @@
1
- import { ApiAppConfig } from "../config/customConfigs/ApiAppConfig";
2
- import { GlobalAppConfig } from "../config/customConfigs/GlobalAppConfig";
3
- import { ResourceAppConfig } from "../config/customConfigs/ResourceAppConfig";
4
- import { TsgDnsAppConfig } from "../config/types/TsgDnsConfig";
5
-
6
- export interface MicroserviceProps {
7
- API: ApiAppConfig;
8
- GLOBALS: GlobalAppConfig;
9
- RESOURCES: ResourceAppConfig;
10
- DNS?: TsgDnsAppConfig;
1
+ import { ApiAppConfig } from "../config/customConfigs/ApiAppConfig";
2
+ import { GlobalAppConfig } from "../config/customConfigs/GlobalAppConfig";
3
+ import { ResourceAppConfig } from "../config/customConfigs/ResourceAppConfig";
4
+ import { TsgDnsAppConfig } from "../config/types/TsgDnsConfig";
5
+
6
+ export interface MicroserviceProps {
7
+ API: ApiAppConfig;
8
+ GLOBALS: GlobalAppConfig;
9
+ RESOURCES: ResourceAppConfig;
10
+ DNS?: TsgDnsAppConfig;
11
11
  }
@@ -1 +1 @@
1
- export { LambdaProps } from "./lambda-props";
1
+ export { LambdaProps } from "./lambda-props";
@@ -1,15 +1,15 @@
1
- import { IRole } from "aws-cdk-lib/aws-iam/lib";
2
-
3
- export interface LambdaProps {
4
- functionName: string;
5
- appPrefix?: string;
6
- codePath?: string;
7
- memory?: number;
8
- envs?: Record<string, string>;
9
- role?: IRole;
10
- dynamoTableNames?: string[];
11
- lambdaLayerArn?: string[];
12
- projectRoot?: string;
13
- depsLockFilePath?: string;
14
- timeoutInMinutes?: number;
15
- }
1
+ import { IRole } from "aws-cdk-lib/aws-iam/lib";
2
+
3
+ export interface LambdaProps {
4
+ functionName: string;
5
+ appPrefix?: string;
6
+ codePath?: string;
7
+ memory?: number;
8
+ envs?: Record<string, string>;
9
+ role?: IRole;
10
+ dynamoTableNames?: string[];
11
+ lambdaLayerArn?: string[];
12
+ projectRoot?: string;
13
+ depsLockFilePath?: string;
14
+ timeoutInMinutes?: number;
15
+ }
@@ -1,6 +1,6 @@
1
- import { CronOptions } from "aws-cdk-lib/aws-events/lib/schedule";
2
- import { LambdaProps } from "../lambda";
3
-
4
- export interface TimerJobProps extends LambdaProps {
5
- cronOptions: CronOptions;
6
- }
1
+ import { CronOptions } from "aws-cdk-lib/aws-events/lib/schedule";
2
+ import { LambdaProps } from "../lambda";
3
+
4
+ export interface TimerJobProps extends LambdaProps {
5
+ cronOptions: CronOptions;
6
+ }
@@ -1,15 +1,15 @@
1
- import { Tags } from "aws-cdk-lib";
2
- import { Construct } from "constructs";
3
- import { AppConfig } from "../../config/AppConfig";
4
-
5
- export abstract class BaseResource<T> {
6
-
7
- protected createdResources: T[];
8
-
9
- constructor(protected scope: Construct, protected config: AppConfig) { }
10
-
11
- protected abstract createResource(scope: Construct): T[] | null;
12
-
13
- protected abstract createOutput<T>(scope: Construct, createdAssets: T[]): void;
14
-
1
+ import { Tags } from "aws-cdk-lib";
2
+ import { Construct } from "constructs";
3
+ import { AppConfig } from "../../config/AppConfig";
4
+
5
+ export abstract class BaseResource<T> {
6
+
7
+ protected createdResources: T[];
8
+
9
+ constructor(protected scope: Construct, protected config: AppConfig) { }
10
+
11
+ protected abstract createResource(scope: Construct): T[] | null;
12
+
13
+ protected abstract createOutput<T>(scope: Construct, createdAssets: T[]): void;
14
+
15
15
  }
@@ -1,22 +1,22 @@
1
- import { CfnOutput } from "aws-cdk-lib";
2
- import { Construct } from "constructs";
3
-
4
- export abstract class TsgBaseResource<T, R> {
5
-
6
- protected createdResource: T | null;
7
-
8
- constructor(protected scope: Construct, protected config: R) {
9
-
10
- this.createdResource = this.createResource(scope);
11
-
12
- if (this.createdResource) {
13
- this.createOutput(scope);
14
- }
15
- }
16
-
17
-
18
- protected abstract createResource(scope: Construct): T | null;
19
-
20
- protected abstract createOutput<T>(scope: Construct): void;
21
-
1
+ import { CfnOutput } from "aws-cdk-lib";
2
+ import { Construct } from "constructs";
3
+
4
+ export abstract class TsgBaseResource<T, R> {
5
+
6
+ protected createdResource: T | null;
7
+
8
+ constructor(protected scope: Construct, protected config: R) {
9
+
10
+ this.createdResource = this.createResource(scope);
11
+
12
+ if (this.createdResource) {
13
+ this.createOutput(scope);
14
+ }
15
+ }
16
+
17
+
18
+ protected abstract createResource(scope: Construct): T | null;
19
+
20
+ protected abstract createOutput<T>(scope: Construct): void;
21
+
22
22
  }
@@ -1,58 +1,58 @@
1
- import { RemovalPolicy } from "aws-cdk-lib";
2
- import { Certificate, CertificateValidation, DnsValidatedCertificate, ICertificate } from "aws-cdk-lib/aws-certificatemanager";
3
- import { HostedZone, IHostedZone } from "aws-cdk-lib/aws-route53";
4
- import { Construct } from "constructs";
5
- import { MicroserviceProps } from "../../interfaces/MicroserviceProps";
6
- import { environmentSuffixForDomain } from "../../helpers/util-helper";
7
- import { Environment } from "../../config/Environments";
8
- import { env } from "process";
9
-
10
-
11
- export class CreateCertificate {
12
-
13
- public certificate: ICertificate;
14
-
15
- constructor(scope: Construct, props: MicroserviceProps, hostedZone: IHostedZone, env: string) {
16
-
17
- // this.certificate = this.generateCertificate(scope, props, hostedZone);
18
-
19
- this.certificate = this.generateApiCertificate(scope, props, env);
20
-
21
- this.certificate.applyRemovalPolicy(RemovalPolicy.DESTROY);
22
-
23
- }
24
-
25
- generateCertificate(scope: Construct, props: MicroserviceProps, hostedZone: IHostedZone, env: string) {
26
-
27
- const devHostedZone = HostedZone.fromHostedZoneId(scope, `api.c1.dev.convergeone.io-hosted-zone`,
28
- 'Z0508834Q8E4TWFVG990');
29
-
30
- const cert = new Certificate(scope, `api-c1-dev-api-certificate`, {
31
- domainName: `c1.api.dev.convergeone.io`,
32
- validation: CertificateValidation.fromDnsMultiZone({
33
- [`dev.convergeone.io`]: devHostedZone
34
- })
35
- });
36
- return cert;
37
- }
38
-
39
- generateApiCertificate(scope: Construct, props: MicroserviceProps, env: string) {
40
-
41
- const hostedZone = HostedZone.fromHostedZoneId(scope, `${props.API.DomainPrefix}-${env}-${props.DNS?.ZoneName}-hosted-zone`,
42
- props.DNS?.ZoneId!);
43
-
44
- const domainName = `${props.API.DomainPrefix}.${env}.${props.DNS?.ZoneName}`;
45
-
46
- const cert = new Certificate(scope, `${props.API.DomainPrefix}-${env}-${props.DNS?.ZoneName}-certificate`, {
47
- certificateName: `${domainName}-certificate`,
48
- domainName: domainName,
49
- // validation: CertificateValidation.fromDnsMultiZone({
50
- // [`${props.API.DomainPrefix}.${env}.${props.DNS?.ZoneName}`]: hostedZone
51
-
52
- // })
53
- validation: CertificateValidation.fromDns(hostedZone)
54
- });
55
-
56
- return cert;
57
- }
1
+ import { RemovalPolicy } from "aws-cdk-lib";
2
+ import { Certificate, CertificateValidation, DnsValidatedCertificate, ICertificate } from "aws-cdk-lib/aws-certificatemanager";
3
+ import { HostedZone, IHostedZone } from "aws-cdk-lib/aws-route53";
4
+ import { Construct } from "constructs";
5
+ import { MicroserviceProps } from "../../interfaces/MicroserviceProps";
6
+ import { environmentSuffixForDomain } from "../../helpers/util-helper";
7
+ import { Environment } from "../../config/Environments";
8
+ import { env } from "process";
9
+
10
+
11
+ export class CreateCertificate {
12
+
13
+ public certificate: ICertificate;
14
+
15
+ constructor(scope: Construct, props: MicroserviceProps, hostedZone: IHostedZone, env: string) {
16
+
17
+ // this.certificate = this.generateCertificate(scope, props, hostedZone);
18
+
19
+ this.certificate = this.generateApiCertificate(scope, props, env);
20
+
21
+ this.certificate.applyRemovalPolicy(RemovalPolicy.DESTROY);
22
+
23
+ }
24
+
25
+ generateCertificate(scope: Construct, props: MicroserviceProps, hostedZone: IHostedZone, env: string) {
26
+
27
+ const devHostedZone = HostedZone.fromHostedZoneId(scope, `api.c1.dev.convergeone.io-hosted-zone`,
28
+ 'Z0508834Q8E4TWFVG990');
29
+
30
+ const cert = new Certificate(scope, `api-c1-dev-api-certificate`, {
31
+ domainName: `c1.api.dev.convergeone.io`,
32
+ validation: CertificateValidation.fromDnsMultiZone({
33
+ [`dev.convergeone.io`]: devHostedZone
34
+ })
35
+ });
36
+ return cert;
37
+ }
38
+
39
+ generateApiCertificate(scope: Construct, props: MicroserviceProps, env: string) {
40
+
41
+ const hostedZone = HostedZone.fromHostedZoneId(scope, `${props.API.DomainPrefix}-${env}-${props.DNS?.ZoneName}-hosted-zone`,
42
+ props.DNS?.ZoneId!);
43
+
44
+ const domainName = `${props.API.DomainPrefix}.${env}.${props.DNS?.ZoneName}`;
45
+
46
+ const cert = new Certificate(scope, `${props.API.DomainPrefix}-${env}-${props.DNS?.ZoneName}-certificate`, {
47
+ certificateName: `${domainName}-certificate`,
48
+ domainName: domainName,
49
+ // validation: CertificateValidation.fromDnsMultiZone({
50
+ // [`${props.API.DomainPrefix}.${env}.${props.DNS?.ZoneName}`]: hostedZone
51
+
52
+ // })
53
+ validation: CertificateValidation.fromDns(hostedZone)
54
+ });
55
+
56
+ return cert;
57
+ }
58
58
  }
@@ -1,47 +1,47 @@
1
- import { IUserPool, UserPool, UserPoolClient, UserPoolClientProps, UserPoolIdentityProviderAmazon, UserPoolIdentityProviderAmazonProps, UserPoolIdentityProviderSaml, UserPoolIdentityProviderSamlMetadataType } from "aws-cdk-lib/aws-cognito";
2
- import { Construct } from "constructs";
3
- import { AppConfig } from "../../config/AppConfig";
4
- import { createUserPoolProps } from "./createCognitoProps";
5
- import { Duration } from "aws-cdk-lib";
6
- import { ClientAppType } from "../../config/Environments";
7
-
8
- export const createCognito = (scope: Construct, appConfig: AppConfig) => {
9
-
10
-
11
- const userPool = createUserPool(scope, appConfig);
12
- const clientPool = createUserPoolClient(scope, userPool, "mobile", appConfig);
13
-
14
- return {
15
- userPool,
16
- clientPool
17
- };
18
- };
19
-
20
- const createUserPool = (scope: Construct, appConfig: AppConfig, userPoolName?: string) => {
21
-
22
- return new UserPool(scope, `${appConfig.AppName}-user-pool`,
23
- createUserPoolProps(`${appConfig.AppName}-user-pool`));
24
-
25
- };
26
-
27
- const createUserPoolClient = (scope: Construct, userPool: IUserPool, appType: ClientAppType,
28
- appConfig: AppConfig) => {
29
-
30
- const client = new UserPoolClient(scope, `${appConfig.AppName}-user-pool-client`,
31
- createUserPoolClientProps(userPool, appConfig, appType));
32
-
33
- return client;
34
- };
35
-
36
- const createUserPoolClientProps = (userpool: IUserPool, config: AppConfig, appType: ClientAppType): UserPoolClientProps => {
37
- const props: UserPoolClientProps = {
38
- userPool: userpool,
39
- accessTokenValidity: Duration.hours(3),
40
- refreshTokenValidity: Duration.days(3),
41
- userPoolClientName: `${config.AppName}-${appType}`,
42
- authFlows: {
43
- userPassword: true,
44
- }
45
- };
46
- return props;
47
- };
1
+ import { IUserPool, UserPool, UserPoolClient, UserPoolClientProps, UserPoolIdentityProviderAmazon, UserPoolIdentityProviderAmazonProps, UserPoolIdentityProviderSaml, UserPoolIdentityProviderSamlMetadataType } from "aws-cdk-lib/aws-cognito";
2
+ import { Construct } from "constructs";
3
+ import { AppConfig } from "../../config/AppConfig";
4
+ import { createUserPoolProps } from "./createCognitoProps";
5
+ import { Duration } from "aws-cdk-lib";
6
+ import { ClientAppType } from "../../config/Environments";
7
+
8
+ export const createCognito = (scope: Construct, appConfig: AppConfig) => {
9
+
10
+
11
+ const userPool = createUserPool(scope, appConfig);
12
+ const clientPool = createUserPoolClient(scope, userPool, "mobile", appConfig);
13
+
14
+ return {
15
+ userPool,
16
+ clientPool
17
+ };
18
+ };
19
+
20
+ const createUserPool = (scope: Construct, appConfig: AppConfig, userPoolName?: string) => {
21
+
22
+ return new UserPool(scope, `${appConfig.AppName}-user-pool`,
23
+ createUserPoolProps(`${appConfig.AppName}-user-pool`));
24
+
25
+ };
26
+
27
+ const createUserPoolClient = (scope: Construct, userPool: IUserPool, appType: ClientAppType,
28
+ appConfig: AppConfig) => {
29
+
30
+ const client = new UserPoolClient(scope, `${appConfig.AppName}-user-pool-client`,
31
+ createUserPoolClientProps(userPool, appConfig, appType));
32
+
33
+ return client;
34
+ };
35
+
36
+ const createUserPoolClientProps = (userpool: IUserPool, config: AppConfig, appType: ClientAppType): UserPoolClientProps => {
37
+ const props: UserPoolClientProps = {
38
+ userPool: userpool,
39
+ accessTokenValidity: Duration.hours(3),
40
+ refreshTokenValidity: Duration.days(3),
41
+ userPoolClientName: `${config.AppName}-${appType}`,
42
+ authFlows: {
43
+ userPassword: true,
44
+ }
45
+ };
46
+ return props;
47
+ };
@@ -1,46 +1,46 @@
1
- import { Duration, RemovalPolicy } from "aws-cdk-lib";
2
- import { AccountRecovery, DateTimeAttribute, NumberAttribute, StringAttribute, UserPoolProps,
3
- VerificationEmailStyle } from "aws-cdk-lib/aws-cognito";
4
-
5
- export const createUserPoolProps = (securityUserPool: string) => {
6
-
7
- const cognitoProps: UserPoolProps = {
8
- userPoolName: securityUserPool.toLowerCase(),
9
- selfSignUpEnabled: true,
10
- userVerification: {
11
- emailSubject: 'Verify your email for Bishop CDK Constructs!',
12
- emailBody: 'Thanks for creating an account with Bishop CDK Constructs! Your verification code is {####}',
13
- emailStyle: VerificationEmailStyle.CODE,
14
- smsMessage: 'Thanks for signing up {username} with Bishop CDK Constructs! Your verification code is {####}',
15
- },
16
- userInvitation: {
17
- emailSubject: 'Invite to join Bishop CDK Constructs!',
18
- emailBody: 'Hello {username}, you have been invited to join Bishop CDK Constructs! Your temporary password is {####}',
19
- smsMessage: 'Your temporary password for {username} with Bishop CDK Constructs is {####}'
20
- },
21
- signInAliases: {
22
- username: true,
23
- email: true,
24
- phone: true
25
- },
26
- customAttributes: {
27
- 'firstName': new StringAttribute({ minLen: 3, maxLen: 30, mutable: true }),
28
- 'lastName': new StringAttribute({ minLen: 3, maxLen: 30, mutable: true }),
29
- 'phoneNumber': new StringAttribute({ minLen: 3, maxLen: 30, mutable: true }),
30
- 'acccountType': new NumberAttribute({ mutable: true }),
31
- 'joinedOn': new DateTimeAttribute(),
32
- },
33
- passwordPolicy: {
34
- minLength: 8,
35
- requireLowercase: true,
36
- requireUppercase: true,
37
- requireDigits: true,
38
- requireSymbols: true,
39
- tempPasswordValidity: Duration.days(1),
40
- },
41
- accountRecovery: AccountRecovery.PHONE_AND_EMAIL,
42
- removalPolicy: RemovalPolicy.DESTROY,
43
- }
44
- return cognitoProps;
45
- };
46
-
1
+ import { Duration, RemovalPolicy } from "aws-cdk-lib";
2
+ import { AccountRecovery, DateTimeAttribute, NumberAttribute, StringAttribute, UserPoolProps,
3
+ VerificationEmailStyle } from "aws-cdk-lib/aws-cognito";
4
+
5
+ export const createUserPoolProps = (securityUserPool: string) => {
6
+
7
+ const cognitoProps: UserPoolProps = {
8
+ userPoolName: securityUserPool.toLowerCase(),
9
+ selfSignUpEnabled: true,
10
+ userVerification: {
11
+ emailSubject: 'Verify your email for Bishop CDK Constructs!',
12
+ emailBody: 'Thanks for creating an account with Bishop CDK Constructs! Your verification code is {####}',
13
+ emailStyle: VerificationEmailStyle.CODE,
14
+ smsMessage: 'Thanks for signing up {username} with Bishop CDK Constructs! Your verification code is {####}',
15
+ },
16
+ userInvitation: {
17
+ emailSubject: 'Invite to join Bishop CDK Constructs!',
18
+ emailBody: 'Hello {username}, you have been invited to join Bishop CDK Constructs! Your temporary password is {####}',
19
+ smsMessage: 'Your temporary password for {username} with Bishop CDK Constructs is {####}'
20
+ },
21
+ signInAliases: {
22
+ username: true,
23
+ email: true,
24
+ phone: true
25
+ },
26
+ customAttributes: {
27
+ 'firstName': new StringAttribute({ minLen: 3, maxLen: 30, mutable: true }),
28
+ 'lastName': new StringAttribute({ minLen: 3, maxLen: 30, mutable: true }),
29
+ 'phoneNumber': new StringAttribute({ minLen: 3, maxLen: 30, mutable: true }),
30
+ 'acccountType': new NumberAttribute({ mutable: true }),
31
+ 'joinedOn': new DateTimeAttribute(),
32
+ },
33
+ passwordPolicy: {
34
+ minLength: 8,
35
+ requireLowercase: true,
36
+ requireUppercase: true,
37
+ requireDigits: true,
38
+ requireSymbols: true,
39
+ tempPasswordValidity: Duration.days(1),
40
+ },
41
+ accountRecovery: AccountRecovery.PHONE_AND_EMAIL,
42
+ removalPolicy: RemovalPolicy.DESTROY,
43
+ }
44
+ return cognitoProps;
45
+ };
46
+
@@ -1,37 +1,37 @@
1
- import { ITableV2 } from "aws-cdk-lib/aws-dynamodb";
2
- import { LayerVersion, Runtime } from "aws-cdk-lib/aws-lambda";
3
- import { NodejsFunction } from "aws-cdk-lib/aws-lambda-nodejs";
4
- import { Construct } from "constructs";
5
- import { AppConfig } from "../../config/AppConfig";
6
- import { LambdaHelper } from "../lambda/lambdaHelper";
7
- import { Provider, ProviderProps } from "aws-cdk-lib/custom-resources";
8
- import { RetentionDays } from "aws-cdk-lib/aws-logs";
9
- import { CustomResource, CustomResourceProps } from "aws-cdk-lib";
10
-
11
-
12
- export const createSeedDatabaseCustomResource = (scope: Construct, config: AppConfig,
13
- database: ITableV2, layers?: LayerVersion[]) => {
14
-
15
- const seedLambda = config.RESOURCES.DYNAMO?.SEED_LAMBDA;
16
-
17
- const databaseSeedLambda = LambdaHelper.createLambdaFunctions(scope,
18
- config,
19
- seedLambda!,
20
- undefined,
21
- layers!) as NodejsFunction;
22
-
23
- database.grantReadWriteData(databaseSeedLambda);
24
-
25
- const providerProps: ProviderProps = {
26
- onEventHandler: databaseSeedLambda,
27
- logRetention: RetentionDays.ONE_WEEK,
28
- };
29
-
30
- const provider = new Provider(scope, `${config.AppPrefix}-database-seed-provider`, providerProps);
31
-
32
- const crProps: CustomResourceProps = {
33
- serviceToken: provider.serviceToken,
34
- };
35
-
36
- new CustomResource(scope, `${config.AppPrefix}-database-seed`, crProps);
1
+ import { ITableV2 } from "aws-cdk-lib/aws-dynamodb";
2
+ import { LayerVersion, Runtime } from "aws-cdk-lib/aws-lambda";
3
+ import { NodejsFunction } from "aws-cdk-lib/aws-lambda-nodejs";
4
+ import { Construct } from "constructs";
5
+ import { AppConfig } from "../../config/AppConfig";
6
+ import { LambdaHelper } from "../lambda/lambdaHelper";
7
+ import { Provider, ProviderProps } from "aws-cdk-lib/custom-resources";
8
+ import { RetentionDays } from "aws-cdk-lib/aws-logs";
9
+ import { CustomResource, CustomResourceProps } from "aws-cdk-lib";
10
+
11
+
12
+ export const createSeedDatabaseCustomResource = (scope: Construct, config: AppConfig,
13
+ database: ITableV2, layers?: LayerVersion[]) => {
14
+
15
+ const seedLambda = config.RESOURCES.DYNAMO?.SEED_LAMBDA;
16
+
17
+ const databaseSeedLambda = LambdaHelper.createLambdaFunctions(scope,
18
+ config,
19
+ seedLambda!,
20
+ undefined,
21
+ layers!) as NodejsFunction;
22
+
23
+ database.grantReadWriteData(databaseSeedLambda);
24
+
25
+ const providerProps: ProviderProps = {
26
+ onEventHandler: databaseSeedLambda,
27
+ logRetention: RetentionDays.ONE_WEEK,
28
+ };
29
+
30
+ const provider = new Provider(scope, `${config.AppPrefix}-database-seed-provider`, providerProps);
31
+
32
+ const crProps: CustomResourceProps = {
33
+ serviceToken: provider.serviceToken,
34
+ };
35
+
36
+ new CustomResource(scope, `${config.AppPrefix}-database-seed`, crProps);
37
37
  };