@gradientedge/cdk-utils 8.159.0 → 8.161.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/app/api-destined-function/package.json +1 -1
- package/dist/src/lib/aws/construct/index.d.ts +0 -2
- package/dist/src/lib/aws/construct/index.js +0 -2
- package/dist/src/lib/aws/construct/rest-api-lambda/main.d.ts +0 -4
- package/dist/src/lib/aws/construct/rest-api-lambda/main.js +0 -7
- package/dist/src/lib/aws/services/elastic-container-service/main.js +0 -3
- package/dist/src/lib/aws/services/elastic-container-service/types.d.ts +9 -2
- package/dist/src/lib/aws/services/lambda/main.d.ts +1 -2
- package/dist/src/lib/aws/services/lambda/main.js +16 -7
- package/eslint.config.mjs +5 -0
- package/package.json +29 -29
- package/src/lib/aws/construct/index.ts +0 -2
- package/src/lib/aws/construct/rest-api-lambda/main.ts +0 -8
- package/src/lib/aws/services/elastic-container-service/main.ts +0 -3
- package/src/lib/aws/services/elastic-container-service/types.ts +16 -2
- package/src/lib/aws/services/lambda/main.ts +19 -9
- package/dist/src/lib/aws/construct/graphql-api-lambda/index.d.ts +0 -2
- package/dist/src/lib/aws/construct/graphql-api-lambda/index.js +0 -18
- package/dist/src/lib/aws/construct/graphql-api-lambda/main.d.ts +0 -96
- package/dist/src/lib/aws/construct/graphql-api-lambda/main.js +0 -177
- package/dist/src/lib/aws/construct/graphql-api-lambda/types.d.ts +0 -26
- package/dist/src/lib/aws/construct/graphql-api-lambda/types.js +0 -2
- package/dist/src/lib/aws/construct/graphql-api-lambda-with-cache/index.d.ts +0 -2
- package/dist/src/lib/aws/construct/graphql-api-lambda-with-cache/index.js +0 -18
- package/dist/src/lib/aws/construct/graphql-api-lambda-with-cache/main.d.ts +0 -57
- package/dist/src/lib/aws/construct/graphql-api-lambda-with-cache/main.js +0 -137
- package/dist/src/lib/aws/construct/graphql-api-lambda-with-cache/types.d.ts +0 -12
- package/dist/src/lib/aws/construct/graphql-api-lambda-with-cache/types.js +0 -2
- package/src/lib/aws/construct/graphql-api-lambda/index.ts +0 -2
- package/src/lib/aws/construct/graphql-api-lambda/main.ts +0 -244
- package/src/lib/aws/construct/graphql-api-lambda/types.ts +0 -27
- package/src/lib/aws/construct/graphql-api-lambda-with-cache/index.ts +0 -2
- package/src/lib/aws/construct/graphql-api-lambda-with-cache/main.ts +0 -147
- package/src/lib/aws/construct/graphql-api-lambda-with-cache/types.ts +0 -13
|
@@ -4,8 +4,6 @@ export * from './api-to-eventbridge-target-with-sns';
|
|
|
4
4
|
export * from './api-to-lambda-target';
|
|
5
5
|
export * from './application-configuration';
|
|
6
6
|
export * from './event-handler';
|
|
7
|
-
export * from './graphql-api-lambda';
|
|
8
|
-
export * from './graphql-api-lambda-with-cache';
|
|
9
7
|
export * from './lambda-with-iam-access';
|
|
10
8
|
export * from './piped-event-handler';
|
|
11
9
|
export * from './rest-api-lambda';
|
|
@@ -20,8 +20,6 @@ __exportStar(require("./api-to-eventbridge-target-with-sns"), exports);
|
|
|
20
20
|
__exportStar(require("./api-to-lambda-target"), exports);
|
|
21
21
|
__exportStar(require("./application-configuration"), exports);
|
|
22
22
|
__exportStar(require("./event-handler"), exports);
|
|
23
|
-
__exportStar(require("./graphql-api-lambda"), exports);
|
|
24
|
-
__exportStar(require("./graphql-api-lambda-with-cache"), exports);
|
|
25
23
|
__exportStar(require("./lambda-with-iam-access"), exports);
|
|
26
24
|
__exportStar(require("./piped-event-handler"), exports);
|
|
27
25
|
__exportStar(require("./rest-api-lambda"), exports);
|
|
@@ -93,8 +93,4 @@ export declare abstract class RestApiLambda extends CommonConstruct {
|
|
|
93
93
|
* @summary Method to create route53 records for RestApi
|
|
94
94
|
*/
|
|
95
95
|
protected createApiRouteAssets(): void;
|
|
96
|
-
/**
|
|
97
|
-
* @summary Method to deploy the changes to the RestApi
|
|
98
|
-
*/
|
|
99
|
-
protected createRestApiDeployment(): void;
|
|
100
96
|
}
|
|
@@ -63,7 +63,6 @@ class RestApiLambda extends common_1.CommonConstruct {
|
|
|
63
63
|
this.createApiDomain();
|
|
64
64
|
this.createApiBasePathMapping();
|
|
65
65
|
this.createApiRouteAssets();
|
|
66
|
-
this.createRestApiDeployment();
|
|
67
66
|
}
|
|
68
67
|
/**
|
|
69
68
|
* @summary Method to resolve secrets from SecretsManager
|
|
@@ -174,11 +173,5 @@ class RestApiLambda extends common_1.CommonConstruct {
|
|
|
174
173
|
createApiRouteAssets() {
|
|
175
174
|
this.route53Manager.createApiGatewayARecord(`${this.id}-custom-domain-a-record`, this, this.props.apiSubDomain, this.restApiDomain, this.restApiHostedZone, this.props.skipStageForARecords);
|
|
176
175
|
}
|
|
177
|
-
/**
|
|
178
|
-
* @summary Method to deploy the changes to the RestApi
|
|
179
|
-
*/
|
|
180
|
-
createRestApiDeployment() {
|
|
181
|
-
this.apiManager.createApiDeployment(`${this.id}-deployment`, this, this.restApi);
|
|
182
|
-
}
|
|
183
176
|
}
|
|
184
177
|
exports.RestApiLambda = RestApiLambda;
|
|
@@ -142,11 +142,8 @@ class EcsManager {
|
|
|
142
142
|
if (props.healthCheck) {
|
|
143
143
|
fargateService.targetGroup.configureHealthCheck({
|
|
144
144
|
...props.healthCheck,
|
|
145
|
-
enabled: props.healthCheck.enabled ?? true,
|
|
146
145
|
interval: props.healthCheck.interval ?? aws_cdk_lib_1.Duration.seconds(props.healthCheck.intervalInSecs),
|
|
147
|
-
path: props.healthCheck.path ?? '/',
|
|
148
146
|
timeout: props.healthCheck.timeout ?? aws_cdk_lib_1.Duration.seconds(props.healthCheck.timeoutInSecs),
|
|
149
|
-
unhealthyThresholdCount: props.healthCheck.unhealthyThresholdCount,
|
|
150
147
|
});
|
|
151
148
|
}
|
|
152
149
|
return fargateService;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ScalingSchedule } from 'aws-cdk-lib/aws-applicationautoscaling';
|
|
2
|
-
import { AwsLogDriverProps, ClusterProps, MountPoint, TaskDefinitionProps } from 'aws-cdk-lib/aws-ecs';
|
|
2
|
+
import { AwsLogDriverProps, ClusterProps, HealthCheck as FargateHealthCheck, MountPoint, TaskDefinitionProps } from 'aws-cdk-lib/aws-ecs';
|
|
3
3
|
import { ApplicationLoadBalancedFargateServiceProps } from 'aws-cdk-lib/aws-ecs-patterns';
|
|
4
4
|
import { HealthCheck as ElbHealthCheck } from 'aws-cdk-lib/aws-elasticloadbalancingv2';
|
|
5
5
|
import { TagProps } from '../../types';
|
|
@@ -28,10 +28,17 @@ export interface HealthCheck extends ElbHealthCheck {
|
|
|
28
28
|
intervalInSecs: number;
|
|
29
29
|
timeoutInSecs: number;
|
|
30
30
|
}
|
|
31
|
+
/**
|
|
32
|
+
*
|
|
33
|
+
*/
|
|
34
|
+
export interface EcsApplicationLoadBalancedFargateServiceHealthCheck extends FargateHealthCheck {
|
|
35
|
+
intervalInSecs: number;
|
|
36
|
+
timeoutInSecs: number;
|
|
37
|
+
}
|
|
31
38
|
/**
|
|
32
39
|
*/
|
|
33
40
|
export interface EcsApplicationLoadBalancedFargateServiceProps extends ApplicationLoadBalancedFargateServiceProps {
|
|
34
|
-
healthCheck?:
|
|
41
|
+
healthCheck?: EcsApplicationLoadBalancedFargateServiceHealthCheck;
|
|
35
42
|
logging?: AwsLogDriverProps;
|
|
36
43
|
mountPoints?: MountPoint[];
|
|
37
44
|
siteScaling?: EcsScalingProps;
|
|
@@ -75,9 +75,8 @@ export declare class LambdaManager {
|
|
|
75
75
|
* @param accessPoint
|
|
76
76
|
* @param mountPath
|
|
77
77
|
* @param vpcSubnets
|
|
78
|
-
* @param layers
|
|
79
78
|
*/
|
|
80
|
-
createLambdaDockerFunction(id: string, scope: CommonConstruct, props: LambdaProps, role: Role | CfnRole, code: DockerImageCode, environment?: any, vpc?: IVpc, securityGroups?: ISecurityGroup[], accessPoint?: IAccessPoint, mountPath?: string, vpcSubnets?: SubnetSelection
|
|
79
|
+
createLambdaDockerFunction(id: string, scope: CommonConstruct, props: LambdaProps, role: Role | CfnRole, code: DockerImageCode, environment?: any, vpc?: IVpc, securityGroups?: ISecurityGroup[], accessPoint?: IAccessPoint, mountPath?: string, vpcSubnets?: SubnetSelection): DockerImageFunction;
|
|
81
80
|
/**
|
|
82
81
|
* @summary Method to create a lambda function Alias
|
|
83
82
|
* @param id scoped id of the resource
|
|
@@ -8,6 +8,7 @@ const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
|
8
8
|
const aws_iam_1 = require("aws-cdk-lib/aws-iam");
|
|
9
9
|
const aws_lambda_1 = require("aws-cdk-lib/aws-lambda");
|
|
10
10
|
const aws_lambda_event_sources_1 = require("aws-cdk-lib/aws-lambda-event-sources");
|
|
11
|
+
const aws_logs_1 = require("aws-cdk-lib/aws-logs");
|
|
11
12
|
const lodash_1 = __importDefault(require("lodash"));
|
|
12
13
|
const common_1 = require("../../common");
|
|
13
14
|
const utils_1 = require("../../utils");
|
|
@@ -79,8 +80,9 @@ class LambdaManager {
|
|
|
79
80
|
const redriveQueue = scope.sqsManager.createRedriveQueueForLambda(`${id}-rdq`, scope, props);
|
|
80
81
|
deadLetterQueue = scope.sqsManager.createDeadLetterQueueForLambda(`${id}-dlq`, scope, props, redriveQueue);
|
|
81
82
|
}
|
|
83
|
+
const { logRetention, ...lambdaProps } = props;
|
|
82
84
|
const lambdaFunction = new aws_lambda_1.Function(scope, `${id}`, {
|
|
83
|
-
...
|
|
85
|
+
...lambdaProps,
|
|
84
86
|
allowPublicSubnet: !!vpc,
|
|
85
87
|
architecture: props.architecture ?? aws_lambda_1.Architecture.ARM_64,
|
|
86
88
|
code,
|
|
@@ -98,7 +100,11 @@ class LambdaManager {
|
|
|
98
100
|
functionName,
|
|
99
101
|
handler: handler || 'index.lambda_handler',
|
|
100
102
|
layers,
|
|
101
|
-
|
|
103
|
+
logGroup: new aws_logs_1.LogGroup(scope, `${id}-log-group`, {
|
|
104
|
+
logGroupName: `/aws/lambda/${functionName}`,
|
|
105
|
+
removalPolicy: aws_cdk_lib_1.RemovalPolicy.DESTROY,
|
|
106
|
+
retention: scope.props.logRetention ?? logRetention,
|
|
107
|
+
}),
|
|
102
108
|
reservedConcurrentExecutions: props.reservedConcurrentExecutions ?? scope.props.defaultReservedLambdaConcurrentExecutions,
|
|
103
109
|
role: role instanceof aws_iam_1.Role ? role : undefined,
|
|
104
110
|
runtime: props.runtime ?? scope.props.nodejsRuntime ?? common_1.CommonStack.NODEJS_RUNTIME,
|
|
@@ -167,9 +173,8 @@ class LambdaManager {
|
|
|
167
173
|
* @param accessPoint
|
|
168
174
|
* @param mountPath
|
|
169
175
|
* @param vpcSubnets
|
|
170
|
-
* @param layers
|
|
171
176
|
*/
|
|
172
|
-
createLambdaDockerFunction(id, scope, props, role, code, environment, vpc, securityGroups, accessPoint, mountPath, vpcSubnets
|
|
177
|
+
createLambdaDockerFunction(id, scope, props, role, code, environment, vpc, securityGroups, accessPoint, mountPath, vpcSubnets) {
|
|
173
178
|
if (!props)
|
|
174
179
|
throw `Lambda props undefined for ${id}`;
|
|
175
180
|
const functionName = `${props.functionName}-${scope.props.stage}`;
|
|
@@ -178,8 +183,9 @@ class LambdaManager {
|
|
|
178
183
|
const redriveQueue = scope.sqsManager.createRedriveQueueForLambda(`${id}-rdq`, scope, props);
|
|
179
184
|
deadLetterQueue = scope.sqsManager.createDeadLetterQueueForLambda(`${id}-dlq`, scope, props, redriveQueue);
|
|
180
185
|
}
|
|
186
|
+
const { logRetention, ...lambdaProps } = props;
|
|
181
187
|
const lambdaFunction = new aws_lambda_1.DockerImageFunction(scope, `${id}`, {
|
|
182
|
-
...
|
|
188
|
+
...lambdaProps,
|
|
183
189
|
allowPublicSubnet: !!vpc,
|
|
184
190
|
architecture: props.architecture ?? aws_lambda_1.Architecture.ARM_64,
|
|
185
191
|
code,
|
|
@@ -195,8 +201,11 @@ class LambdaManager {
|
|
|
195
201
|
},
|
|
196
202
|
filesystem: accessPoint ? aws_lambda_1.FileSystem.fromEfsAccessPoint(accessPoint, mountPath || '/mnt/msg') : undefined,
|
|
197
203
|
functionName,
|
|
198
|
-
|
|
199
|
-
|
|
204
|
+
logGroup: new aws_logs_1.LogGroup(scope, `${id}-log-group`, {
|
|
205
|
+
logGroupName: `/aws/lambda/${functionName}`,
|
|
206
|
+
removalPolicy: aws_cdk_lib_1.RemovalPolicy.DESTROY,
|
|
207
|
+
retention: scope.props.logRetention ?? logRetention,
|
|
208
|
+
}),
|
|
200
209
|
role: role instanceof aws_iam_1.Role ? role : undefined,
|
|
201
210
|
securityGroups: securityGroups,
|
|
202
211
|
timeout: props.timeoutInSecs ? aws_cdk_lib_1.Duration.seconds(props.timeoutInSecs) : aws_cdk_lib_1.Duration.minutes(1),
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@gradientedge/cdk-utils",
|
|
3
|
-
"version": "8.
|
|
3
|
+
"version": "8.161.0",
|
|
4
4
|
"description": "Utilities for AWS CDK provisioning",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"engines": {
|
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
"cz": "npx cz",
|
|
34
34
|
"docs": "npx rimraf api-docs && pnpm override:plugin:docs && npx jsdoc --pedantic -c jsdoc.json .",
|
|
35
35
|
"fix": "pnpm prettify && eslint --fix **/*.ts",
|
|
36
|
-
"lint": "pnpm prettify && eslint **/*.ts --cache --max-warnings=0",
|
|
36
|
+
"lint": "pnpm prettify && eslint **/*.ts --cache --max-warnings=0 --no-warn-ignored",
|
|
37
37
|
"override:plugin:docs": "cp theme/type-converter.js node_modules/better-docs/typescript",
|
|
38
38
|
"prettier": "npx prettier --cache --check \"**/*.{ts,json,md}\"",
|
|
39
39
|
"prettify": "npx prettier --cache --write \"**/*.{ts,json,md}\"",
|
|
@@ -47,19 +47,19 @@
|
|
|
47
47
|
}
|
|
48
48
|
},
|
|
49
49
|
"dependencies": {
|
|
50
|
-
"@aws-sdk/client-secrets-manager": "^3.
|
|
51
|
-
"@aws-sdk/credential-providers": "^3.
|
|
52
|
-
"@aws-sdk/types": "^3.
|
|
53
|
-
"@cdktf/provider-aws": "^19.
|
|
54
|
-
"@cdktf/provider-azurerm": "^12.
|
|
55
|
-
"@cdktf/provider-cloudflare": "^11.
|
|
56
|
-
"@types/lodash": "^4.
|
|
57
|
-
"@types/node": "^20.
|
|
58
|
-
"@types/uuid": "^9.0.
|
|
50
|
+
"@aws-sdk/client-secrets-manager": "^3.554.0",
|
|
51
|
+
"@aws-sdk/credential-providers": "^3.554.0",
|
|
52
|
+
"@aws-sdk/types": "^3.535.0",
|
|
53
|
+
"@cdktf/provider-aws": "^19.14.0",
|
|
54
|
+
"@cdktf/provider-azurerm": "^12.12.0",
|
|
55
|
+
"@cdktf/provider-cloudflare": "^11.7.0",
|
|
56
|
+
"@types/lodash": "^4.17.0",
|
|
57
|
+
"@types/node": "^20.12.7",
|
|
58
|
+
"@types/uuid": "^9.0.8",
|
|
59
59
|
"app-root-path": "^3.1.0",
|
|
60
|
-
"aws-cdk-lib": "^2.
|
|
61
|
-
"cdktf": "^0.20.
|
|
62
|
-
"cdktf-local-exec": "^0.5.
|
|
60
|
+
"aws-cdk-lib": "^2.137.0",
|
|
61
|
+
"cdktf": "^0.20.7",
|
|
62
|
+
"cdktf-local-exec": "^0.5.13",
|
|
63
63
|
"constructs": "^10.3.0",
|
|
64
64
|
"lodash": "^4.17.21",
|
|
65
65
|
"moment": "^2.30.1",
|
|
@@ -69,23 +69,23 @@
|
|
|
69
69
|
"uuid": "^9.0.1"
|
|
70
70
|
},
|
|
71
71
|
"devDependencies": {
|
|
72
|
-
"@babel/core": "^7.
|
|
73
|
-
"@babel/eslint-parser": "^7.
|
|
72
|
+
"@babel/core": "^7.24.4",
|
|
73
|
+
"@babel/eslint-parser": "^7.24.1",
|
|
74
74
|
"@babel/plugin-proposal-class-properties": "^7.18.6",
|
|
75
|
-
"@types/jest": "^29.5.
|
|
76
|
-
"@typescript-eslint/eslint-plugin": "^
|
|
77
|
-
"@typescript-eslint/parser": "^
|
|
78
|
-
"aws-cdk": "^2.
|
|
75
|
+
"@types/jest": "^29.5.12",
|
|
76
|
+
"@typescript-eslint/eslint-plugin": "^7.7.0",
|
|
77
|
+
"@typescript-eslint/parser": "^7.7.0",
|
|
78
|
+
"aws-cdk": "^2.137.0",
|
|
79
79
|
"better-docs": "^2.7.3",
|
|
80
80
|
"codecov": "^3.8.3",
|
|
81
81
|
"commitizen": "^4.3.0",
|
|
82
82
|
"docdash": "^2.0.2",
|
|
83
|
-
"dotenv": "^16.
|
|
84
|
-
"eslint": "^
|
|
83
|
+
"dotenv": "^16.4.5",
|
|
84
|
+
"eslint": "^9.0.0",
|
|
85
85
|
"eslint-config-prettier": "^9.1.0",
|
|
86
86
|
"eslint-plugin-import": "^2.29.1",
|
|
87
|
-
"eslint-plugin-jsdoc": "^48.
|
|
88
|
-
"husky": "^
|
|
87
|
+
"eslint-plugin-jsdoc": "^48.2.3",
|
|
88
|
+
"husky": "^9.0.11",
|
|
89
89
|
"jest": "^29.7.0",
|
|
90
90
|
"jest-extended": "^4.0.2",
|
|
91
91
|
"jest-junit": "^16.0.0",
|
|
@@ -93,15 +93,15 @@
|
|
|
93
93
|
"jsdoc-babel": "^0.5.0",
|
|
94
94
|
"jsdoc-mermaid": "^1.0.0",
|
|
95
95
|
"jsdoc-plugin-typescript": "^2.2.1",
|
|
96
|
-
"jsdoc-to-markdown": "^8.0.
|
|
97
|
-
"prettier": "^3.2.
|
|
96
|
+
"jsdoc-to-markdown": "^8.0.1",
|
|
97
|
+
"prettier": "^3.2.5",
|
|
98
98
|
"prettier-plugin-organize-imports": "^3.2.4",
|
|
99
99
|
"rimraf": "^5.0.5",
|
|
100
|
-
"semantic-release": "^23.0.
|
|
100
|
+
"semantic-release": "^23.0.8",
|
|
101
101
|
"taffydb": "^2.7.3",
|
|
102
|
-
"ts-jest": "^29.1.
|
|
102
|
+
"ts-jest": "^29.1.2",
|
|
103
103
|
"ts-node": "^10.9.2",
|
|
104
|
-
"typescript": "5.
|
|
104
|
+
"typescript": "5.4.5"
|
|
105
105
|
},
|
|
106
106
|
"optionalDependencies": {
|
|
107
107
|
"prop-types": "^15.8.1",
|
|
@@ -4,8 +4,6 @@ export * from './api-to-eventbridge-target-with-sns'
|
|
|
4
4
|
export * from './api-to-lambda-target'
|
|
5
5
|
export * from './application-configuration'
|
|
6
6
|
export * from './event-handler'
|
|
7
|
-
export * from './graphql-api-lambda'
|
|
8
|
-
export * from './graphql-api-lambda-with-cache'
|
|
9
7
|
export * from './lambda-with-iam-access'
|
|
10
8
|
export * from './piped-event-handler'
|
|
11
9
|
export * from './rest-api-lambda'
|
|
@@ -68,7 +68,6 @@ export abstract class RestApiLambda extends CommonConstruct {
|
|
|
68
68
|
this.createApiDomain()
|
|
69
69
|
this.createApiBasePathMapping()
|
|
70
70
|
this.createApiRouteAssets()
|
|
71
|
-
this.createRestApiDeployment()
|
|
72
71
|
}
|
|
73
72
|
|
|
74
73
|
/**
|
|
@@ -244,11 +243,4 @@ export abstract class RestApiLambda extends CommonConstruct {
|
|
|
244
243
|
this.props.skipStageForARecords
|
|
245
244
|
)
|
|
246
245
|
}
|
|
247
|
-
|
|
248
|
-
/**
|
|
249
|
-
* @summary Method to deploy the changes to the RestApi
|
|
250
|
-
*/
|
|
251
|
-
protected createRestApiDeployment() {
|
|
252
|
-
this.apiManager.createApiDeployment(`${this.id}-deployment`, this, this.restApi)
|
|
253
|
-
}
|
|
254
246
|
}
|
|
@@ -180,11 +180,8 @@ export class EcsManager {
|
|
|
180
180
|
if (props.healthCheck) {
|
|
181
181
|
fargateService.targetGroup.configureHealthCheck({
|
|
182
182
|
...props.healthCheck,
|
|
183
|
-
enabled: props.healthCheck.enabled ?? true,
|
|
184
183
|
interval: props.healthCheck.interval ?? Duration.seconds(props.healthCheck.intervalInSecs),
|
|
185
|
-
path: props.healthCheck.path ?? '/',
|
|
186
184
|
timeout: props.healthCheck.timeout ?? Duration.seconds(props.healthCheck.timeoutInSecs),
|
|
187
|
-
unhealthyThresholdCount: props.healthCheck.unhealthyThresholdCount,
|
|
188
185
|
})
|
|
189
186
|
}
|
|
190
187
|
|
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
import { ScalingSchedule } from 'aws-cdk-lib/aws-applicationautoscaling'
|
|
2
|
-
import {
|
|
2
|
+
import {
|
|
3
|
+
AwsLogDriverProps,
|
|
4
|
+
ClusterProps,
|
|
5
|
+
HealthCheck as FargateHealthCheck,
|
|
6
|
+
MountPoint,
|
|
7
|
+
TaskDefinitionProps,
|
|
8
|
+
} from 'aws-cdk-lib/aws-ecs'
|
|
3
9
|
import { ApplicationLoadBalancedFargateServiceProps } from 'aws-cdk-lib/aws-ecs-patterns'
|
|
4
10
|
import { HealthCheck as ElbHealthCheck } from 'aws-cdk-lib/aws-elasticloadbalancingv2'
|
|
5
11
|
import { TagProps } from '../../types'
|
|
@@ -33,10 +39,18 @@ export interface HealthCheck extends ElbHealthCheck {
|
|
|
33
39
|
timeoutInSecs: number
|
|
34
40
|
}
|
|
35
41
|
|
|
42
|
+
/**
|
|
43
|
+
*
|
|
44
|
+
*/
|
|
45
|
+
export interface EcsApplicationLoadBalancedFargateServiceHealthCheck extends FargateHealthCheck {
|
|
46
|
+
intervalInSecs: number
|
|
47
|
+
timeoutInSecs: number
|
|
48
|
+
}
|
|
49
|
+
|
|
36
50
|
/**
|
|
37
51
|
*/
|
|
38
52
|
export interface EcsApplicationLoadBalancedFargateServiceProps extends ApplicationLoadBalancedFargateServiceProps {
|
|
39
|
-
healthCheck?:
|
|
53
|
+
healthCheck?: EcsApplicationLoadBalancedFargateServiceHealthCheck
|
|
40
54
|
logging?: AwsLogDriverProps
|
|
41
55
|
mountPoints?: MountPoint[]
|
|
42
56
|
siteScaling?: EcsScalingProps
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Duration, Tags } from 'aws-cdk-lib'
|
|
1
|
+
import { Duration, RemovalPolicy, Tags } from 'aws-cdk-lib'
|
|
2
2
|
import { ISecurityGroup, IVpc, SubnetSelection } from 'aws-cdk-lib/aws-ec2'
|
|
3
3
|
import { IAccessPoint } from 'aws-cdk-lib/aws-efs'
|
|
4
4
|
import { CfnRole, Role } from 'aws-cdk-lib/aws-iam'
|
|
@@ -15,6 +15,7 @@ import {
|
|
|
15
15
|
LayerVersion,
|
|
16
16
|
} from 'aws-cdk-lib/aws-lambda'
|
|
17
17
|
import { SqsEventSource } from 'aws-cdk-lib/aws-lambda-event-sources'
|
|
18
|
+
import { LogGroup } from 'aws-cdk-lib/aws-logs'
|
|
18
19
|
import _ from 'lodash'
|
|
19
20
|
import { CommonConstruct, CommonStack } from '../../common'
|
|
20
21
|
import { createCfnOutput } from '../../utils'
|
|
@@ -116,8 +117,10 @@ export class LambdaManager {
|
|
|
116
117
|
deadLetterQueue = scope.sqsManager.createDeadLetterQueueForLambda(`${id}-dlq`, scope, props, redriveQueue)
|
|
117
118
|
}
|
|
118
119
|
|
|
120
|
+
const { logRetention, ...lambdaProps } = props
|
|
121
|
+
|
|
119
122
|
const lambdaFunction = new Function(scope, `${id}`, {
|
|
120
|
-
...
|
|
123
|
+
...lambdaProps,
|
|
121
124
|
allowPublicSubnet: !!vpc,
|
|
122
125
|
architecture: props.architecture ?? Architecture.ARM_64,
|
|
123
126
|
code,
|
|
@@ -139,7 +142,11 @@ export class LambdaManager {
|
|
|
139
142
|
functionName,
|
|
140
143
|
handler: handler || 'index.lambda_handler',
|
|
141
144
|
layers,
|
|
142
|
-
|
|
145
|
+
logGroup: new LogGroup(scope, `${id}-log-group`, {
|
|
146
|
+
logGroupName: `/aws/lambda/${functionName}`,
|
|
147
|
+
removalPolicy: RemovalPolicy.DESTROY,
|
|
148
|
+
retention: scope.props.logRetention ?? logRetention,
|
|
149
|
+
}),
|
|
143
150
|
reservedConcurrentExecutions:
|
|
144
151
|
props.reservedConcurrentExecutions ?? scope.props.defaultReservedLambdaConcurrentExecutions,
|
|
145
152
|
role: role instanceof Role ? role : undefined,
|
|
@@ -243,7 +250,6 @@ export class LambdaManager {
|
|
|
243
250
|
* @param accessPoint
|
|
244
251
|
* @param mountPath
|
|
245
252
|
* @param vpcSubnets
|
|
246
|
-
* @param layers
|
|
247
253
|
*/
|
|
248
254
|
public createLambdaDockerFunction(
|
|
249
255
|
id: string,
|
|
@@ -256,8 +262,7 @@ export class LambdaManager {
|
|
|
256
262
|
securityGroups?: ISecurityGroup[],
|
|
257
263
|
accessPoint?: IAccessPoint,
|
|
258
264
|
mountPath?: string,
|
|
259
|
-
vpcSubnets?: SubnetSelection
|
|
260
|
-
layers?: ILayerVersion[]
|
|
265
|
+
vpcSubnets?: SubnetSelection
|
|
261
266
|
) {
|
|
262
267
|
if (!props) throw `Lambda props undefined for ${id}`
|
|
263
268
|
|
|
@@ -269,8 +274,10 @@ export class LambdaManager {
|
|
|
269
274
|
deadLetterQueue = scope.sqsManager.createDeadLetterQueueForLambda(`${id}-dlq`, scope, props, redriveQueue)
|
|
270
275
|
}
|
|
271
276
|
|
|
277
|
+
const { logRetention, ...lambdaProps } = props
|
|
278
|
+
|
|
272
279
|
const lambdaFunction = new DockerImageFunction(scope, `${id}`, {
|
|
273
|
-
...
|
|
280
|
+
...lambdaProps,
|
|
274
281
|
allowPublicSubnet: !!vpc,
|
|
275
282
|
architecture: props.architecture ?? Architecture.ARM_64,
|
|
276
283
|
code,
|
|
@@ -290,8 +297,11 @@ export class LambdaManager {
|
|
|
290
297
|
},
|
|
291
298
|
filesystem: accessPoint ? FileSystem.fromEfsAccessPoint(accessPoint, mountPath || '/mnt/msg') : undefined,
|
|
292
299
|
functionName,
|
|
293
|
-
|
|
294
|
-
|
|
300
|
+
logGroup: new LogGroup(scope, `${id}-log-group`, {
|
|
301
|
+
logGroupName: `/aws/lambda/${functionName}`,
|
|
302
|
+
removalPolicy: RemovalPolicy.DESTROY,
|
|
303
|
+
retention: scope.props.logRetention ?? logRetention,
|
|
304
|
+
}),
|
|
295
305
|
role: role instanceof Role ? role : undefined,
|
|
296
306
|
securityGroups: securityGroups,
|
|
297
307
|
timeout: props.timeoutInSecs ? Duration.seconds(props.timeoutInSecs) : Duration.minutes(1),
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
-
};
|
|
16
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
__exportStar(require("./main"), exports);
|
|
18
|
-
__exportStar(require("./types"), exports);
|
|
@@ -1,96 +0,0 @@
|
|
|
1
|
-
import { BasePathMapping, DomainName, RestApi } from 'aws-cdk-lib/aws-apigateway';
|
|
2
|
-
import { ICertificate } from 'aws-cdk-lib/aws-certificatemanager';
|
|
3
|
-
import { PolicyDocument, Role } from 'aws-cdk-lib/aws-iam';
|
|
4
|
-
import { IFunction, ILayerVersion } from 'aws-cdk-lib/aws-lambda';
|
|
5
|
-
import { IHostedZone } from 'aws-cdk-lib/aws-route53';
|
|
6
|
-
import { ISecret } from 'aws-cdk-lib/aws-secretsmanager';
|
|
7
|
-
import { Construct } from 'constructs';
|
|
8
|
-
import { CommonConstruct } from '../../common';
|
|
9
|
-
import { GraphQlApiLambdaEnvironment, GraphQlApiLambdaProps } from './types';
|
|
10
|
-
/**
|
|
11
|
-
* @deprecated Use RestApiLambda instead. This will be removed in a future release.
|
|
12
|
-
* @classdesc Provides a construct to create and deploy a Graphql API as Lambda
|
|
13
|
-
*
|
|
14
|
-
* <b>Architecture</b><br/> 
|
|
15
|
-
* @example
|
|
16
|
-
* import { GraphQLApiLambda, GraphQlApiLambdaProps } '@gradientedge/cdk-utils'
|
|
17
|
-
* import { Construct } from 'constructs'
|
|
18
|
-
*
|
|
19
|
-
* class CustomConstruct extends GraphQLApiLambda {
|
|
20
|
-
* constructor(parent: Construct, id: string, props: GraphQlApiLambdaProps) {
|
|
21
|
-
* super(parent, id, props)
|
|
22
|
-
* this.props = props
|
|
23
|
-
* this.id = id
|
|
24
|
-
* this.initResources()
|
|
25
|
-
* }
|
|
26
|
-
* }
|
|
27
|
-
*/
|
|
28
|
-
export declare class GraphQLApiLambda extends CommonConstruct {
|
|
29
|
-
props: GraphQlApiLambdaProps;
|
|
30
|
-
id: string;
|
|
31
|
-
applicationSecrets: ISecret[];
|
|
32
|
-
graphQLApiLambdaPolicy: PolicyDocument;
|
|
33
|
-
graphQLApiLambdaRole: Role;
|
|
34
|
-
graphQLApiLambdaEnvironment: GraphQlApiLambdaEnvironment;
|
|
35
|
-
graphQLApiLambdaLayers: ILayerVersion[];
|
|
36
|
-
graphQLApiLambdaFunction: IFunction;
|
|
37
|
-
graphQLApi: RestApi;
|
|
38
|
-
graphQLApiHostedZone: IHostedZone;
|
|
39
|
-
graphQLApiCertificate: ICertificate;
|
|
40
|
-
graphQLApiDomain: DomainName;
|
|
41
|
-
graphQLApiBasePathMappings: BasePathMapping[];
|
|
42
|
-
constructor(parent: Construct, id: string, props: GraphQlApiLambdaProps);
|
|
43
|
-
/**
|
|
44
|
-
* @summary Initialise and provision resources
|
|
45
|
-
*/
|
|
46
|
-
protected initResources(): void;
|
|
47
|
-
/**
|
|
48
|
-
* @summary Method to resolve secrets from SecretsManager
|
|
49
|
-
* - To be implemented in the overriding method in the implementation class
|
|
50
|
-
*/
|
|
51
|
-
protected resolveSecrets(): void;
|
|
52
|
-
/**
|
|
53
|
-
* @summary Method to resolve a hosted zone based on domain attributes
|
|
54
|
-
*/
|
|
55
|
-
protected resolveHostedZone(): void;
|
|
56
|
-
/**
|
|
57
|
-
* @summary Method to resolve a certificate based on attributes
|
|
58
|
-
*/
|
|
59
|
-
protected resolveCertificate(): void;
|
|
60
|
-
/**
|
|
61
|
-
* @summary Method to create iam policy for GraphQL Lambda function
|
|
62
|
-
*/
|
|
63
|
-
protected createLambdaPolicy(): void;
|
|
64
|
-
/**
|
|
65
|
-
* @summary Method to create iam role for GraphQL Lambda function
|
|
66
|
-
*/
|
|
67
|
-
protected createLambdaRole(): void;
|
|
68
|
-
/**
|
|
69
|
-
* @summary Method to create environment variables for GraphQL Lambda function
|
|
70
|
-
*/
|
|
71
|
-
protected createLambdaEnvironment(): void;
|
|
72
|
-
/**
|
|
73
|
-
* @summary Method to create layers for GraphQL Lambda function
|
|
74
|
-
*/
|
|
75
|
-
protected createLambdaLayers(): void;
|
|
76
|
-
/**
|
|
77
|
-
* @summary Method to create lambda function for GraphQL
|
|
78
|
-
*/
|
|
79
|
-
protected createLambdaFunction(): void;
|
|
80
|
-
/**
|
|
81
|
-
* @summary Method to create rest restApi for GraphQL
|
|
82
|
-
*/
|
|
83
|
-
protected createRestApi(): void;
|
|
84
|
-
/**
|
|
85
|
-
* @summary Method to create custom restApi domain for GraphQL API
|
|
86
|
-
*/
|
|
87
|
-
protected createApiDomain(): void;
|
|
88
|
-
/**
|
|
89
|
-
* @summary Method to create base path mappings for GraphQL API
|
|
90
|
-
*/
|
|
91
|
-
protected createApiBasePathMapping(): void;
|
|
92
|
-
/**
|
|
93
|
-
* @summary Method to create route53 records for GraphQL API
|
|
94
|
-
*/
|
|
95
|
-
protected createApiRouteAssets(): void;
|
|
96
|
-
}
|