UNPKG

@scloud/cdk-patterns

Version:

Serverless CDK patterns for common infrastructure needs

81 lines 10 kB
"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || (function () { var ownKeys = function(o) { ownKeys = Object.getOwnPropertyNames || function (o) { var ar = []; for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k; return ar; }; return ownKeys(o); }; return function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]); __setModuleDefault(result, mod); return result; }; })(); Object.defineProperty(exports, "__esModule", { value: true }); exports.ZipFunction = void 0; const logs = __importStar(require("aws-cdk-lib/aws-logs")); const aws_lambda_1 = require("aws-cdk-lib/aws-lambda"); const aws_cdk_lib_1 = require("aws-cdk-lib"); const GithubActions_1 = require("./GithubActions"); /** * A Lambda function packaged as a zip file. * * This construct automatically adds itself to the list of resources Github Actions needs to access. * * Pythion and Node runtinmes can be configured by calling ZipFunction.python(...) and ZipFunction.node(...) * These are supported by default as these seem to have the lowest cold start times. * If you would like a different runtime this can be set using the props parameter. * * Key settings are: * - runtime: defaults to Runtime.NODEJS_18_X * - handler: 'src/lambda.handler' - you'll need to make sure your zip package includes a file 'src/lambda.[js|py]' and contains a function named 'handler' * - logRetention: default is logs.RetentionDays.TWO_YEARS * * @param scope Parent CDK construct (typically 'this') * @param id A name for this function */ class ZipFunction extends aws_lambda_1.Function { constructor(scope, id, props) { super(scope, id, { environment: props === null || props === void 0 ? void 0 : props.environment, memorySize: (props === null || props === void 0 ? void 0 : props.memorySize) || 256, timeout: (props === null || props === void 0 ? void 0 : props.timeout) || aws_cdk_lib_1.Duration.seconds(30), description: id, // Provides something readable in the AWS console view runtime: aws_lambda_1.Runtime.NODEJS_18_X, handler: (props === null || props === void 0 ? void 0 : props.handler) || 'src/lambda.handler', code: aws_lambda_1.Code.fromInline('Placeholder code'), // Asset(path.join(__dirname, './lambda/python')), logRetention: logs.RetentionDays.TWO_YEARS, ...props === null || props === void 0 ? void 0 : props.functionProps, }); (0, GithubActions_1.githubActions)(scope).addGhaLambda(id, this); } static node(scope, id, props) { return new ZipFunction(scope, id, { ...props, functionProps: { runtime: aws_lambda_1.Runtime.NODEJS_LATEST, ...props === null || props === void 0 ? void 0 : props.functionProps } }); } static python(scope, id, props) { return new ZipFunction(scope, id, { ...props, functionProps: { runtime: aws_lambda_1.Runtime.PYTHON_3_12, ...props === null || props === void 0 ? void 0 : props.functionProps } }); } } exports.ZipFunction = ZipFunction; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiWmlwRnVuY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvWmlwRnVuY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsMkRBQTZDO0FBRTdDLHVEQUVnQztBQUNoQyw2Q0FBdUM7QUFDdkMsbURBQWdEO0FBaUJoRDs7Ozs7Ozs7Ozs7Ozs7OztHQWdCRztBQUNILE1BQWEsV0FBWSxTQUFRLHFCQUFRO0lBQ3ZDLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBd0I7UUFDaEUsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUU7WUFDZixXQUFXLEVBQUUsS0FBSyxhQUFMLEtBQUssdUJBQUwsS0FBSyxDQUFFLFdBQVc7WUFDL0IsVUFBVSxFQUFFLENBQUEsS0FBSyxhQUFMLEtBQUssdUJBQUwsS0FBSyxDQUFFLFVBQVUsS0FBSSxHQUFHO1lBQ3BDLE9BQU8sRUFBRSxDQUFBLEtBQUssYUFBTCxLQUFLLHVCQUFMLEtBQUssQ0FBRSxPQUFPLEtBQUksc0JBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQy9DLFdBQVcsRUFBRSxFQUFFLEVBQUUsc0RBQXNEO1lBQ3ZFLE9BQU8sRUFBRSxvQkFBTyxDQUFDLFdBQVc7WUFDNUIsT0FBTyxFQUFFLENBQUEsS0FBSyxhQUFMLEtBQUssdUJBQUwsS0FBSyxDQUFFLE9BQU8sS0FBSSxvQkFBb0I7WUFDL0MsSUFBSSxFQUFFLGlCQUFJLENBQUMsVUFBVSxDQUFDLGtCQUFrQixDQUFDLEVBQUUsa0RBQWtEO1lBQzdGLFlBQVksRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLFNBQVM7WUFDMUMsR0FBRyxLQUFLLGFBQUwsS0FBSyx1QkFBTCxLQUFLLENBQUUsYUFBYTtTQUN4QixDQUFDLENBQUM7UUFDSCxJQUFBLDZCQUFhLEVBQUMsS0FBSyxDQUFDLENBQUMsWUFBWSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBRUQsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUF3QjtRQUNoRSxPQUFPLElBQUksV0FBVyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLEtBQUssRUFBRSxhQUFhLEVBQUUsRUFBRSxPQUFPLEVBQUUsb0JBQU8sQ0FBQyxhQUFhLEVBQUUsR0FBRyxLQUFLLGFBQUwsS0FBSyx1QkFBTCxLQUFLLENBQUUsYUFBYSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQzlILENBQUM7SUFFRCxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQXdCO1FBQ2xFLE9BQU8sSUFBSSxXQUFXLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsS0FBSyxFQUFFLGFBQWEsRUFBRSxFQUFFLE9BQU8sRUFBRSxvQkFBTyxDQUFDLFdBQVcsRUFBRSxHQUFHLEtBQUssYUFBTCxLQUFLLHVCQUFMLEtBQUssQ0FBRSxhQUFhLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDNUgsQ0FBQztDQUNGO0FBdkJELGtDQXVCQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGxvZ3MgZnJvbSAnYXdzLWNkay1saWIvYXdzLWxvZ3MnO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQge1xuICBDb2RlLCBGdW5jdGlvbiwgRnVuY3Rpb25Qcm9wcywgUnVudGltZSxcbn0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWxhbWJkYSc7XG5pbXBvcnQgeyBEdXJhdGlvbiB9IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB7IGdpdGh1YkFjdGlvbnMgfSBmcm9tICcuL0dpdGh1YkFjdGlvbnMnO1xuXG4vKipcbiAqIEBwYXJhbSBlbnZpcm9ubWVudCBPcHRpb25hbDogRW52aXJvbm1lbnQgdmFyaWFibGVzIGZvciB0aGUgTGFtYmRhIGZ1bmN0aW9uXG4gKiBAcGFyYW0gbWVtb3J5U2l6ZSBEZWZhdWx0IDI1NjogdGhlIGFtb3VudCBvZiBtZW1vcnkgdG8gYWxsb2NhdGUgdG8gdGhlIExhbWJkYSBmdW5jdGlvblxuICogQHBhcmFtIHRpbWVvdXQgRGVmYXVsdCAxMCBzZWNvbmRzOiB0aGUgYW1vdW50IG9mIHRpbWUgdGhlIExhbWJkYSBmdW5jdGlvbiBoYXMgdG8gcnVuIGJlZm9yZSBpdCB0aW1lcyBvdXRcbiAqIEBwYXJhbSBoYW5kbGVyIERlZmF1bHQgJ3NyYy9sYW1iZGEuaGFuZGxlcic6IHRoZSBuYW1lIG9mIHRoZSBsYW1iZGEgaGFuZGxlciBmdW5jdGlvblxuICogQHBhcmFtIGZ1bmN0aW9uUHJvcHMgT3B0aW9uYWw6IElmIHlvdSBuZWVkIHRvIHNwZWNpZnkgYW55IGRldGFpbGVkIHByb3BlcnRpZXMgZm9yIHRoZSBMYW1iZGEgZnVuY3Rpb24sIHlvdSBjYW4gZG8gc28gaGVyZSBhbmQgdGhleSB3aWxsIG92ZXJyaWRlIGFueSBkZWZhdWx0cyBlLmcuIHsgcnVudGltZTogUnVudGltZS5QWVRIT05fM18xMCB9XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgWmlwRnVuY3Rpb25Qcm9wcyB7XG4gIGVudmlyb25tZW50PzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmc7IH0sXG4gIG1lbW9yeVNpemU/OiBudW1iZXIsXG4gIHRpbWVvdXQ/OiBEdXJhdGlvbixcbiAgaGFuZGxlcj86IHN0cmluZyxcbiAgZnVuY3Rpb25Qcm9wcz86IFBhcnRpYWw8RnVuY3Rpb25Qcm9wcz47XG59XG5cbi8qKlxuICogQSBMYW1iZGEgZnVuY3Rpb24gcGFja2FnZWQgYXMgYSB6aXAgZmlsZS5cbiAqXG4gKiBUaGlzIGNvbnN0cnVjdCBhdXRvbWF0aWNhbGx5IGFkZHMgaXRzZWxmIHRvIHRoZSBsaXN0IG9mIHJlc291cmNlcyBHaXRodWIgQWN0aW9ucyBuZWVkcyB0byBhY2Nlc3MuXG4gKlxuICogUHl0aGlvbiBhbmQgTm9kZSBydW50aW5tZXMgY2FuIGJlIGNvbmZpZ3VyZWQgYnkgY2FsbGluZyBaaXBGdW5jdGlvbi5weXRob24oLi4uKSBhbmQgWmlwRnVuY3Rpb24ubm9kZSguLi4pXG4gKiBUaGVzZSBhcmUgc3VwcG9ydGVkIGJ5IGRlZmF1bHQgYXMgdGhlc2Ugc2VlbSB0byBoYXZlIHRoZSBsb3dlc3QgY29sZCBzdGFydCB0aW1lcy5cbiAqIElmIHlvdSB3b3VsZCBsaWtlIGEgZGlmZmVyZW50IHJ1bnRpbWUgdGhpcyBjYW4gYmUgc2V0IHVzaW5nIHRoZSBwcm9wcyBwYXJhbWV0ZXIuXG4gKlxuICogS2V5IHNldHRpbmdzIGFyZTpcbiAqICAtIHJ1bnRpbWU6IGRlZmF1bHRzIHRvIFJ1bnRpbWUuTk9ERUpTXzE4X1hcbiAqICAtIGhhbmRsZXI6ICdzcmMvbGFtYmRhLmhhbmRsZXInIC0geW91J2xsIG5lZWQgdG8gbWFrZSBzdXJlIHlvdXIgemlwIHBhY2thZ2UgaW5jbHVkZXMgYSBmaWxlICdzcmMvbGFtYmRhLltqc3xweV0nIGFuZCBjb250YWlucyBhIGZ1bmN0aW9uIG5hbWVkICdoYW5kbGVyJ1xuICogIC0gbG9nUmV0ZW50aW9uOiBkZWZhdWx0IGlzIGxvZ3MuUmV0ZW50aW9uRGF5cy5UV09fWUVBUlNcbiAqXG4gKiBAcGFyYW0gc2NvcGUgUGFyZW50IENESyBjb25zdHJ1Y3QgKHR5cGljYWxseSAndGhpcycpXG4gKiBAcGFyYW0gaWQgQSBuYW1lIGZvciB0aGlzIGZ1bmN0aW9uXG4gKi9cbmV4cG9ydCBjbGFzcyBaaXBGdW5jdGlvbiBleHRlbmRzIEZ1bmN0aW9uIHtcbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM/OiBaaXBGdW5jdGlvblByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCB7XG4gICAgICBlbnZpcm9ubWVudDogcHJvcHM/LmVudmlyb25tZW50LFxuICAgICAgbWVtb3J5U2l6ZTogcHJvcHM/Lm1lbW9yeVNpemUgfHwgMjU2LFxuICAgICAgdGltZW91dDogcHJvcHM/LnRpbWVvdXQgfHwgRHVyYXRpb24uc2Vjb25kcygzMCksXG4gICAgICBkZXNjcmlwdGlvbjogaWQsIC8vIFByb3ZpZGVzIHNvbWV0aGluZyByZWFkYWJsZSBpbiB0aGUgQVdTIGNvbnNvbGUgdmlld1xuICAgICAgcnVudGltZTogUnVudGltZS5OT0RFSlNfMThfWCxcbiAgICAgIGhhbmRsZXI6IHByb3BzPy5oYW5kbGVyIHx8ICdzcmMvbGFtYmRhLmhhbmRsZXInLFxuICAgICAgY29kZTogQ29kZS5mcm9tSW5saW5lKCdQbGFjZWhvbGRlciBjb2RlJyksIC8vIEFzc2V0KHBhdGguam9pbihfX2Rpcm5hbWUsICcuL2xhbWJkYS9weXRob24nKSksXG4gICAgICBsb2dSZXRlbnRpb246IGxvZ3MuUmV0ZW50aW9uRGF5cy5UV09fWUVBUlMsXG4gICAgICAuLi5wcm9wcz8uZnVuY3Rpb25Qcm9wcyxcbiAgICB9KTtcbiAgICBnaXRodWJBY3Rpb25zKHNjb3BlKS5hZGRHaGFMYW1iZGEoaWQsIHRoaXMpO1xuICB9XG5cbiAgc3RhdGljIG5vZGUoc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM/OiBaaXBGdW5jdGlvblByb3BzKTogWmlwRnVuY3Rpb24ge1xuICAgIHJldHVybiBuZXcgWmlwRnVuY3Rpb24oc2NvcGUsIGlkLCB7IC4uLnByb3BzLCBmdW5jdGlvblByb3BzOiB7IHJ1bnRpbWU6IFJ1bnRpbWUuTk9ERUpTX0xBVEVTVCwgLi4ucHJvcHM/LmZ1bmN0aW9uUHJvcHMgfSB9KTtcbiAgfVxuXG4gIHN0YXRpYyBweXRob24oc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM/OiBaaXBGdW5jdGlvblByb3BzKTogWmlwRnVuY3Rpb24ge1xuICAgIHJldHVybiBuZXcgWmlwRnVuY3Rpb24oc2NvcGUsIGlkLCB7IC4uLnByb3BzLCBmdW5jdGlvblByb3BzOiB7IHJ1bnRpbWU6IFJ1bnRpbWUuUFlUSE9OXzNfMTIsIC4uLnByb3BzPy5mdW5jdGlvblByb3BzIH0gfSk7XG4gIH1cbn1cbiJdfQ==