@gradientedge/cdk-utils 8.158.0 → 8.160.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.js +13 -4
- 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 +15 -4
- 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;
|
|
@@ -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,10 @@ 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
|
+
retention: scope.props.logRetention ?? logRetention,
|
|
106
|
+
}),
|
|
102
107
|
reservedConcurrentExecutions: props.reservedConcurrentExecutions ?? scope.props.defaultReservedLambdaConcurrentExecutions,
|
|
103
108
|
role: role instanceof aws_iam_1.Role ? role : undefined,
|
|
104
109
|
runtime: props.runtime ?? scope.props.nodejsRuntime ?? common_1.CommonStack.NODEJS_RUNTIME,
|
|
@@ -177,8 +182,9 @@ class LambdaManager {
|
|
|
177
182
|
const redriveQueue = scope.sqsManager.createRedriveQueueForLambda(`${id}-rdq`, scope, props);
|
|
178
183
|
deadLetterQueue = scope.sqsManager.createDeadLetterQueueForLambda(`${id}-dlq`, scope, props, redriveQueue);
|
|
179
184
|
}
|
|
185
|
+
const { logRetention, ...lambdaProps } = props;
|
|
180
186
|
const lambdaFunction = new aws_lambda_1.DockerImageFunction(scope, `${id}`, {
|
|
181
|
-
...
|
|
187
|
+
...lambdaProps,
|
|
182
188
|
allowPublicSubnet: !!vpc,
|
|
183
189
|
architecture: props.architecture ?? aws_lambda_1.Architecture.ARM_64,
|
|
184
190
|
code,
|
|
@@ -194,7 +200,10 @@ class LambdaManager {
|
|
|
194
200
|
},
|
|
195
201
|
filesystem: accessPoint ? aws_lambda_1.FileSystem.fromEfsAccessPoint(accessPoint, mountPath || '/mnt/msg') : undefined,
|
|
196
202
|
functionName,
|
|
197
|
-
|
|
203
|
+
logGroup: new aws_logs_1.LogGroup(scope, `${id}-log-group`, {
|
|
204
|
+
logGroupName: `/aws/lambda/${functionName}`,
|
|
205
|
+
retention: scope.props.logRetention ?? logRetention,
|
|
206
|
+
}),
|
|
198
207
|
role: role instanceof aws_iam_1.Role ? role : undefined,
|
|
199
208
|
securityGroups: securityGroups,
|
|
200
209
|
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.160.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
|
|
@@ -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,10 @@ 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
|
+
retention: scope.props.logRetention ?? logRetention,
|
|
148
|
+
}),
|
|
143
149
|
reservedConcurrentExecutions:
|
|
144
150
|
props.reservedConcurrentExecutions ?? scope.props.defaultReservedLambdaConcurrentExecutions,
|
|
145
151
|
role: role instanceof Role ? role : undefined,
|
|
@@ -267,8 +273,10 @@ export class LambdaManager {
|
|
|
267
273
|
deadLetterQueue = scope.sqsManager.createDeadLetterQueueForLambda(`${id}-dlq`, scope, props, redriveQueue)
|
|
268
274
|
}
|
|
269
275
|
|
|
276
|
+
const { logRetention, ...lambdaProps } = props
|
|
277
|
+
|
|
270
278
|
const lambdaFunction = new DockerImageFunction(scope, `${id}`, {
|
|
271
|
-
...
|
|
279
|
+
...lambdaProps,
|
|
272
280
|
allowPublicSubnet: !!vpc,
|
|
273
281
|
architecture: props.architecture ?? Architecture.ARM_64,
|
|
274
282
|
code,
|
|
@@ -288,7 +296,10 @@ export class LambdaManager {
|
|
|
288
296
|
},
|
|
289
297
|
filesystem: accessPoint ? FileSystem.fromEfsAccessPoint(accessPoint, mountPath || '/mnt/msg') : undefined,
|
|
290
298
|
functionName,
|
|
291
|
-
|
|
299
|
+
logGroup: new LogGroup(scope, `${id}-log-group`, {
|
|
300
|
+
logGroupName: `/aws/lambda/${functionName}`,
|
|
301
|
+
retention: scope.props.logRetention ?? logRetention,
|
|
302
|
+
}),
|
|
292
303
|
role: role instanceof Role ? role : undefined,
|
|
293
304
|
securityGroups: securityGroups,
|
|
294
305
|
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
|
-
}
|