@sylvesterllc/aws-constructs 1.1.18 → 1.1.20

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.
@@ -0,0 +1,8 @@
1
+ import { Construct } from "constructs";
2
+ import { LambdaProps } from "../interfaces/lambda";
3
+ import { NodejsFunction } from "aws-cdk-lib/aws-lambda-nodejs";
4
+ export declare class BasicLambda extends Construct {
5
+ private env;
6
+ readonly lambdaFunction: NodejsFunction;
7
+ constructor(scope: Construct, id: string, props: LambdaProps, env: string);
8
+ }
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BasicLambda = void 0;
4
+ const constructs_1 = require("constructs");
5
+ const create_basic_lambda_helper_js_1 = require("../resources/lambda/create-basic-lambda-helper.js");
6
+ class BasicLambda extends constructs_1.Construct {
7
+ env;
8
+ lambdaFunction;
9
+ constructor(scope, id, props, env) {
10
+ super(scope, id);
11
+ this.env = env;
12
+ this.lambdaFunction = (0, create_basic_lambda_helper_js_1.createBasicLambda)(scope, props);
13
+ }
14
+ }
15
+ exports.BasicLambda = BasicLambda;
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQmFzaWNMYW1iZGEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29uc3RydWN0cy9CYXNpY0xhbWJkYS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwyQ0FBdUM7QUFFdkMscUdBQXNGO0FBR3RGLE1BQWEsV0FBWSxTQUFRLHNCQUFTO0lBTzlCO0lBTk0sY0FBYyxDQUFpQjtJQUUvQyxZQUNFLEtBQWdCLEVBQ2hCLEVBQVUsRUFDVixLQUFrQixFQUNWLEdBQVc7UUFFbkIsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUZULFFBQUcsR0FBSCxHQUFHLENBQVE7UUFJbkIsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFBLGlEQUFpQixFQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztJQUN4RCxDQUFDO0NBQ0Y7QUFiRCxrQ0FhQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XHJcbmltcG9ydCB7IExhbWJkYVByb3BzIH0gZnJvbSBcIi4uL2ludGVyZmFjZXMvbGFtYmRhXCI7XHJcbmltcG9ydCB7IGNyZWF0ZUJhc2ljTGFtYmRhIH0gZnJvbSBcIi4uL3Jlc291cmNlcy9sYW1iZGEvY3JlYXRlLWJhc2ljLWxhbWJkYS1oZWxwZXIuanNcIjtcclxuaW1wb3J0IHsgTm9kZWpzRnVuY3Rpb24gfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWxhbWJkYS1ub2RlanNcIjtcclxuXHJcbmV4cG9ydCBjbGFzcyBCYXNpY0xhbWJkYSBleHRlbmRzIENvbnN0cnVjdCB7XHJcbiAgcHVibGljIHJlYWRvbmx5IGxhbWJkYUZ1bmN0aW9uOiBOb2RlanNGdW5jdGlvbjtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBzY29wZTogQ29uc3RydWN0LFxyXG4gICAgaWQ6IHN0cmluZyxcclxuICAgIHByb3BzOiBMYW1iZGFQcm9wcyxcclxuICAgIHByaXZhdGUgZW52OiBzdHJpbmdcclxuICApIHtcclxuICAgIHN1cGVyKHNjb3BlLCBpZCk7XHJcblxyXG4gICAgdGhpcy5sYW1iZGFGdW5jdGlvbiA9IGNyZWF0ZUJhc2ljTGFtYmRhKHNjb3BlLCBwcm9wcyk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -2,3 +2,4 @@ export { MicroService } from "./MicroService";
2
2
  export { TsgAuthorizerType } from "../config/types/TsgAuthorizerType";
3
3
  export { DynamoDbSingleTable } from "./DynamoDbSingleTable";
4
4
  export { TimerJob } from "./timer-job";
5
+ export { BasicLambda } from "./BasicLambda";
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.TimerJob = exports.DynamoDbSingleTable = exports.TsgAuthorizerType = exports.MicroService = void 0;
3
+ exports.BasicLambda = exports.TimerJob = exports.DynamoDbSingleTable = exports.TsgAuthorizerType = exports.MicroService = void 0;
4
4
  var MicroService_1 = require("./MicroService");
5
5
  Object.defineProperty(exports, "MicroService", { enumerable: true, get: function () { return MicroService_1.MicroService; } });
6
6
  var TsgAuthorizerType_1 = require("../config/types/TsgAuthorizerType");
@@ -9,4 +9,6 @@ var DynamoDbSingleTable_1 = require("./DynamoDbSingleTable");
9
9
  Object.defineProperty(exports, "DynamoDbSingleTable", { enumerable: true, get: function () { return DynamoDbSingleTable_1.DynamoDbSingleTable; } });
10
10
  var timer_job_1 = require("./timer-job");
11
11
  Object.defineProperty(exports, "TimerJob", { enumerable: true, get: function () { return timer_job_1.TimerJob; } });
12
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29uc3RydWN0cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwrQ0FBOEM7QUFBckMsNEdBQUEsWUFBWSxPQUFBO0FBQ3JCLHVFQUFzRTtBQUE3RCxzSEFBQSxpQkFBaUIsT0FBQTtBQUMxQiw2REFBNEQ7QUFBbkQsMEhBQUEsbUJBQW1CLE9BQUE7QUFDNUIseUNBQXVDO0FBQTlCLHFHQUFBLFFBQVEsT0FBQSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IE1pY3JvU2VydmljZSB9IGZyb20gXCIuL01pY3JvU2VydmljZVwiO1xyXG5leHBvcnQgeyBUc2dBdXRob3JpemVyVHlwZSB9IGZyb20gXCIuLi9jb25maWcvdHlwZXMvVHNnQXV0aG9yaXplclR5cGVcIjtcclxuZXhwb3J0IHsgRHluYW1vRGJTaW5nbGVUYWJsZSB9IGZyb20gXCIuL0R5bmFtb0RiU2luZ2xlVGFibGVcIjtcclxuZXhwb3J0IHsgVGltZXJKb2IgfSBmcm9tIFwiLi90aW1lci1qb2JcIjsiXX0=
12
+ var BasicLambda_1 = require("./BasicLambda");
13
+ Object.defineProperty(exports, "BasicLambda", { enumerable: true, get: function () { return BasicLambda_1.BasicLambda; } });
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29uc3RydWN0cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwrQ0FBOEM7QUFBckMsNEdBQUEsWUFBWSxPQUFBO0FBQ3JCLHVFQUFzRTtBQUE3RCxzSEFBQSxpQkFBaUIsT0FBQTtBQUMxQiw2REFBNEQ7QUFBbkQsMEhBQUEsbUJBQW1CLE9BQUE7QUFDNUIseUNBQXVDO0FBQTlCLHFHQUFBLFFBQVEsT0FBQTtBQUNqQiw2Q0FBNEM7QUFBbkMsMEdBQUEsV0FBVyxPQUFBIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgTWljcm9TZXJ2aWNlIH0gZnJvbSBcIi4vTWljcm9TZXJ2aWNlXCI7XHJcbmV4cG9ydCB7IFRzZ0F1dGhvcml6ZXJUeXBlIH0gZnJvbSBcIi4uL2NvbmZpZy90eXBlcy9Uc2dBdXRob3JpemVyVHlwZVwiO1xyXG5leHBvcnQgeyBEeW5hbW9EYlNpbmdsZVRhYmxlIH0gZnJvbSBcIi4vRHluYW1vRGJTaW5nbGVUYWJsZVwiO1xyXG5leHBvcnQgeyBUaW1lckpvYiB9IGZyb20gXCIuL3RpbWVyLWpvYlwiO1xyXG5leHBvcnQgeyBCYXNpY0xhbWJkYSB9IGZyb20gXCIuL0Jhc2ljTGFtYmRhXCI7XHJcbiJdfQ==
@@ -1,6 +1,8 @@
1
1
  import { Construct } from "constructs";
2
2
  import { TimerJobProps } from "../interfaces/timer-job";
3
+ import { NodejsFunction } from "aws-cdk-lib/aws-lambda-nodejs";
3
4
  export declare class TimerJob extends Construct {
4
5
  private env;
6
+ readonly lambdaFunction: NodejsFunction;
5
7
  constructor(scope: Construct, id: string, props: TimerJobProps, env: string);
6
8
  }
@@ -2,14 +2,15 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.TimerJob = void 0;
4
4
  const constructs_1 = require("constructs");
5
- const create_basic_lambda_1 = require("../resources/lambda/create-basic-lambda");
5
+ const create_basic_lambda_js_1 = require("../resources/lambda/create-basic-lambda.js");
6
6
  class TimerJob extends constructs_1.Construct {
7
7
  env;
8
+ lambdaFunction;
8
9
  constructor(scope, id, props, env) {
9
10
  super(scope, id);
10
11
  this.env = env;
11
- const createdLambda = (0, create_basic_lambda_1.createBasicLambdaTimerJob)(scope, props);
12
+ this.lambdaFunction = (0, create_basic_lambda_js_1.createBasicLambdaTimerJob)(scope, props);
12
13
  }
13
14
  }
14
15
  exports.TimerJob = TimerJob;
15
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZXItam9iLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbnN0cnVjdHMvdGltZXItam9iLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDJDQUF1QztBQUV2QyxpRkFBb0Y7QUFFcEYsTUFBYSxRQUFTLFNBQVEsc0JBQVM7SUFHdkI7SUFEWixZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQW9CLEVBQ2xELEdBQVc7UUFFbkIsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUZULFFBQUcsR0FBSCxHQUFHLENBQVE7UUFJbkIsTUFBTSxhQUFhLEdBQUcsSUFBQSwrQ0FBeUIsRUFBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFJbEUsQ0FBQztDQUNKO0FBWkQsNEJBWUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xyXG5pbXBvcnQgeyBUaW1lckpvYlByb3BzIH0gZnJvbSBcIi4uL2ludGVyZmFjZXMvdGltZXItam9iXCI7XHJcbmltcG9ydCB7IGNyZWF0ZUJhc2ljTGFtYmRhVGltZXJKb2IgfSBmcm9tIFwiLi4vcmVzb3VyY2VzL2xhbWJkYS9jcmVhdGUtYmFzaWMtbGFtYmRhXCI7XHJcblxyXG5leHBvcnQgY2xhc3MgVGltZXJKb2IgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBUaW1lckpvYlByb3BzLFxyXG4gICAgICAgIHByaXZhdGUgZW52OiBzdHJpbmcpIHtcclxuXHJcbiAgICAgICAgc3VwZXIoc2NvcGUsIGlkKTtcclxuXHJcbiAgICAgICAgY29uc3QgY3JlYXRlZExhbWJkYSA9IGNyZWF0ZUJhc2ljTGFtYmRhVGltZXJKb2Ioc2NvcGUsIHByb3BzKTtcclxuXHJcblxyXG5cclxuICAgIH1cclxufSJdfQ==
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZXItam9iLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbnN0cnVjdHMvdGltZXItam9iLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDJDQUF1QztBQUV2Qyx1RkFBdUY7QUFHdkYsTUFBYSxRQUFTLFNBQVEsc0JBQVM7SUFPM0I7SUFOTSxjQUFjLENBQWlCO0lBRS9DLFlBQ0UsS0FBZ0IsRUFDaEIsRUFBVSxFQUNWLEtBQW9CLEVBQ1osR0FBVztRQUVuQixLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRlQsUUFBRyxHQUFILEdBQUcsQ0FBUTtRQUluQixJQUFJLENBQUMsY0FBYyxHQUFHLElBQUEsa0RBQXlCLEVBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ2hFLENBQUM7Q0FDRjtBQWJELDRCQWFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcclxuaW1wb3J0IHsgVGltZXJKb2JQcm9wcyB9IGZyb20gXCIuLi9pbnRlcmZhY2VzL3RpbWVyLWpvYlwiO1xyXG5pbXBvcnQgeyBjcmVhdGVCYXNpY0xhbWJkYVRpbWVySm9iIH0gZnJvbSBcIi4uL3Jlc291cmNlcy9sYW1iZGEvY3JlYXRlLWJhc2ljLWxhbWJkYS5qc1wiO1xyXG5pbXBvcnQgeyBOb2RlanNGdW5jdGlvbiB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtbGFtYmRhLW5vZGVqc1wiO1xyXG5cclxuZXhwb3J0IGNsYXNzIFRpbWVySm9iIGV4dGVuZHMgQ29uc3RydWN0IHtcclxuICBwdWJsaWMgcmVhZG9ubHkgbGFtYmRhRnVuY3Rpb246IE5vZGVqc0Z1bmN0aW9uO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHNjb3BlOiBDb25zdHJ1Y3QsXHJcbiAgICBpZDogc3RyaW5nLFxyXG4gICAgcHJvcHM6IFRpbWVySm9iUHJvcHMsXHJcbiAgICBwcml2YXRlIGVudjogc3RyaW5nXHJcbiAgKSB7XHJcbiAgICBzdXBlcihzY29wZSwgaWQpO1xyXG5cclxuICAgIHRoaXMubGFtYmRhRnVuY3Rpb24gPSBjcmVhdGVCYXNpY0xhbWJkYVRpbWVySm9iKHNjb3BlLCBwcm9wcyk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
package/dist/index.d.ts CHANGED
@@ -4,3 +4,5 @@ export { IAppConfig } from "./config/customConfigs/IAppConfig";
4
4
  export { MicroServiceAppConfig } from "./config/MicroserviceAppConfig";
5
5
  export { TsgAuthorizerType } from "./config/types/TsgAuthorizerType";
6
6
  export * from "./interfaces/timer-job/index";
7
+ export * from "./interfaces/lambda/index";
8
+ export * from "./constructs/index";
package/dist/index.js CHANGED
@@ -22,4 +22,6 @@ Object.defineProperty(exports, "MicroServiceAppConfig", { enumerable: true, get:
22
22
  var TsgAuthorizerType_1 = require("./config/types/TsgAuthorizerType");
23
23
  Object.defineProperty(exports, "TsgAuthorizerType", { enumerable: true, get: function () { return TsgAuthorizerType_1.TsgAuthorizerType; } });
24
24
  __exportStar(require("./interfaces/timer-job/index"), exports);
25
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwwREFBeUQ7QUFBaEQsNEdBQUEsWUFBWSxPQUFBO0FBR3JCLHdFQUF1RTtBQUE5RCw4SEFBQSxxQkFBcUIsT0FBQTtBQUM5QixzRUFBcUU7QUFBNUQsc0hBQUEsaUJBQWlCLE9BQUE7QUFDMUIsK0RBQTZDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgTWljcm9TZXJ2aWNlIH0gZnJvbSBcIi4vY29uc3RydWN0cy9NaWNyb1NlcnZpY2VcIjtcclxuZXhwb3J0IHsgTWljcm9zZXJ2aWNlUHJvcHMgfSBmcm9tIFwiLi9pbnRlcmZhY2VzL01pY3Jvc2VydmljZVByb3BzXCI7XHJcbmV4cG9ydCB7IElBcHBDb25maWcgfSBmcm9tIFwiLi9jb25maWcvY3VzdG9tQ29uZmlncy9JQXBwQ29uZmlnXCI7XHJcbmV4cG9ydCB7IE1pY3JvU2VydmljZUFwcENvbmZpZyB9IGZyb20gXCIuL2NvbmZpZy9NaWNyb3NlcnZpY2VBcHBDb25maWdcIjtcclxuZXhwb3J0IHsgVHNnQXV0aG9yaXplclR5cGUgfSBmcm9tIFwiLi9jb25maWcvdHlwZXMvVHNnQXV0aG9yaXplclR5cGVcIjtcclxuZXhwb3J0ICogZnJvbSBcIi4vaW50ZXJmYWNlcy90aW1lci1qb2IvaW5kZXhcIjsiXX0=
25
+ __exportStar(require("./interfaces/lambda/index"), exports);
26
+ __exportStar(require("./constructs/index"), exports);
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwwREFBeUQ7QUFBaEQsNEdBQUEsWUFBWSxPQUFBO0FBR3JCLHdFQUF1RTtBQUE5RCw4SEFBQSxxQkFBcUIsT0FBQTtBQUM5QixzRUFBcUU7QUFBNUQsc0hBQUEsaUJBQWlCLE9BQUE7QUFDMUIsK0RBQTZDO0FBQzdDLDREQUEwQztBQUMxQyxxREFBbUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBNaWNyb1NlcnZpY2UgfSBmcm9tIFwiLi9jb25zdHJ1Y3RzL01pY3JvU2VydmljZVwiO1xyXG5leHBvcnQgeyBNaWNyb3NlcnZpY2VQcm9wcyB9IGZyb20gXCIuL2ludGVyZmFjZXMvTWljcm9zZXJ2aWNlUHJvcHNcIjtcclxuZXhwb3J0IHsgSUFwcENvbmZpZyB9IGZyb20gXCIuL2NvbmZpZy9jdXN0b21Db25maWdzL0lBcHBDb25maWdcIjtcclxuZXhwb3J0IHsgTWljcm9TZXJ2aWNlQXBwQ29uZmlnIH0gZnJvbSBcIi4vY29uZmlnL01pY3Jvc2VydmljZUFwcENvbmZpZ1wiO1xyXG5leHBvcnQgeyBUc2dBdXRob3JpemVyVHlwZSB9IGZyb20gXCIuL2NvbmZpZy90eXBlcy9Uc2dBdXRob3JpemVyVHlwZVwiO1xyXG5leHBvcnQgKiBmcm9tIFwiLi9pbnRlcmZhY2VzL3RpbWVyLWpvYi9pbmRleFwiO1xyXG5leHBvcnQgKiBmcm9tIFwiLi9pbnRlcmZhY2VzL2xhbWJkYS9pbmRleFwiO1xyXG5leHBvcnQgKiBmcm9tIFwiLi9jb25zdHJ1Y3RzL2luZGV4XCI7XHJcbiJdfQ==
@@ -0,0 +1 @@
1
+ export { LambdaProps } from "./lambda-props";
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaW50ZXJmYWNlcy9sYW1iZGEvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IExhbWJkYVByb3BzIH0gZnJvbSBcIi4vbGFtYmRhLXByb3BzXCI7XHJcbiJdfQ==
@@ -0,0 +1,14 @@
1
+ import { IRole } from "aws-cdk-lib/aws-iam/lib";
2
+ export interface LambdaProps {
3
+ functionName: string;
4
+ appPrefix?: string;
5
+ codePath?: string;
6
+ memory?: number;
7
+ envs?: Record<string, string>;
8
+ role?: IRole;
9
+ dynamoTableNames?: string[];
10
+ lambdaLayerArn?: string[];
11
+ projectRoot?: string;
12
+ depsLockFilePath?: string;
13
+ timeoutInMinutes?: number;
14
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGFtYmRhLXByb3BzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2ludGVyZmFjZXMvbGFtYmRhL2xhbWJkYS1wcm9wcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSVJvbGUgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWlhbS9saWJcIjtcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgTGFtYmRhUHJvcHMge1xyXG4gIGZ1bmN0aW9uTmFtZTogc3RyaW5nO1xyXG4gIGFwcFByZWZpeD86IHN0cmluZztcclxuICBjb2RlUGF0aD86IHN0cmluZztcclxuICBtZW1vcnk/OiBudW1iZXI7XHJcbiAgZW52cz86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XHJcbiAgcm9sZT86IElSb2xlO1xyXG4gIGR5bmFtb1RhYmxlTmFtZXM/OiBzdHJpbmdbXTtcclxuICBsYW1iZGFMYXllckFybj86IHN0cmluZ1tdO1xyXG4gIHByb2plY3RSb290Pzogc3RyaW5nO1xyXG4gIGRlcHNMb2NrRmlsZVBhdGg/OiBzdHJpbmc7XHJcbiAgdGltZW91dEluTWludXRlcz86IG51bWJlcjtcclxufVxyXG4iXX0=
@@ -0,0 +1,4 @@
1
+ import { NodejsFunction } from "aws-cdk-lib/aws-lambda-nodejs";
2
+ import { LambdaProps } from "../../interfaces/lambda";
3
+ import { Construct } from "constructs";
4
+ export declare const createBasicLambda: (scope: Construct, props: LambdaProps) => NodejsFunction;
@@ -0,0 +1,62 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createBasicLambda = void 0;
4
+ const aws_cdk_lib_1 = require("aws-cdk-lib");
5
+ const aws_lambda_1 = require("aws-cdk-lib/aws-lambda");
6
+ const aws_lambda_nodejs_1 = require("aws-cdk-lib/aws-lambda-nodejs");
7
+ const aws_logs_1 = require("aws-cdk-lib/aws-logs");
8
+ const path = require("path");
9
+ const aws_dynamodb_1 = require("aws-cdk-lib/aws-dynamodb");
10
+ const createBasicLambda = (scope, props) => {
11
+ const lambdaProps = createBasicLambdaProps(props);
12
+ let lambdaFunction = new aws_lambda_nodejs_1.NodejsFunction(scope, `${props.appPrefix || ""}${props.functionName}`, lambdaProps);
13
+ grantAccessToDynamoTables(scope, lambdaFunction, props.dynamoTableNames);
14
+ addLambdaLayers(scope, lambdaFunction, props.lambdaLayerArn);
15
+ return lambdaFunction;
16
+ };
17
+ exports.createBasicLambda = createBasicLambda;
18
+ const createBasicLambdaProps = (props) => {
19
+ const lambdaProp = {
20
+ entry: props.codePath
21
+ ? path.join(props.codePath)
22
+ : path.join(`./resources/lambdas/${props.functionName}/main.mts`),
23
+ functionName: `${props.appPrefix ? `${props.appPrefix}-` : ""}${props.functionName}`,
24
+ handler: "main.ts",
25
+ logRetention: aws_logs_1.RetentionDays.TWO_WEEKS,
26
+ runtime: aws_lambda_1.Runtime.NODEJS_LATEST,
27
+ timeout: aws_cdk_lib_1.Duration.minutes(props.timeoutInMinutes ? props.timeoutInMinutes : 1),
28
+ memorySize: props.memory,
29
+ environment: {
30
+ ...props.envs,
31
+ },
32
+ bundling: {
33
+ minify: true,
34
+ target: `esnext`,
35
+ sourceMap: true,
36
+ sourceMapMode: aws_lambda_nodejs_1.SourceMapMode.EXTERNAL,
37
+ environment: {
38
+ ...props.envs,
39
+ },
40
+ },
41
+ role: props.role,
42
+ layers: undefined,
43
+ };
44
+ return lambdaProp;
45
+ };
46
+ const grantAccessToDynamoTables = (scope, lambda, tableNames) => {
47
+ if (tableNames && tableNames.length > 0) {
48
+ tableNames.forEach((tableName) => {
49
+ const table = aws_dynamodb_1.Table.fromTableName(scope, `${tableName}-table`, tableName);
50
+ table.grantReadWriteData(lambda);
51
+ });
52
+ }
53
+ };
54
+ const addLambdaLayers = (scope, lambda, layerArns) => {
55
+ if (layerArns && layerArns.length > 0) {
56
+ layerArns.forEach((arn, idx) => {
57
+ const layer = aws_lambda_1.LayerVersion.fromLayerVersionArn(scope, `common-layer-${idx}`, arn);
58
+ lambda.addLayers(layer);
59
+ });
60
+ }
61
+ };
62
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLWJhc2ljLWxhbWJkYS1oZWxwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcmVzb3VyY2VzL2xhbWJkYS9jcmVhdGUtYmFzaWMtbGFtYmRhLWhlbHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw2Q0FBdUM7QUFFdkMsdURBQStEO0FBQy9ELHFFQUl1QztBQUN2QyxtREFBcUQ7QUFDckQsNkJBQThCO0FBRzlCLDJEQUFpRDtBQUUxQyxNQUFNLGlCQUFpQixHQUFHLENBQy9CLEtBQWdCLEVBQ2hCLEtBQWtCLEVBQ0YsRUFBRTtJQUNsQixNQUFNLFdBQVcsR0FBRyxzQkFBc0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUVsRCxJQUFJLGNBQWMsR0FBRyxJQUFJLGtDQUFjLENBQ3JDLEtBQUssRUFDTCxHQUFHLEtBQUssQ0FBQyxTQUFTLElBQUksRUFBRSxHQUFHLEtBQUssQ0FBQyxZQUFZLEVBQUUsRUFDL0MsV0FBVyxDQUNaLENBQUM7SUFFRix5QkFBeUIsQ0FBQyxLQUFLLEVBQUUsY0FBYyxFQUFFLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBRXpFLGVBQWUsQ0FBQyxLQUFLLEVBQUUsY0FBYyxFQUFFLEtBQUssQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUU3RCxPQUFPLGNBQWMsQ0FBQztBQUN4QixDQUFDLENBQUM7QUFqQlcsUUFBQSxpQkFBaUIscUJBaUI1QjtBQUVGLE1BQU0sc0JBQXNCLEdBQUcsQ0FBQyxLQUFrQixFQUF1QixFQUFFO0lBQ3pFLE1BQU0sVUFBVSxHQUF3QjtRQUN0QyxLQUFLLEVBQUUsS0FBSyxDQUFDLFFBQVE7WUFDbkIsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQztZQUMzQixDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyx1QkFBdUIsS0FBSyxDQUFDLFlBQVksV0FBVyxDQUFDO1FBQ25FLFlBQVksRUFBRSxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQzNELEtBQUssQ0FBQyxZQUNSLEVBQUU7UUFDRixPQUFPLEVBQUUsU0FBUztRQUNsQixZQUFZLEVBQUUsd0JBQWEsQ0FBQyxTQUFTO1FBQ3JDLE9BQU8sRUFBRSxvQkFBTyxDQUFDLGFBQWE7UUFDOUIsT0FBTyxFQUFFLHNCQUFRLENBQUMsT0FBTyxDQUN2QixLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUNwRDtRQUNELFVBQVUsRUFBRSxLQUFLLENBQUMsTUFBTTtRQUN4QixXQUFXLEVBQUU7WUFDWCxHQUFHLEtBQUssQ0FBQyxJQUFJO1NBQ2Q7UUFDRCxRQUFRLEVBQUU7WUFDUixNQUFNLEVBQUUsSUFBSTtZQUNaLE1BQU0sRUFBRSxRQUFRO1lBQ2hCLFNBQVMsRUFBRSxJQUFJO1lBQ2YsYUFBYSxFQUFFLGlDQUFhLENBQUMsUUFBUTtZQUNyQyxXQUFXLEVBQUU7Z0JBQ1gsR0FBRyxLQUFLLENBQUMsSUFBSTthQUNkO1NBQ0Y7UUFDRCxJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUk7UUFDaEIsTUFBTSxFQUFFLFNBQVM7S0FDbEIsQ0FBQztJQUVGLE9BQU8sVUFBVSxDQUFDO0FBQ3BCLENBQUMsQ0FBQztBQUVGLE1BQU0seUJBQXlCLEdBQUcsQ0FDaEMsS0FBZ0IsRUFDaEIsTUFBc0IsRUFDdEIsVUFBcUIsRUFDckIsRUFBRTtJQUNGLElBQUksVUFBVSxJQUFJLFVBQVUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDeEMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFO1lBQy9CLE1BQU0sS0FBSyxHQUFHLG9CQUFLLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxHQUFHLFNBQVMsUUFBUSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1lBRTFFLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNuQyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7QUFDSCxDQUFDLENBQUM7QUFFRixNQUFNLGVBQWUsR0FBRyxDQUN0QixLQUFnQixFQUNoQixNQUFzQixFQUN0QixTQUFvQixFQUNwQixFQUFFO0lBQ0YsSUFBSSxTQUFTLElBQUksU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUN0QyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBVyxFQUFFLEdBQVcsRUFBRSxFQUFFO1lBQzdDLE1BQU0sS0FBSyxHQUFHLHlCQUFZLENBQUMsbUJBQW1CLENBQzVDLEtBQUssRUFDTCxnQkFBZ0IsR0FBRyxFQUFFLEVBQ3JCLEdBQUcsQ0FDSixDQUFDO1lBRUYsTUFBTSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMxQixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7QUFDSCxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEdXJhdGlvbiB9IGZyb20gXCJhd3MtY2RrLWxpYlwiO1xyXG5pbXBvcnQgeyBTZXJ2aWNlUHJpbmNpcGFsIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1pYW1cIjtcclxuaW1wb3J0IHsgTGF5ZXJWZXJzaW9uLCBSdW50aW1lIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1sYW1iZGFcIjtcclxuaW1wb3J0IHtcclxuICBOb2RlanNGdW5jdGlvbixcclxuICBOb2RlanNGdW5jdGlvblByb3BzLFxyXG4gIFNvdXJjZU1hcE1vZGUsXHJcbn0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1sYW1iZGEtbm9kZWpzXCI7XHJcbmltcG9ydCB7IFJldGVudGlvbkRheXMgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWxvZ3NcIjtcclxuaW1wb3J0IHBhdGggPSByZXF1aXJlKFwicGF0aFwiKTtcclxuaW1wb3J0IHsgTGFtYmRhUHJvcHMgfSBmcm9tIFwiLi4vLi4vaW50ZXJmYWNlcy9sYW1iZGFcIjtcclxuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcclxuaW1wb3J0IHsgVGFibGUgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWR5bmFtb2RiXCI7XHJcblxyXG5leHBvcnQgY29uc3QgY3JlYXRlQmFzaWNMYW1iZGEgPSAoXHJcbiAgc2NvcGU6IENvbnN0cnVjdCxcclxuICBwcm9wczogTGFtYmRhUHJvcHNcclxuKTogTm9kZWpzRnVuY3Rpb24gPT4ge1xyXG4gIGNvbnN0IGxhbWJkYVByb3BzID0gY3JlYXRlQmFzaWNMYW1iZGFQcm9wcyhwcm9wcyk7XHJcblxyXG4gIGxldCBsYW1iZGFGdW5jdGlvbiA9IG5ldyBOb2RlanNGdW5jdGlvbihcclxuICAgIHNjb3BlLFxyXG4gICAgYCR7cHJvcHMuYXBwUHJlZml4IHx8IFwiXCJ9JHtwcm9wcy5mdW5jdGlvbk5hbWV9YCxcclxuICAgIGxhbWJkYVByb3BzXHJcbiAgKTtcclxuXHJcbiAgZ3JhbnRBY2Nlc3NUb0R5bmFtb1RhYmxlcyhzY29wZSwgbGFtYmRhRnVuY3Rpb24sIHByb3BzLmR5bmFtb1RhYmxlTmFtZXMpO1xyXG5cclxuICBhZGRMYW1iZGFMYXllcnMoc2NvcGUsIGxhbWJkYUZ1bmN0aW9uLCBwcm9wcy5sYW1iZGFMYXllckFybik7XHJcblxyXG4gIHJldHVybiBsYW1iZGFGdW5jdGlvbjtcclxufTtcclxuXHJcbmNvbnN0IGNyZWF0ZUJhc2ljTGFtYmRhUHJvcHMgPSAocHJvcHM6IExhbWJkYVByb3BzKTogTm9kZWpzRnVuY3Rpb25Qcm9wcyA9PiB7XHJcbiAgY29uc3QgbGFtYmRhUHJvcDogTm9kZWpzRnVuY3Rpb25Qcm9wcyA9IHtcclxuICAgIGVudHJ5OiBwcm9wcy5jb2RlUGF0aFxyXG4gICAgICA/IHBhdGguam9pbihwcm9wcy5jb2RlUGF0aClcclxuICAgICAgOiBwYXRoLmpvaW4oYC4vcmVzb3VyY2VzL2xhbWJkYXMvJHtwcm9wcy5mdW5jdGlvbk5hbWV9L21haW4ubXRzYCksXHJcbiAgICBmdW5jdGlvbk5hbWU6IGAke3Byb3BzLmFwcFByZWZpeCA/IGAke3Byb3BzLmFwcFByZWZpeH0tYCA6IFwiXCJ9JHtcclxuICAgICAgcHJvcHMuZnVuY3Rpb25OYW1lXHJcbiAgICB9YCxcclxuICAgIGhhbmRsZXI6IFwibWFpbi50c1wiLFxyXG4gICAgbG9nUmV0ZW50aW9uOiBSZXRlbnRpb25EYXlzLlRXT19XRUVLUyxcclxuICAgIHJ1bnRpbWU6IFJ1bnRpbWUuTk9ERUpTX0xBVEVTVCxcclxuICAgIHRpbWVvdXQ6IER1cmF0aW9uLm1pbnV0ZXMoXHJcbiAgICAgIHByb3BzLnRpbWVvdXRJbk1pbnV0ZXMgPyBwcm9wcy50aW1lb3V0SW5NaW51dGVzIDogMVxyXG4gICAgKSxcclxuICAgIG1lbW9yeVNpemU6IHByb3BzLm1lbW9yeSxcclxuICAgIGVudmlyb25tZW50OiB7XHJcbiAgICAgIC4uLnByb3BzLmVudnMsXHJcbiAgICB9LFxyXG4gICAgYnVuZGxpbmc6IHtcclxuICAgICAgbWluaWZ5OiB0cnVlLFxyXG4gICAgICB0YXJnZXQ6IGBlc25leHRgLFxyXG4gICAgICBzb3VyY2VNYXA6IHRydWUsXHJcbiAgICAgIHNvdXJjZU1hcE1vZGU6IFNvdXJjZU1hcE1vZGUuRVhURVJOQUwsXHJcbiAgICAgIGVudmlyb25tZW50OiB7XHJcbiAgICAgICAgLi4ucHJvcHMuZW52cyxcclxuICAgICAgfSxcclxuICAgIH0sXHJcbiAgICByb2xlOiBwcm9wcy5yb2xlLFxyXG4gICAgbGF5ZXJzOiB1bmRlZmluZWQsXHJcbiAgfTtcclxuXHJcbiAgcmV0dXJuIGxhbWJkYVByb3A7XHJcbn07XHJcblxyXG5jb25zdCBncmFudEFjY2Vzc1RvRHluYW1vVGFibGVzID0gKFxyXG4gIHNjb3BlOiBDb25zdHJ1Y3QsXHJcbiAgbGFtYmRhOiBOb2RlanNGdW5jdGlvbixcclxuICB0YWJsZU5hbWVzPzogc3RyaW5nW11cclxuKSA9PiB7XHJcbiAgaWYgKHRhYmxlTmFtZXMgJiYgdGFibGVOYW1lcy5sZW5ndGggPiAwKSB7XHJcbiAgICB0YWJsZU5hbWVzLmZvckVhY2goKHRhYmxlTmFtZSkgPT4ge1xyXG4gICAgICBjb25zdCB0YWJsZSA9IFRhYmxlLmZyb21UYWJsZU5hbWUoc2NvcGUsIGAke3RhYmxlTmFtZX0tdGFibGVgLCB0YWJsZU5hbWUpO1xyXG5cclxuICAgICAgdGFibGUuZ3JhbnRSZWFkV3JpdGVEYXRhKGxhbWJkYSk7XHJcbiAgICB9KTtcclxuICB9XHJcbn07XHJcblxyXG5jb25zdCBhZGRMYW1iZGFMYXllcnMgPSAoXHJcbiAgc2NvcGU6IENvbnN0cnVjdCxcclxuICBsYW1iZGE6IE5vZGVqc0Z1bmN0aW9uLFxyXG4gIGxheWVyQXJucz86IHN0cmluZ1tdXHJcbikgPT4ge1xyXG4gIGlmIChsYXllckFybnMgJiYgbGF5ZXJBcm5zLmxlbmd0aCA+IDApIHtcclxuICAgIGxheWVyQXJucy5mb3JFYWNoKChhcm46IHN0cmluZywgaWR4OiBudW1iZXIpID0+IHtcclxuICAgICAgY29uc3QgbGF5ZXIgPSBMYXllclZlcnNpb24uZnJvbUxheWVyVmVyc2lvbkFybihcclxuICAgICAgICBzY29wZSxcclxuICAgICAgICBgY29tbW9uLWxheWVyLSR7aWR4fWAsXHJcbiAgICAgICAgYXJuXHJcbiAgICAgICk7XHJcblxyXG4gICAgICBsYW1iZGEuYWRkTGF5ZXJzKGxheWVyKTtcclxuICAgIH0pO1xyXG4gIH1cclxufTtcclxuIl19
@@ -1,3 +1,4 @@
1
+ import { NodejsFunction } from "aws-cdk-lib/aws-lambda-nodejs";
1
2
  import { TimerJobProps } from "../../interfaces/timer-job";
2
3
  import { Construct } from "constructs";
3
- export declare const createBasicLambdaTimerJob: (scope: Construct, props: TimerJobProps) => void;
4
+ export declare const createBasicLambdaTimerJob: (scope: Construct, props: TimerJobProps) => NodejsFunction;
@@ -19,19 +19,22 @@ const createBasicLambdaTimerJob = (scope, props) => {
19
19
  eventRule.addTarget(new aws_events_targets_1.LambdaFunction(lambdaFunction));
20
20
  grantAccessToDynamoTables(scope, lambdaFunction, props.dynamoTableNames);
21
21
  addLambdaLayers(scope, lambdaFunction, props.lambdaLayerArn);
22
+ return lambdaFunction;
22
23
  };
23
24
  exports.createBasicLambdaTimerJob = createBasicLambdaTimerJob;
24
25
  const createBasicLambdaProps = (props) => {
25
26
  const lambdaProp = {
26
- entry: (props.codePath) ? path.join(props.codePath) : path.join(`./resources/lambdas/timer-jobs/${props.functionName}/main.mts`),
27
- functionName: `${(props.appPrefix) ? `${props.appPrefix}-` : ''}${props.functionName}`,
28
- handler: 'main.ts',
27
+ entry: props.codePath
28
+ ? path.join(props.codePath)
29
+ : path.join(`./resources/lambdas/timer-jobs/${props.functionName}/main.mts`),
30
+ functionName: `${props.appPrefix ? `${props.appPrefix}-` : ""}${props.functionName}`,
31
+ handler: "main.ts",
29
32
  logRetention: aws_logs_1.RetentionDays.TWO_WEEKS,
30
33
  runtime: aws_lambda_1.Runtime.NODEJS_LATEST,
31
- timeout: aws_cdk_lib_1.Duration.minutes((props.timeoutInMinutes) ? props.timeoutInMinutes : 1),
34
+ timeout: aws_cdk_lib_1.Duration.minutes(props.timeoutInMinutes ? props.timeoutInMinutes : 1),
32
35
  memorySize: props.memory,
33
36
  environment: {
34
- ...props.envs
37
+ ...props.envs,
35
38
  },
36
39
  bundling: {
37
40
  minify: true,
@@ -39,11 +42,11 @@ const createBasicLambdaProps = (props) => {
39
42
  sourceMap: true,
40
43
  sourceMapMode: aws_lambda_nodejs_1.SourceMapMode.EXTERNAL,
41
44
  environment: {
42
- ...props.envs
43
- }
45
+ ...props.envs,
46
+ },
44
47
  },
45
48
  role: props.role,
46
- layers: undefined
49
+ layers: undefined,
47
50
  };
48
51
  return lambdaProp;
49
52
  };
@@ -53,14 +56,14 @@ const addInvokePermissionToLambdaForEvents = (lambda) => {
53
56
  });
54
57
  };
55
58
  const createEventRuleForLambda = (scope, lambda, options) => {
56
- const eventRule = new aws_events_1.Rule(scope, `scheduleRule-${lambda?.node.id || '010'}`, {
59
+ const eventRule = new aws_events_1.Rule(scope, `scheduleRule-${lambda?.node.id || "010"}`, {
57
60
  schedule: aws_events_1.Schedule.cron(options),
58
61
  });
59
62
  return eventRule;
60
63
  };
61
64
  const grantAccessToDynamoTables = (scope, lambda, tableNames) => {
62
65
  if (tableNames && tableNames.length > 0) {
63
- tableNames.forEach(tableName => {
66
+ tableNames.forEach((tableName) => {
64
67
  const table = aws_dynamodb_1.Table.fromTableName(scope, `${tableName}-table`, tableName);
65
68
  table.grantReadWriteData(lambda);
66
69
  });
@@ -74,4 +77,4 @@ const addLambdaLayers = (scope, lambda, layerArns) => {
74
77
  });
75
78
  }
76
79
  };
77
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLWJhc2ljLWxhbWJkYS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9yZXNvdXJjZXMvbGFtYmRhL2NyZWF0ZS1iYXNpYy1sYW1iZGEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkNBQXVDO0FBQ3ZDLGlEQUF1RDtBQUN2RCx1REFBK0Q7QUFDL0QscUVBQW1HO0FBQ25HLG1EQUFxRDtBQUNyRCw2QkFBOEI7QUFHOUIscUdBQW9GO0FBQ3BGLHVEQUFxRTtBQUNyRSx1RUFBZ0U7QUFDaEUsMkRBQWlEO0FBSTFDLE1BQU0seUJBQXlCLEdBQUcsQ0FBQyxLQUFnQixFQUFFLEtBQW9CLEVBQUUsRUFBRTtJQUVoRixNQUFNLFdBQVcsR0FBRyxzQkFBc0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUVsRCxJQUFJLGNBQWMsR0FBRyxJQUFJLGtDQUFjLENBQUMsS0FBSyxFQUFFLEdBQUcsS0FBSyxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUMsWUFBWSxFQUFFLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFFdkcsb0NBQW9DLENBQUMsY0FBYyxDQUFDLENBQUM7SUFFckQsTUFBTSxTQUFTLEdBQUcsd0JBQXdCLENBQUMsS0FBSyxFQUFFLGNBQWMsRUFBRSxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7SUFFckYsU0FBUyxDQUFDLFNBQVMsQ0FBQyxJQUFJLG1DQUFjLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQztJQUV4RCx5QkFBeUIsQ0FBQyxLQUFLLEVBQUUsY0FBYyxFQUFFLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBRXpFLGVBQWUsQ0FBQyxLQUFLLEVBQUUsY0FBYyxFQUFFLEtBQUssQ0FBQyxjQUFjLENBQUMsQ0FBQztBQUNqRSxDQUFDLENBQUM7QUFmVyxRQUFBLHlCQUF5Qiw2QkFlcEM7QUFFRixNQUFNLHNCQUFzQixHQUFHLENBQUMsS0FBb0IsRUFBRSxFQUFFO0lBRS9DLE1BQU0sVUFBVSxHQUF3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O1lBQzNDLE1BQU0sS0FBSyxHQUFHLHlCQUFZLENBQUMsbUJBQW1CLENBQUMsS0FBSyxFQUFFLGdCQUFnQixHQUFHLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQztZQUVsRixNQUFNLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRTVCLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztBQUNMLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IER1cmF0aW9uIH0gZnJvbSBcImF3cy1jZGstbGliXCI7XHJcbmltcG9ydCB7IFNlcnZpY2VQcmluY2lwYWwgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWlhbVwiO1xyXG5pbXBvcnQgeyBMYXllclZlcnNpb24sIFJ1bnRpbWUgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWxhbWJkYVwiO1xyXG5pbXBvcnQgeyBOb2RlanNGdW5jdGlvbiwgTm9kZWpzRnVuY3Rpb25Qcm9wcywgU291cmNlTWFwTW9kZSB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtbGFtYmRhLW5vZGVqc1wiO1xyXG5pbXBvcnQgeyBSZXRlbnRpb25EYXlzIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1sb2dzXCI7XHJcbmltcG9ydCBwYXRoID0gcmVxdWlyZShcInBhdGhcIik7XHJcbmltcG9ydCB7IFRpbWVySm9iUHJvcHMgfSBmcm9tIFwiLi4vLi4vaW50ZXJmYWNlcy90aW1lci1qb2JcIjtcclxuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcclxuaW1wb3J0IHsgU0VSVklDRV9QUklOQ0lQQUwgfSBmcm9tIFwiLi4vLi4vY29uc3RhbnRzL2F3cy1zZXJ2aWNlLXByaW5jaXBhbC1jb25zdGFudHNcIjtcclxuaW1wb3J0IHsgQ3Jvbk9wdGlvbnMsIFJ1bGUsIFNjaGVkdWxlIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1ldmVudHNcIjtcclxuaW1wb3J0IHsgTGFtYmRhRnVuY3Rpb24gfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWV2ZW50cy10YXJnZXRzXCI7XHJcbmltcG9ydCB7IFRhYmxlIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1keW5hbW9kYlwiO1xyXG5cclxuXHJcblxyXG5leHBvcnQgY29uc3QgY3JlYXRlQmFzaWNMYW1iZGFUaW1lckpvYiA9IChzY29wZTogQ29uc3RydWN0LCBwcm9wczogVGltZXJKb2JQcm9wcykgPT4ge1xyXG5cclxuICAgIGNvbnN0IGxhbWJkYVByb3BzID0gY3JlYXRlQmFzaWNMYW1iZGFQcm9wcyhwcm9wcyk7XHJcblxyXG4gICAgbGV0IGxhbWJkYUZ1bmN0aW9uID0gbmV3IE5vZGVqc0Z1bmN0aW9uKHNjb3BlLCBgJHtwcm9wcy5hcHBQcmVmaXh9JHtwcm9wcy5mdW5jdGlvbk5hbWV9YCwgbGFtYmRhUHJvcHMpO1xyXG5cclxuICAgIGFkZEludm9rZVBlcm1pc3Npb25Ub0xhbWJkYUZvckV2ZW50cyhsYW1iZGFGdW5jdGlvbik7XHJcblxyXG4gICAgY29uc3QgZXZlbnRSdWxlID0gY3JlYXRlRXZlbnRSdWxlRm9yTGFtYmRhKHNjb3BlLCBsYW1iZGFGdW5jdGlvbiwgcHJvcHMuY3Jvbk9wdGlvbnMpO1xyXG5cclxuICAgIGV2ZW50UnVsZS5hZGRUYXJnZXQobmV3IExhbWJkYUZ1bmN0aW9uKGxhbWJkYUZ1bmN0aW9uKSk7XHJcblxyXG4gICAgZ3JhbnRBY2Nlc3NUb0R5bmFtb1RhYmxlcyhzY29wZSwgbGFtYmRhRnVuY3Rpb24sIHByb3BzLmR5bmFtb1RhYmxlTmFtZXMpO1xyXG4gICBcclxuICAgIGFkZExhbWJkYUxheWVycyhzY29wZSwgbGFtYmRhRnVuY3Rpb24sIHByb3BzLmxhbWJkYUxheWVyQXJuKTtcclxufTtcclxuXHJcbmNvbnN0IGNyZWF0ZUJhc2ljTGFtYmRhUHJvcHMgPSAocHJvcHM6IFRpbWVySm9iUHJvcHMpID0+IHtcclxuXHJcbiAgICAgICAgIGNvbnN0IGxhbWJkYVByb3A6IE5vZGVqc0Z1bmN0aW9uUHJvcHMgPSB7XHJcbiAgICAgICAgICAgIGVudHJ5OiAocHJvcHMuY29kZVBhdGgpID8gcGF0aC5qb2luKHByb3BzLmNvZGVQYXRoKSA6IHBhdGguam9pbihgLi9yZXNvdXJjZXMvbGFtYmRhcy90aW1lci1qb2JzLyR7cHJvcHMuZnVuY3Rpb25OYW1lfS9tYWluLm10c2ApLFxyXG4gICAgICAgICAgICBmdW5jdGlvbk5hbWU6IGAkeyhwcm9wcy5hcHBQcmVmaXgpID8gYCR7cHJvcHMuYXBwUHJlZml4fS1gIDogJyd9JHtwcm9wcy5mdW5jdGlvbk5hbWV9YCxcclxuICAgICAgICAgICAgaGFuZGxlcjogJ21haW4udHMnLFxyXG4gICAgICAgICAgICBsb2dSZXRlbnRpb246IFJldGVudGlvbkRheXMuVFdPX1dFRUtTLFxyXG4gICAgICAgICAgICBydW50aW1lOiBSdW50aW1lLk5PREVKU19MQVRFU1QsXHJcbiAgICAgICAgICAgIHRpbWVvdXQ6IER1cmF0aW9uLm1pbnV0ZXMoKHByb3BzLnRpbWVvdXRJbk1pbnV0ZXMpID8gcHJvcHMudGltZW91dEluTWludXRlcyA6IDEpLFxyXG4gICAgICAgICAgICBtZW1vcnlTaXplOiBwcm9wcy5tZW1vcnksXHJcbiAgICAgICAgICAgIGVudmlyb25tZW50OiB7ICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgLi4ucHJvcHMuZW52c1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBidW5kbGluZzoge1xyXG4gICAgICAgICAgICAgICAgbWluaWZ5OiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgdGFyZ2V0OiBgZXNuZXh0YCxcclxuICAgICAgICAgICAgICAgIHNvdXJjZU1hcDogdHJ1ZSxcclxuICAgICAgICAgICAgICAgIHNvdXJjZU1hcE1vZGU6IFNvdXJjZU1hcE1vZGUuRVhURVJOQUwsXHJcbiAgICAgICAgICAgICAgICBlbnZpcm9ubWVudDoge1xyXG4gICAgICAgICAgICAgICAgICAgIC4uLnByb3BzLmVudnNcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICByb2xlOiBwcm9wcy5yb2xlLFxyXG4gICAgICAgICAgIGxheWVyczogdW5kZWZpbmVkXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gbGFtYmRhUHJvcDtcclxufTtcclxuXHJcbmNvbnN0IGFkZEludm9rZVBlcm1pc3Npb25Ub0xhbWJkYUZvckV2ZW50cyA9IChsYW1iZGE6IE5vZGVqc0Z1bmN0aW9uKSA9PiB7XHJcblxyXG4gICAgIGxhbWJkYS5hZGRQZXJtaXNzaW9uKGBJbnZva2VQZXJtaXNzaW9uLSR7bGFtYmRhLmZ1bmN0aW9uTmFtZX1gLCB7XHJcbiAgICAgICAgICAgIHByaW5jaXBhbDogbmV3IFNlcnZpY2VQcmluY2lwYWwoU0VSVklDRV9QUklOQ0lQQUwuRVZFTlRTKSxcclxuICAgICAgICB9KTtcclxufTtcclxuXHJcbmNvbnN0IGNyZWF0ZUV2ZW50UnVsZUZvckxhbWJkYSA9IChzY29wZTogQ29uc3RydWN0LCBsYW1iZGE6IE5vZGVqc0Z1bmN0aW9uLCBvcHRpb25zOiBDcm9uT3B0aW9ucykgPT4ge1xyXG4gICAgIFxyXG4gICAgY29uc3QgZXZlbnRSdWxlID0gbmV3IFJ1bGUoc2NvcGUsIGBzY2hlZHVsZVJ1bGUtJHtsYW1iZGE/Lm5vZGUuaWQgfHwgJzAxMCd9YCwge1xyXG4gICAgICAgICAgICBzY2hlZHVsZTogU2NoZWR1bGUuY3JvbihvcHRpb25zKSxcclxuICAgICB9KTtcclxuXHJcbiAgICByZXR1cm4gZXZlbnRSdWxlO1xyXG59O1xyXG5cclxuY29uc3QgZ3JhbnRBY2Nlc3NUb0R5bmFtb1RhYmxlcyA9IChzY29wZTogQ29uc3RydWN0LCBsYW1iZGE6IE5vZGVqc0Z1bmN0aW9uLCB0YWJsZU5hbWVzPzogc3RyaW5nW10pID0+IHtcclxuXHJcbiAgICBpZiAodGFibGVOYW1lcyAmJiB0YWJsZU5hbWVzLmxlbmd0aCA+IDApIHsgICAgICAgICAgICBcclxuXHJcbiAgICAgICAgICAgIHRhYmxlTmFtZXMuZm9yRWFjaCh0YWJsZU5hbWUgPT4ge1xyXG5cclxuICAgICAgICAgICAgICAgIGNvbnN0IHRhYmxlID0gVGFibGUuZnJvbVRhYmxlTmFtZShzY29wZSwgYCR7dGFibGVOYW1lfS10YWJsZWAsIHRhYmxlTmFtZSk7XHJcblxyXG4gICAgICAgICAgICAgICAgdGFibGUuZ3JhbnRSZWFkV3JpdGVEYXRhKGxhbWJkYSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIFxyXG4gICAgICAgICAgICBcclxuXHJcbiAgICAgICAgfVxyXG59O1xyXG5cclxuY29uc3QgYWRkTGFtYmRhTGF5ZXJzID0gKHNjb3BlOiBDb25zdHJ1Y3QsIGxhbWJkYTogTm9kZWpzRnVuY3Rpb24sIGxheWVyQXJucz86IHN0cmluZ1tdKSA9PiB7XHJcblxyXG4gICAgaWYgKGxheWVyQXJucyAmJiAgbGF5ZXJBcm5zLmxlbmd0aCA+IDApIHtcclxuICAgICAgICBsYXllckFybnMuZm9yRWFjaCgoYXJuOiBzdHJpbmcsIGlkeDogbnVtYmVyKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGxheWVyID0gTGF5ZXJWZXJzaW9uLmZyb21MYXllclZlcnNpb25Bcm4oc2NvcGUsIGBjb21tb24tbGF5ZXItJHtpZHh9YCwgYXJuKTtcclxuXHJcbiAgICAgICAgICAgIGxhbWJkYS5hZGRMYXllcnMobGF5ZXIpO1xyXG4gICAgICAgICAgICBcclxuICAgICAgICB9KTtcclxuICAgIH1cclxufTtcclxuIl19
80
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLWJhc2ljLWxhbWJkYS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9yZXNvdXJjZXMvbGFtYmRhL2NyZWF0ZS1iYXNpYy1sYW1iZGEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkNBQXVDO0FBQ3ZDLGlEQUF1RDtBQUN2RCx1REFBK0Q7QUFDL0QscUVBSXVDO0FBQ3ZDLG1EQUFxRDtBQUNyRCw2QkFBOEI7QUFHOUIscUdBQW9GO0FBQ3BGLHVEQUFxRTtBQUNyRSx1RUFBZ0U7QUFDaEUsMkRBQWlEO0FBRTFDLE1BQU0seUJBQXlCLEdBQUcsQ0FDdkMsS0FBZ0IsRUFDaEIsS0FBb0IsRUFDSixFQUFFO0lBQ2xCLE1BQU0sV0FBVyxHQUFHLHNCQUFzQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBRWxELElBQUksY0FBYyxHQUFHLElBQUksa0NBQWMsQ0FDckMsS0FBSyxFQUNMLEdBQUcsS0FBSyxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUMsWUFBWSxFQUFFLEVBQ3pDLFdBQVcsQ0FDWixDQUFDO0lBRUYsb0NBQW9DLENBQUMsY0FBYyxDQUFDLENBQUM7SUFFckQsTUFBTSxTQUFTLEdBQUcsd0JBQXdCLENBQ3hDLEtBQUssRUFDTCxjQUFjLEVBQ2QsS0FBSyxDQUFDLFdBQVcsQ0FDbEIsQ0FBQztJQUVGLFNBQVMsQ0FBQyxTQUFTLENBQUMsSUFBSSxtQ0FBYyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUM7SUFFeEQseUJBQXlCLENBQUMsS0FBSyxFQUFFLGNBQWMsRUFBRSxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUV6RSxlQUFlLENBQUMsS0FBSyxFQUFFLGNBQWMsRUFBRSxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUM7SUFFN0QsT0FBTyxjQUFjLENBQUM7QUFDeEIsQ0FBQyxDQUFDO0FBM0JXLFFBQUEseUJBQXlCLDZCQTJCcEM7QUFFRixNQUFNLHNCQUFzQixHQUFHLENBQUMsS0FBb0IsRUFB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R0FBVyxFQUFFLEVBQUU7WUFDN0MsTUFBTSxLQUFLLEdBQUcseUJBQVksQ0FBQyxtQkFBbUIsQ0FDNUMsS0FBSyxFQUNMLGdCQUFnQixHQUFHLEVBQUUsRUFDckIsR0FBRyxDQUNKLENBQUM7WUFFRixNQUFNLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzFCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztBQUNILENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IER1cmF0aW9uIH0gZnJvbSBcImF3cy1jZGstbGliXCI7XHJcbmltcG9ydCB7IFNlcnZpY2VQcmluY2lwYWwgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWlhbVwiO1xyXG5pbXBvcnQgeyBMYXllclZlcnNpb24sIFJ1bnRpbWUgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWxhbWJkYVwiO1xyXG5pbXBvcnQge1xyXG4gIE5vZGVqc0Z1bmN0aW9uLFxyXG4gIE5vZGVqc0Z1bmN0aW9uUHJvcHMsXHJcbiAgU291cmNlTWFwTW9kZSxcclxufSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWxhbWJkYS1ub2RlanNcIjtcclxuaW1wb3J0IHsgUmV0ZW50aW9uRGF5cyB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtbG9nc1wiO1xyXG5pbXBvcnQgcGF0aCA9IHJlcXVpcmUoXCJwYXRoXCIpO1xyXG5pbXBvcnQgeyBUaW1lckpvYlByb3BzIH0gZnJvbSBcIi4uLy4uL2ludGVyZmFjZXMvdGltZXItam9iXCI7XHJcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XHJcbmltcG9ydCB7IFNFUlZJQ0VfUFJJTkNJUEFMIH0gZnJvbSBcIi4uLy4uL2NvbnN0YW50cy9hd3Mtc2VydmljZS1wcmluY2lwYWwtY29uc3RhbnRzXCI7XHJcbmltcG9ydCB7IENyb25PcHRpb25zLCBSdWxlLCBTY2hlZHVsZSB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtZXZlbnRzXCI7XHJcbmltcG9ydCB7IExhbWJkYUZ1bmN0aW9uIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1ldmVudHMtdGFyZ2V0c1wiO1xyXG5pbXBvcnQgeyBUYWJsZSB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtZHluYW1vZGJcIjtcclxuXHJcbmV4cG9ydCBjb25zdCBjcmVhdGVCYXNpY0xhbWJkYVRpbWVySm9iID0gKFxyXG4gIHNjb3BlOiBDb25zdHJ1Y3QsXHJcbiAgcHJvcHM6IFRpbWVySm9iUHJvcHNcclxuKTogTm9kZWpzRnVuY3Rpb24gPT4ge1xyXG4gIGNvbnN0IGxhbWJkYVByb3BzID0gY3JlYXRlQmFzaWNMYW1iZGFQcm9wcyhwcm9wcyk7XHJcblxyXG4gIGxldCBsYW1iZGFGdW5jdGlvbiA9IG5ldyBOb2RlanNGdW5jdGlvbihcclxuICAgIHNjb3BlLFxyXG4gICAgYCR7cHJvcHMuYXBwUHJlZml4fSR7cHJvcHMuZnVuY3Rpb25OYW1lfWAsXHJcbiAgICBsYW1iZGFQcm9wc1xyXG4gICk7XHJcblxyXG4gIGFkZEludm9rZVBlcm1pc3Npb25Ub0xhbWJkYUZvckV2ZW50cyhsYW1iZGFGdW5jdGlvbik7XHJcblxyXG4gIGNvbnN0IGV2ZW50UnVsZSA9IGNyZWF0ZUV2ZW50UnVsZUZvckxhbWJkYShcclxuICAgIHNjb3BlLFxyXG4gICAgbGFtYmRhRnVuY3Rpb24sXHJcbiAgICBwcm9wcy5jcm9uT3B0aW9uc1xyXG4gICk7XHJcblxyXG4gIGV2ZW50UnVsZS5hZGRUYXJnZXQobmV3IExhbWJkYUZ1bmN0aW9uKGxhbWJkYUZ1bmN0aW9uKSk7XHJcblxyXG4gIGdyYW50QWNjZXNzVG9EeW5hbW9UYWJsZXMoc2NvcGUsIGxhbWJkYUZ1bmN0aW9uLCBwcm9wcy5keW5hbW9UYWJsZU5hbWVzKTtcclxuXHJcbiAgYWRkTGFtYmRhTGF5ZXJzKHNjb3BlLCBsYW1iZGFGdW5jdGlvbiwgcHJvcHMubGFtYmRhTGF5ZXJBcm4pO1xyXG5cclxuICByZXR1cm4gbGFtYmRhRnVuY3Rpb247XHJcbn07XHJcblxyXG5jb25zdCBjcmVhdGVCYXNpY0xhbWJkYVByb3BzID0gKHByb3BzOiBUaW1lckpvYlByb3BzKTogTm9kZWpzRnVuY3Rpb25Qcm9wcyA9PiB7XHJcbiAgY29uc3QgbGFtYmRhUHJvcDogTm9kZWpzRnVuY3Rpb25Qcm9wcyA9IHtcclxuICAgIGVudHJ5OiBwcm9wcy5jb2RlUGF0aFxyXG4gICAgICA/IHBhdGguam9pbihwcm9wcy5jb2RlUGF0aClcclxuICAgICAgOiBwYXRoLmpvaW4oXHJcbiAgICAgICAgICBgLi9yZXNvdXJjZXMvbGFtYmRhcy90aW1lci1qb2JzLyR7cHJvcHMuZnVuY3Rpb25OYW1lfS9tYWluLm10c2BcclxuICAgICAgICApLFxyXG4gICAgZnVuY3Rpb25OYW1lOiBgJHtwcm9wcy5hcHBQcmVmaXggPyBgJHtwcm9wcy5hcHBQcmVmaXh9LWAgOiBcIlwifSR7XHJcbiAgICAgIHByb3BzLmZ1bmN0aW9uTmFtZVxyXG4gICAgfWAsXHJcbiAgICBoYW5kbGVyOiBcIm1haW4udHNcIixcclxuICAgIGxvZ1JldGVudGlvbjogUmV0ZW50aW9uRGF5cy5UV09fV0VFS1MsXHJcbiAgICBydW50aW1lOiBSdW50aW1lLk5PREVKU19MQVRFU1QsXHJcbiAgICB0aW1lb3V0OiBEdXJhdGlvbi5taW51dGVzKFxyXG4gICAgICBwcm9wcy50aW1lb3V0SW5NaW51dGVzID8gcHJvcHMudGltZW91dEluTWludXRlcyA6IDFcclxuICAgICksXHJcbiAgICBtZW1vcnlTaXplOiBwcm9wcy5tZW1vcnksXHJcbiAgICBlbnZpcm9ubWVudDoge1xyXG4gICAgICAuLi5wcm9wcy5lbnZzLFxyXG4gICAgfSxcclxuICAgIGJ1bmRsaW5nOiB7XHJcbiAgICAgIG1pbmlmeTogdHJ1ZSxcclxuICAgICAgdGFyZ2V0OiBgZXNuZXh0YCxcclxuICAgICAgc291cmNlTWFwOiB0cnVlLFxyXG4gICAgICBzb3VyY2VNYXBNb2RlOiBTb3VyY2VNYXBNb2RlLkVYVEVSTkFMLFxyXG4gICAgICBlbnZpcm9ubWVudDoge1xyXG4gICAgICAgIC4uLnByb3BzLmVudnMsXHJcbiAgICAgIH0sXHJcbiAgICB9LFxyXG4gICAgcm9sZTogcHJvcHMucm9sZSxcclxuICAgIGxheWVyczogdW5kZWZpbmVkLFxyXG4gIH07XHJcblxyXG4gIHJldHVybiBsYW1iZGFQcm9wO1xyXG59O1xyXG5cclxuY29uc3QgYWRkSW52b2tlUGVybWlzc2lvblRvTGFtYmRhRm9yRXZlbnRzID0gKGxhbWJkYTogTm9kZWpzRnVuY3Rpb24pID0+IHtcclxuICBsYW1iZGEuYWRkUGVybWlzc2lvbihgSW52b2tlUGVybWlzc2lvbi0ke2xhbWJkYS5mdW5jdGlvbk5hbWV9YCwge1xyXG4gICAgcHJpbmNpcGFsOiBuZXcgU2VydmljZVByaW5jaXBhbChTRVJWSUNFX1BSSU5DSVBBTC5FVkVOVFMpLFxyXG4gIH0pO1xyXG59O1xyXG5cclxuY29uc3QgY3JlYXRlRXZlbnRSdWxlRm9yTGFtYmRhID0gKFxyXG4gIHNjb3BlOiBDb25zdHJ1Y3QsXHJcbiAgbGFtYmRhOiBOb2RlanNGdW5jdGlvbixcclxuICBvcHRpb25zOiBDcm9uT3B0aW9uc1xyXG4pID0+IHtcclxuICBjb25zdCBldmVudFJ1bGUgPSBuZXcgUnVsZShcclxuICAgIHNjb3BlLFxyXG4gICAgYHNjaGVkdWxlUnVsZS0ke2xhbWJkYT8ubm9kZS5pZCB8fCBcIjAxMFwifWAsXHJcbiAgICB7XHJcbiAgICAgIHNjaGVkdWxlOiBTY2hlZHVsZS5jcm9uKG9wdGlvbnMpLFxyXG4gICAgfVxyXG4gICk7XHJcblxyXG4gIHJldHVybiBldmVudFJ1bGU7XHJcbn07XHJcblxyXG5jb25zdCBncmFudEFjY2Vzc1RvRHluYW1vVGFibGVzID0gKFxyXG4gIHNjb3BlOiBDb25zdHJ1Y3QsXHJcbiAgbGFtYmRhOiBOb2RlanNGdW5jdGlvbixcclxuICB0YWJsZU5hbWVzPzogc3RyaW5nW11cclxuKSA9PiB7XHJcbiAgaWYgKHRhYmxlTmFtZXMgJiYgdGFibGVOYW1lcy5sZW5ndGggPiAwKSB7XHJcbiAgICB0YWJsZU5hbWVzLmZvckVhY2goKHRhYmxlTmFtZSkgPT4ge1xyXG4gICAgICBjb25zdCB0YWJsZSA9IFRhYmxlLmZyb21UYWJsZU5hbWUoc2NvcGUsIGAke3RhYmxlTmFtZX0tdGFibGVgLCB0YWJsZU5hbWUpO1xyXG5cclxuICAgICAgdGFibGUuZ3JhbnRSZWFkV3JpdGVEYXRhKGxhbWJkYSk7XHJcbiAgICB9KTtcclxuICB9XHJcbn07XHJcblxyXG5jb25zdCBhZGRMYW1iZGFMYXllcnMgPSAoXHJcbiAgc2NvcGU6IENvbnN0cnVjdCxcclxuICBsYW1iZGE6IE5vZGVqc0Z1bmN0aW9uLFxyXG4gIGxheWVyQXJucz86IHN0cmluZ1tdXHJcbikgPT4ge1xyXG4gIGlmIChsYXllckFybnMgJiYgbGF5ZXJBcm5zLmxlbmd0aCA+IDApIHtcclxuICAgIGxheWVyQXJucy5mb3JFYWNoKChhcm46IHN0cmluZywgaWR4OiBudW1iZXIpID0+IHtcclxuICAgICAgY29uc3QgbGF5ZXIgPSBMYXllclZlcnNpb24uZnJvbUxheWVyVmVyc2lvbkFybihcclxuICAgICAgICBzY29wZSxcclxuICAgICAgICBgY29tbW9uLWxheWVyLSR7aWR4fWAsXHJcbiAgICAgICAgYXJuXHJcbiAgICAgICk7XHJcblxyXG4gICAgICBsYW1iZGEuYWRkTGF5ZXJzKGxheWVyKTtcclxuICAgIH0pO1xyXG4gIH1cclxufTtcclxuIl19
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sylvesterllc/aws-constructs",
3
- "version": "1.1.18",
3
+ "version": "1.1.20",
4
4
  "description": "AWS Constructs",
5
5
  "main": "dist/index.js",
6
6
  "keywords": [
@@ -0,0 +1,19 @@
1
+ import { Construct } from "constructs";
2
+ import { LambdaProps } from "../interfaces/lambda";
3
+ import { createBasicLambda } from "../resources/lambda/create-basic-lambda-helper.js";
4
+ import { NodejsFunction } from "aws-cdk-lib/aws-lambda-nodejs";
5
+
6
+ export class BasicLambda extends Construct {
7
+ public readonly lambdaFunction: NodejsFunction;
8
+
9
+ constructor(
10
+ scope: Construct,
11
+ id: string,
12
+ props: LambdaProps,
13
+ private env: string
14
+ ) {
15
+ super(scope, id);
16
+
17
+ this.lambdaFunction = createBasicLambda(scope, props);
18
+ }
19
+ }
@@ -1,4 +1,5 @@
1
1
  export { MicroService } from "./MicroService";
2
2
  export { TsgAuthorizerType } from "../config/types/TsgAuthorizerType";
3
3
  export { DynamoDbSingleTable } from "./DynamoDbSingleTable";
4
- export { TimerJob } from "./timer-job";
4
+ export { TimerJob } from "./timer-job";
5
+ export { BasicLambda } from "./BasicLambda";
@@ -1,17 +1,19 @@
1
1
  import { Construct } from "constructs";
2
2
  import { TimerJobProps } from "../interfaces/timer-job";
3
- import { createBasicLambdaTimerJob } from "../resources/lambda/create-basic-lambda";
3
+ import { createBasicLambdaTimerJob } from "../resources/lambda/create-basic-lambda.js";
4
+ import { NodejsFunction } from "aws-cdk-lib/aws-lambda-nodejs";
4
5
 
5
6
  export class TimerJob extends Construct {
7
+ public readonly lambdaFunction: NodejsFunction;
6
8
 
7
- constructor(scope: Construct, id: string, props: TimerJobProps,
8
- private env: string) {
9
+ constructor(
10
+ scope: Construct,
11
+ id: string,
12
+ props: TimerJobProps,
13
+ private env: string
14
+ ) {
15
+ super(scope, id);
9
16
 
10
- super(scope, id);
11
-
12
- const createdLambda = createBasicLambdaTimerJob(scope, props);
13
-
14
-
15
-
16
- }
17
- }
17
+ this.lambdaFunction = createBasicLambdaTimerJob(scope, props);
18
+ }
19
+ }
package/src/index.ts CHANGED
@@ -3,4 +3,6 @@ export { MicroserviceProps } from "./interfaces/MicroserviceProps";
3
3
  export { IAppConfig } from "./config/customConfigs/IAppConfig";
4
4
  export { MicroServiceAppConfig } from "./config/MicroserviceAppConfig";
5
5
  export { TsgAuthorizerType } from "./config/types/TsgAuthorizerType";
6
- export * from "./interfaces/timer-job/index";
6
+ export * from "./interfaces/timer-job/index";
7
+ export * from "./interfaces/lambda/index";
8
+ export * from "./constructs/index";
@@ -0,0 +1 @@
1
+ export { LambdaProps } from "./lambda-props";
@@ -0,0 +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
+ }
@@ -0,0 +1,98 @@
1
+ import { Duration } from "aws-cdk-lib";
2
+ import { ServicePrincipal } from "aws-cdk-lib/aws-iam";
3
+ import { LayerVersion, Runtime } from "aws-cdk-lib/aws-lambda";
4
+ import {
5
+ NodejsFunction,
6
+ NodejsFunctionProps,
7
+ SourceMapMode,
8
+ } from "aws-cdk-lib/aws-lambda-nodejs";
9
+ import { RetentionDays } from "aws-cdk-lib/aws-logs";
10
+ import path = require("path");
11
+ import { LambdaProps } from "../../interfaces/lambda";
12
+ import { Construct } from "constructs";
13
+ import { Table } from "aws-cdk-lib/aws-dynamodb";
14
+
15
+ export const createBasicLambda = (
16
+ scope: Construct,
17
+ props: LambdaProps
18
+ ): NodejsFunction => {
19
+ const lambdaProps = createBasicLambdaProps(props);
20
+
21
+ let lambdaFunction = new NodejsFunction(
22
+ scope,
23
+ `${props.appPrefix || ""}${props.functionName}`,
24
+ lambdaProps
25
+ );
26
+
27
+ grantAccessToDynamoTables(scope, lambdaFunction, props.dynamoTableNames);
28
+
29
+ addLambdaLayers(scope, lambdaFunction, props.lambdaLayerArn);
30
+
31
+ return lambdaFunction;
32
+ };
33
+
34
+ const createBasicLambdaProps = (props: LambdaProps): NodejsFunctionProps => {
35
+ const lambdaProp: NodejsFunctionProps = {
36
+ entry: props.codePath
37
+ ? path.join(props.codePath)
38
+ : path.join(`./resources/lambdas/${props.functionName}/main.mts`),
39
+ functionName: `${props.appPrefix ? `${props.appPrefix}-` : ""}${
40
+ props.functionName
41
+ }`,
42
+ handler: "main.ts",
43
+ logRetention: RetentionDays.TWO_WEEKS,
44
+ runtime: Runtime.NODEJS_LATEST,
45
+ timeout: Duration.minutes(
46
+ props.timeoutInMinutes ? props.timeoutInMinutes : 1
47
+ ),
48
+ memorySize: props.memory,
49
+ environment: {
50
+ ...props.envs,
51
+ },
52
+ bundling: {
53
+ minify: true,
54
+ target: `esnext`,
55
+ sourceMap: true,
56
+ sourceMapMode: SourceMapMode.EXTERNAL,
57
+ environment: {
58
+ ...props.envs,
59
+ },
60
+ },
61
+ role: props.role,
62
+ layers: undefined,
63
+ };
64
+
65
+ return lambdaProp;
66
+ };
67
+
68
+ const grantAccessToDynamoTables = (
69
+ scope: Construct,
70
+ lambda: NodejsFunction,
71
+ tableNames?: string[]
72
+ ) => {
73
+ if (tableNames && tableNames.length > 0) {
74
+ tableNames.forEach((tableName) => {
75
+ const table = Table.fromTableName(scope, `${tableName}-table`, tableName);
76
+
77
+ table.grantReadWriteData(lambda);
78
+ });
79
+ }
80
+ };
81
+
82
+ const addLambdaLayers = (
83
+ scope: Construct,
84
+ lambda: NodejsFunction,
85
+ layerArns?: string[]
86
+ ) => {
87
+ if (layerArns && layerArns.length > 0) {
88
+ layerArns.forEach((arn: string, idx: number) => {
89
+ const layer = LayerVersion.fromLayerVersionArn(
90
+ scope,
91
+ `common-layer-${idx}`,
92
+ arn
93
+ );
94
+
95
+ lambda.addLayers(layer);
96
+ });
97
+ }
98
+ };
@@ -1,7 +1,11 @@
1
1
  import { Duration } from "aws-cdk-lib";
2
2
  import { ServicePrincipal } from "aws-cdk-lib/aws-iam";
3
3
  import { LayerVersion, Runtime } from "aws-cdk-lib/aws-lambda";
4
- import { NodejsFunction, NodejsFunctionProps, SourceMapMode } from "aws-cdk-lib/aws-lambda-nodejs";
4
+ import {
5
+ NodejsFunction,
6
+ NodejsFunctionProps,
7
+ SourceMapMode,
8
+ } from "aws-cdk-lib/aws-lambda-nodejs";
5
9
  import { RetentionDays } from "aws-cdk-lib/aws-logs";
6
10
  import path = require("path");
7
11
  import { TimerJobProps } from "../../interfaces/timer-job";
@@ -11,94 +15,121 @@ import { CronOptions, Rule, Schedule } from "aws-cdk-lib/aws-events";
11
15
  import { LambdaFunction } from "aws-cdk-lib/aws-events-targets";
12
16
  import { Table } from "aws-cdk-lib/aws-dynamodb";
13
17
 
18
+ export const createBasicLambdaTimerJob = (
19
+ scope: Construct,
20
+ props: TimerJobProps
21
+ ): NodejsFunction => {
22
+ const lambdaProps = createBasicLambdaProps(props);
14
23
 
24
+ let lambdaFunction = new NodejsFunction(
25
+ scope,
26
+ `${props.appPrefix}${props.functionName}`,
27
+ lambdaProps
28
+ );
15
29
 
16
- export const createBasicLambdaTimerJob = (scope: Construct, props: TimerJobProps) => {
30
+ addInvokePermissionToLambdaForEvents(lambdaFunction);
17
31
 
18
- const lambdaProps = createBasicLambdaProps(props);
32
+ const eventRule = createEventRuleForLambda(
33
+ scope,
34
+ lambdaFunction,
35
+ props.cronOptions
36
+ );
19
37
 
20
- let lambdaFunction = new NodejsFunction(scope, `${props.appPrefix}${props.functionName}`, lambdaProps);
38
+ eventRule.addTarget(new LambdaFunction(lambdaFunction));
21
39
 
22
- addInvokePermissionToLambdaForEvents(lambdaFunction);
40
+ grantAccessToDynamoTables(scope, lambdaFunction, props.dynamoTableNames);
23
41
 
24
- const eventRule = createEventRuleForLambda(scope, lambdaFunction, props.cronOptions);
42
+ addLambdaLayers(scope, lambdaFunction, props.lambdaLayerArn);
25
43
 
26
- eventRule.addTarget(new LambdaFunction(lambdaFunction));
27
-
28
- grantAccessToDynamoTables(scope, lambdaFunction, props.dynamoTableNames);
29
-
30
- addLambdaLayers(scope, lambdaFunction, props.lambdaLayerArn);
44
+ return lambdaFunction;
31
45
  };
32
46
 
33
- const createBasicLambdaProps = (props: TimerJobProps) => {
34
-
35
- const lambdaProp: NodejsFunctionProps = {
36
- entry: (props.codePath) ? path.join(props.codePath) : path.join(`./resources/lambdas/timer-jobs/${props.functionName}/main.mts`),
37
- functionName: `${(props.appPrefix) ? `${props.appPrefix}-` : ''}${props.functionName}`,
38
- handler: 'main.ts',
39
- logRetention: RetentionDays.TWO_WEEKS,
40
- runtime: Runtime.NODEJS_LATEST,
41
- timeout: Duration.minutes((props.timeoutInMinutes) ? props.timeoutInMinutes : 1),
42
- memorySize: props.memory,
43
- environment: {
44
- ...props.envs
45
- },
46
- bundling: {
47
- minify: true,
48
- target: `esnext`,
49
- sourceMap: true,
50
- sourceMapMode: SourceMapMode.EXTERNAL,
51
- environment: {
52
- ...props.envs
53
- }
54
- },
55
- role: props.role,
56
- layers: undefined
57
- }
58
-
59
- return lambdaProp;
47
+ const createBasicLambdaProps = (props: TimerJobProps): NodejsFunctionProps => {
48
+ const lambdaProp: NodejsFunctionProps = {
49
+ entry: props.codePath
50
+ ? path.join(props.codePath)
51
+ : path.join(
52
+ `./resources/lambdas/timer-jobs/${props.functionName}/main.mts`
53
+ ),
54
+ functionName: `${props.appPrefix ? `${props.appPrefix}-` : ""}${
55
+ props.functionName
56
+ }`,
57
+ handler: "main.ts",
58
+ logRetention: RetentionDays.TWO_WEEKS,
59
+ runtime: Runtime.NODEJS_LATEST,
60
+ timeout: Duration.minutes(
61
+ props.timeoutInMinutes ? props.timeoutInMinutes : 1
62
+ ),
63
+ memorySize: props.memory,
64
+ environment: {
65
+ ...props.envs,
66
+ },
67
+ bundling: {
68
+ minify: true,
69
+ target: `esnext`,
70
+ sourceMap: true,
71
+ sourceMapMode: SourceMapMode.EXTERNAL,
72
+ environment: {
73
+ ...props.envs,
74
+ },
75
+ },
76
+ role: props.role,
77
+ layers: undefined,
78
+ };
79
+
80
+ return lambdaProp;
60
81
  };
61
82
 
62
83
  const addInvokePermissionToLambdaForEvents = (lambda: NodejsFunction) => {
63
-
64
- lambda.addPermission(`InvokePermission-${lambda.functionName}`, {
65
- principal: new ServicePrincipal(SERVICE_PRINCIPAL.EVENTS),
66
- });
84
+ lambda.addPermission(`InvokePermission-${lambda.functionName}`, {
85
+ principal: new ServicePrincipal(SERVICE_PRINCIPAL.EVENTS),
86
+ });
67
87
  };
68
88
 
69
- const createEventRuleForLambda = (scope: Construct, lambda: NodejsFunction, options: CronOptions) => {
70
-
71
- const eventRule = new Rule(scope, `scheduleRule-${lambda?.node.id || '010'}`, {
72
- schedule: Schedule.cron(options),
73
- });
89
+ const createEventRuleForLambda = (
90
+ scope: Construct,
91
+ lambda: NodejsFunction,
92
+ options: CronOptions
93
+ ) => {
94
+ const eventRule = new Rule(
95
+ scope,
96
+ `scheduleRule-${lambda?.node.id || "010"}`,
97
+ {
98
+ schedule: Schedule.cron(options),
99
+ }
100
+ );
74
101
 
75
- return eventRule;
102
+ return eventRule;
76
103
  };
77
104
 
78
- const grantAccessToDynamoTables = (scope: Construct, lambda: NodejsFunction, tableNames?: string[]) => {
79
-
80
- if (tableNames && tableNames.length > 0) {
81
-
82
- tableNames.forEach(tableName => {
83
-
84
- const table = Table.fromTableName(scope, `${tableName}-table`, tableName);
85
-
86
- table.grantReadWriteData(lambda);
87
- });
88
-
89
-
90
-
91
- }
105
+ const grantAccessToDynamoTables = (
106
+ scope: Construct,
107
+ lambda: NodejsFunction,
108
+ tableNames?: string[]
109
+ ) => {
110
+ if (tableNames && tableNames.length > 0) {
111
+ tableNames.forEach((tableName) => {
112
+ const table = Table.fromTableName(scope, `${tableName}-table`, tableName);
113
+
114
+ table.grantReadWriteData(lambda);
115
+ });
116
+ }
92
117
  };
93
118
 
94
- const addLambdaLayers = (scope: Construct, lambda: NodejsFunction, layerArns?: string[]) => {
95
-
96
- if (layerArns && layerArns.length > 0) {
97
- layerArns.forEach((arn: string, idx: number) => {
98
- const layer = LayerVersion.fromLayerVersionArn(scope, `common-layer-${idx}`, arn);
99
-
100
- lambda.addLayers(layer);
101
-
102
- });
103
- }
119
+ const addLambdaLayers = (
120
+ scope: Construct,
121
+ lambda: NodejsFunction,
122
+ layerArns?: string[]
123
+ ) => {
124
+ if (layerArns && layerArns.length > 0) {
125
+ layerArns.forEach((arn: string, idx: number) => {
126
+ const layer = LayerVersion.fromLayerVersionArn(
127
+ scope,
128
+ `common-layer-${idx}`,
129
+ arn
130
+ );
131
+
132
+ lambda.addLayers(layer);
133
+ });
134
+ }
104
135
  };