UNPKG

@scloud/cdk-patterns

Version:

Serverless CDK patterns for common infrastructure needs

59 lines 8.94 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.queueLambda = queueLambda; exports.queueLambdaContainer = queueLambdaContainer; const aws_cdk_lib_1 = require("aws-cdk-lib"); const aws_sqs_1 = require("aws-cdk-lib/aws-sqs"); const aws_lambda_event_sources_1 = require("aws-cdk-lib/aws-lambda-event-sources"); const lambdaFunctionDeprecated_1 = require("./lambdaFunctionDeprecated"); /** * @deprecated Use QueueFunction instead: QueueFunction.node() QueueFunction.python() QueueFunction.container() * * A Lambda function triggered by SQS queue events. * * Defaults for the queue are: * - visibilityTimeout: timeout from the lambdaProps or 60 seconds if not defined * - encryption: QueueEncryption.KMS_MANAGED * - removalPolicy: RemovalPolicy.DESTROY */ function queueLambda(construct, name, environment, lambdaProps) { // NB Message timeout needs to match between the queue and the lambda: const timeout = (lambdaProps === null || lambdaProps === void 0 ? void 0 : lambdaProps.timeout) || aws_cdk_lib_1.Duration.seconds(60); // Incoming message queue const queue = new aws_sqs_1.Queue(construct, `${name}Queue`, { visibilityTimeout: timeout, encryption: aws_sqs_1.QueueEncryption.KMS_MANAGED, removalPolicy: aws_cdk_lib_1.RemovalPolicy.DESTROY, }); const lambda = (0, lambdaFunctionDeprecated_1.zipFunction)(construct, name, environment, { ...lambdaProps, timeout }); lambda.addEventSource(new aws_lambda_event_sources_1.SqsEventSource(queue, { reportBatchItemFailures: true })); return { queue, lambda, }; } /** * @deprecated Use QueueFunction.container() instead * * A container Lambda function triggered by SQS queue events. * * Defaults for the queue are: * - visibilityTimeout: timeout from the lambdaProps or 60 seconds if not defined * - encryption: QueueEncryption.KMS_MANAGED * - removalPolicy: RemovalPolicy.DESTROY */ function queueLambdaContainer(construct, name, initialPass, environment, ecr, lambdaProps) { // NB Message timeout needs to match between the queue and the lambda: const timeout = (lambdaProps === null || lambdaProps === void 0 ? void 0 : lambdaProps.timeout) || aws_cdk_lib_1.Duration.seconds(60); // Incoming message queue const queue = new aws_sqs_1.Queue(construct, `${name}Queue`, { visibilityTimeout: timeout, encryption: aws_sqs_1.QueueEncryption.KMS_MANAGED, removalPolicy: aws_cdk_lib_1.RemovalPolicy.DESTROY, }); const { lambda, repository } = (0, lambdaFunctionDeprecated_1.containerFunction)(construct, initialPass, name, environment, { ...lambdaProps, timeout }, 'latest', ecr); lambda.addEventSource(new aws_lambda_event_sources_1.SqsEventSource(queue, { reportBatchItemFailures: true })); return { repository, queue, lambda, }; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVldWVMYW1iZGFEZXByZWNhdGVkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2RlcHJlY2F0ZWQvcXVldWVMYW1iZGFEZXByZWNhdGVkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBa0JBLGtDQXNCQztBQVlELG9EQXdCQztBQTVFRCw2Q0FBc0Q7QUFHdEQsaURBQTZEO0FBRTdELG1GQUFzRTtBQUN0RSx5RUFBNEU7QUFFNUU7Ozs7Ozs7OztHQVNHO0FBQ0gsU0FBZ0IsV0FBVyxDQUN6QixTQUFvQixFQUNwQixJQUFZLEVBQ1osV0FBd0MsRUFDeEMsV0FBb0M7SUFFcEMsc0VBQXNFO0lBQ3RFLE1BQU0sT0FBTyxHQUFhLENBQUEsV0FBVyxhQUFYLFdBQVcsdUJBQVgsV0FBVyxDQUFFLE9BQU8sS0FBSSxzQkFBUSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUV2RSx5QkFBeUI7SUFDekIsTUFBTSxLQUFLLEdBQUcsSUFBSSxlQUFLLENBQUMsU0FBUyxFQUFFLEdBQUcsSUFBSSxPQUFPLEVBQUU7UUFDakQsaUJBQWlCLEVBQUUsT0FBTztRQUMxQixVQUFVLEVBQUUseUJBQWUsQ0FBQyxXQUFXO1FBQ3ZDLGFBQWEsRUFBRSwyQkFBYSxDQUFDLE9BQU87S0FDckMsQ0FBQyxDQUFDO0lBRUgsTUFBTSxNQUFNLEdBQUcsSUFBQSxzQ0FBVyxFQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLEVBQUUsR0FBRyxXQUFXLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUN0RixNQUFNLENBQUMsY0FBYyxDQUFDLElBQUkseUNBQWMsQ0FBQyxLQUFLLEVBQUUsRUFBRSx1QkFBdUIsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFFcEYsT0FBTztRQUNMLEtBQUssRUFBRSxNQUFNO0tBQ2QsQ0FBQztBQUNKLENBQUM7QUFFRDs7Ozs7Ozs7O0dBU0c7QUFDSCxTQUFnQixvQkFBb0IsQ0FDbEMsU0FBb0IsRUFDcEIsSUFBWSxFQUNaLFdBQW9CLEVBQ3BCLFdBQXdDLEVBQ3hDLEdBQWlCLEVBQ2pCLFdBQStDO0lBRS9DLHNFQUFzRTtJQUN0RSxNQUFNLE9BQU8sR0FBYSxDQUFBLFdBQVcsYUFBWCxXQUFXLHVCQUFYLFdBQVcsQ0FBRSxPQUFPLEtBQUksc0JBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7SUFFdkUseUJBQXlCO0lBQ3pCLE1BQU0sS0FBSyxHQUFHLElBQUksZUFBSyxDQUFDLFNBQVMsRUFBRSxHQUFHLElBQUksT0FBTyxFQUFFO1FBQ2pELGlCQUFpQixFQUFFLE9BQU87UUFDMUIsVUFBVSxFQUFFLHlCQUFlLENBQUMsV0FBVztRQUN2QyxhQUFhLEVBQUUsMkJBQWEsQ0FBQyxPQUFPO0tBQ3JDLENBQUMsQ0FBQztJQUVILE1BQU0sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLEdBQUcsSUFBQSw0Q0FBaUIsRUFBQyxTQUFTLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsRUFBRSxHQUFHLFdBQVcsRUFBRSxPQUFPLEVBQUUsRUFBRSxRQUFRLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDeEksTUFBTSxDQUFDLGNBQWMsQ0FBQyxJQUFJLHlDQUFjLENBQUMsS0FBSyxFQUFFLEVBQUUsdUJBQXVCLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBRXBGLE9BQU87UUFDTCxVQUFVLEVBQUUsS0FBSyxFQUFFLE1BQU07S0FDMUIsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEdXJhdGlvbiwgUmVtb3ZhbFBvbGljeSB9IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB7IElSZXBvc2l0b3J5IH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWVjcic7XG5pbXBvcnQgeyBEb2NrZXJJbWFnZUZ1bmN0aW9uUHJvcHMsIEZ1bmN0aW9uLCBGdW5jdGlvblByb3BzIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWxhbWJkYSc7XG5pbXBvcnQgeyBRdWV1ZSwgUXVldWVFbmNyeXB0aW9uIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLXNxcyc7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB7IFNxc0V2ZW50U291cmNlIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWxhbWJkYS1ldmVudC1zb3VyY2VzJztcbmltcG9ydCB7IGNvbnRhaW5lckZ1bmN0aW9uLCB6aXBGdW5jdGlvbiB9IGZyb20gJy4vbGFtYmRhRnVuY3Rpb25EZXByZWNhdGVkJztcblxuLyoqXG4gKiBAZGVwcmVjYXRlZCBVc2UgUXVldWVGdW5jdGlvbiBpbnN0ZWFkOiBRdWV1ZUZ1bmN0aW9uLm5vZGUoKSBRdWV1ZUZ1bmN0aW9uLnB5dGhvbigpIFF1ZXVlRnVuY3Rpb24uY29udGFpbmVyKClcbiAqXG4gKiBBIExhbWJkYSBmdW5jdGlvbiB0cmlnZ2VyZWQgYnkgU1FTIHF1ZXVlIGV2ZW50cy5cbiAqXG4gKiBEZWZhdWx0cyBmb3IgdGhlIHF1ZXVlIGFyZTpcbiAqICAtIHZpc2liaWxpdHlUaW1lb3V0OiB0aW1lb3V0IGZyb20gdGhlIGxhbWJkYVByb3BzIG9yIDYwIHNlY29uZHMgaWYgbm90IGRlZmluZWRcbiAqICAtIGVuY3J5cHRpb246IFF1ZXVlRW5jcnlwdGlvbi5LTVNfTUFOQUdFRFxuICogIC0gcmVtb3ZhbFBvbGljeTogUmVtb3ZhbFBvbGljeS5ERVNUUk9ZXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBxdWV1ZUxhbWJkYShcbiAgY29uc3RydWN0OiBDb25zdHJ1Y3QsXG4gIG5hbWU6IHN0cmluZyxcbiAgZW52aXJvbm1lbnQ/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZzsgfSxcbiAgbGFtYmRhUHJvcHM/OiBQYXJ0aWFsPEZ1bmN0aW9uUHJvcHM+LFxuKTogeyBxdWV1ZTogUXVldWUsIGxhbWJkYTogRnVuY3Rpb247IH0ge1xuICAvLyBOQiBNZXNzYWdlIHRpbWVvdXQgbmVlZHMgdG8gbWF0Y2ggYmV0d2VlbiB0aGUgcXVldWUgYW5kIHRoZSBsYW1iZGE6XG4gIGNvbnN0IHRpbWVvdXQ6IER1cmF0aW9uID0gbGFtYmRhUHJvcHM/LnRpbWVvdXQgfHwgRHVyYXRpb24uc2Vjb25kcyg2MCk7XG5cbiAgLy8gSW5jb21pbmcgbWVzc2FnZSBxdWV1ZVxuICBjb25zdCBxdWV1ZSA9IG5ldyBRdWV1ZShjb25zdHJ1Y3QsIGAke25hbWV9UXVldWVgLCB7XG4gICAgdmlzaWJpbGl0eVRpbWVvdXQ6IHRpbWVvdXQsXG4gICAgZW5jcnlwdGlvbjogUXVldWVFbmNyeXB0aW9uLktNU19NQU5BR0VELFxuICAgIHJlbW92YWxQb2xpY3k6IFJlbW92YWxQb2xpY3kuREVTVFJPWSxcbiAgfSk7XG5cbiAgY29uc3QgbGFtYmRhID0gemlwRnVuY3Rpb24oY29uc3RydWN0LCBuYW1lLCBlbnZpcm9ubWVudCwgeyAuLi5sYW1iZGFQcm9wcywgdGltZW91dCB9KTtcbiAgbGFtYmRhLmFkZEV2ZW50U291cmNlKG5ldyBTcXNFdmVudFNvdXJjZShxdWV1ZSwgeyByZXBvcnRCYXRjaEl0ZW1GYWlsdXJlczogdHJ1ZSB9KSk7XG5cbiAgcmV0dXJuIHtcbiAgICBxdWV1ZSwgbGFtYmRhLFxuICB9O1xufVxuXG4vKipcbiAqIEBkZXByZWNhdGVkIFVzZSBRdWV1ZUZ1bmN0aW9uLmNvbnRhaW5lcigpIGluc3RlYWRcbiAqXG4gKiBBIGNvbnRhaW5lciBMYW1iZGEgZnVuY3Rpb24gdHJpZ2dlcmVkIGJ5IFNRUyBxdWV1ZSBldmVudHMuXG4gKlxuICogRGVmYXVsdHMgZm9yIHRoZSBxdWV1ZSBhcmU6XG4gKiAgLSB2aXNpYmlsaXR5VGltZW91dDogdGltZW91dCBmcm9tIHRoZSBsYW1iZGFQcm9wcyBvciA2MCBzZWNvbmRzIGlmIG5vdCBkZWZpbmVkXG4gKiAgLSBlbmNyeXB0aW9uOiBRdWV1ZUVuY3J5cHRpb24uS01TX01BTkFHRURcbiAqICAtIHJlbW92YWxQb2xpY3k6IFJlbW92YWxQb2xpY3kuREVTVFJPWVxuICovXG5leHBvcnQgZnVuY3Rpb24gcXVldWVMYW1iZGFDb250YWluZXIoXG4gIGNvbnN0cnVjdDogQ29uc3RydWN0LFxuICBuYW1lOiBzdHJpbmcsXG4gIGluaXRpYWxQYXNzOiBib29sZWFuLFxuICBlbnZpcm9ubWVudD86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nOyB9LFxuICBlY3I/OiBJUmVwb3NpdG9yeSxcbiAgbGFtYmRhUHJvcHM/OiBQYXJ0aWFsPERvY2tlckltYWdlRnVuY3Rpb25Qcm9wcz4sXG4pOiB7IHJlcG9zaXRvcnk6IElSZXBvc2l0b3J5LCBxdWV1ZTogUXVldWUsIGxhbWJkYTogRnVuY3Rpb247IH0ge1xuICAvLyBOQiBNZXNzYWdlIHRpbWVvdXQgbmVlZHMgdG8gbWF0Y2ggYmV0d2VlbiB0aGUgcXVldWUgYW5kIHRoZSBsYW1iZGE6XG4gIGNvbnN0IHRpbWVvdXQ6IER1cmF0aW9uID0gbGFtYmRhUHJvcHM/LnRpbWVvdXQgfHwgRHVyYXRpb24uc2Vjb25kcyg2MCk7XG5cbiAgLy8gSW5jb21pbmcgbWVzc2FnZSBxdWV1ZVxuICBjb25zdCBxdWV1ZSA9IG5ldyBRdWV1ZShjb25zdHJ1Y3QsIGAke25hbWV9UXVldWVgLCB7XG4gICAgdmlzaWJpbGl0eVRpbWVvdXQ6IHRpbWVvdXQsXG4gICAgZW5jcnlwdGlvbjogUXVldWVFbmNyeXB0aW9uLktNU19NQU5BR0VELFxuICAgIHJlbW92YWxQb2xpY3k6IFJlbW92YWxQb2xpY3kuREVTVFJPWSxcbiAgfSk7XG5cbiAgY29uc3QgeyBsYW1iZGEsIHJlcG9zaXRvcnkgfSA9IGNvbnRhaW5lckZ1bmN0aW9uKGNvbnN0cnVjdCwgaW5pdGlhbFBhc3MsIG5hbWUsIGVudmlyb25tZW50LCB7IC4uLmxhbWJkYVByb3BzLCB0aW1lb3V0IH0sICdsYXRlc3QnLCBlY3IpO1xuICBsYW1iZGEuYWRkRXZlbnRTb3VyY2UobmV3IFNxc0V2ZW50U291cmNlKHF1ZXVlLCB7IHJlcG9ydEJhdGNoSXRlbUZhaWx1cmVzOiB0cnVlIH0pKTtcblxuICByZXR1cm4ge1xuICAgIHJlcG9zaXRvcnksIHF1ZXVlLCBsYW1iZGEsXG4gIH07XG59XG4iXX0=