@scloud/cdk-patterns
Version:
Serverless CDK patterns for common infrastructure needs
41 lines • 7.96 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.ScheduledFunction = void 0;
const constructs_1 = require("constructs");
const aws_events_1 = require("aws-cdk-lib/aws-events");
const aws_events_targets_1 = require("aws-cdk-lib/aws-events-targets");
const ZipFunction_1 = require("./ZipFunction");
const ContainerFunction_1 = require("./ContainerFunction");
/**
* A Lambda function triggered by scheduled Cloudwatch events.
*
* The default schedule is Schedule.cron({ minute: '11', hour: '1' })
* Which sets '11 1 * * ? *' (i.e. 1:11am every day)
*
* You can also pass an optional description for the rule for readability in the Cloudwatch view in the AWS console.
*/
class ScheduledFunction extends constructs_1.Construct {
constructor(scope, id, props) {
super(scope, `${id}ScheduledFunction`);
this.lambda = props.lambda;
this.rule = new aws_events_1.Rule(scope, `${id}Trigger`, {
schedule: props.schedule || aws_events_1.Schedule.cron({ minute: '11', hour: '1' }),
targets: [new aws_events_targets_1.LambdaFunction(props.lambda)],
description: props.description,
});
}
static node(scope, id, functionProps, schedule = aws_events_1.Schedule.cron({ minute: '11', hour: '1' }), description = undefined) {
const lambda = ZipFunction_1.ZipFunction.node(scope, id, functionProps);
return new ScheduledFunction(scope, id, { lambda, schedule, description });
}
static python(scope, id, functionProps, schedule = aws_events_1.Schedule.cron({ minute: '11', hour: '1' }), description = undefined) {
const lambda = ZipFunction_1.ZipFunction.python(scope, id, functionProps);
return new ScheduledFunction(scope, id, { lambda, schedule, description });
}
static container(scope, id, functionProps, schedule = aws_events_1.Schedule.cron({ minute: '11', hour: '1' }), description = undefined) {
const lambda = new ContainerFunction_1.ContainerFunction(scope, id, functionProps);
return new ScheduledFunction(scope, id, { lambda, schedule, description });
}
}
exports.ScheduledFunction = ScheduledFunction;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2NoZWR1bGVkRnVuY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvU2NoZWR1bGVkRnVuY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsMkNBQXVDO0FBQ3ZDLHVEQUF3RDtBQUN4RCx1RUFBZ0U7QUFDaEUsK0NBQThEO0FBQzlELDJEQUFnRjtBQWFoRjs7Ozs7OztHQU9HO0FBQ0gsTUFBYSxpQkFBa0IsU0FBUSxzQkFBUztJQUs5QyxZQUNFLEtBQWdCLEVBQ2hCLEVBQVUsRUFDVixLQUE2QjtRQUU3QixLQUFLLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxtQkFBbUIsQ0FBQyxDQUFDO1FBRXZDLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQztRQUUzQixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksaUJBQUksQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRTtZQUMxQyxRQUFRLEVBQUUsS0FBSyxDQUFDLFFBQVEsSUFBSSxxQkFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDO1lBQ3RFLE9BQU8sRUFBRSxDQUFDLElBQUksbUNBQWMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDM0MsV0FBVyxFQUFFLEtBQUssQ0FBQyxXQUFXO1NBQy9CLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxNQUFNLENBQUMsSUFBSSxDQUNULEtBQWdCLEVBQ2hCLEVBQVUsRUFDVixhQUFnQyxFQUNoQyxXQUFxQixxQkFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQy9ELGNBQWtDLFNBQVM7UUFFM0MsTUFBTSxNQUFNLEdBQUcseUJBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxhQUFhLENBQUMsQ0FBQztRQUMxRCxPQUFPLElBQUksaUJBQWlCLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQztJQUM3RSxDQUFDO0lBRUQsTUFBTSxDQUFDLE1BQU0sQ0FDWCxLQUFnQixFQUNoQixFQUFVLEVBQ1YsYUFBZ0MsRUFDaEMsV0FBcUIscUJBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUMvRCxjQUFrQyxTQUFTO1FBRTNDLE1BQU0sTUFBTSxHQUFHLHlCQUFXLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUUsYUFBYSxDQUFDLENBQUM7UUFDNUQsT0FBTyxJQUFJLGlCQUFpQixDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUM7SUFDN0UsQ0FBQztJQUVELE1BQU0sQ0FBQyxTQUFTLENBQ2QsS0FBZ0IsRUFDaEIsRUFBVSxFQUNWLGFBQXNDLEVBQ3RDLFdBQXFCLHFCQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFDL0QsY0FBa0MsU0FBUztRQUUzQyxNQUFNLE1BQU0sR0FBRyxJQUFJLHFDQUFpQixDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUUsYUFBYSxDQUFDLENBQUM7UUFDL0QsT0FBTyxJQUFJLGlCQUFpQixDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUM7SUFDN0UsQ0FBQztDQUNGO0FBckRELDhDQXFEQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZ1bmN0aW9uIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWxhbWJkYSc7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB7IFJ1bGUsIFNjaGVkdWxlIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWV2ZW50cyc7XG5pbXBvcnQgeyBMYW1iZGFGdW5jdGlvbiB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1ldmVudHMtdGFyZ2V0cyc7XG5pbXBvcnQgeyBaaXBGdW5jdGlvbiwgWmlwRnVuY3Rpb25Qcm9wcyB9IGZyb20gJy4vWmlwRnVuY3Rpb24nO1xuaW1wb3J0IHsgQ29udGFpbmVyRnVuY3Rpb24sIENvbnRhaW5lckZ1bmN0aW9uUHJvcHMgfSBmcm9tICcuL0NvbnRhaW5lckZ1bmN0aW9uJztcblxuLy8gQmFzZWQgb246IGh0dHBzOi8vZWR3aW5yYWR0a2UuY29tL2V2ZW50dGFyZ2V0c1xuXG4vKipcbiAqXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2NoZWR1bGVkRnVuY3Rpb25Qcm9wcyB7XG4gIGxhbWJkYTogRnVuY3Rpb24sXG4gIHNjaGVkdWxlOiBTY2hlZHVsZSxcbiAgZGVzY3JpcHRpb24/OiBzdHJpbmcsXG59XG5cbi8qKlxuICogQSBMYW1iZGEgZnVuY3Rpb24gdHJpZ2dlcmVkIGJ5IHNjaGVkdWxlZCBDbG91ZHdhdGNoIGV2ZW50cy5cbiAqXG4gKiBUaGUgZGVmYXVsdCBzY2hlZHVsZSBpcyBTY2hlZHVsZS5jcm9uKHsgbWludXRlOiAnMTEnLCBob3VyOiAnMScgfSlcbiAqIFdoaWNoIHNldHMgJzExIDEgKiAqID8gKicgKGkuZS4gMToxMWFtIGV2ZXJ5IGRheSlcbiAqXG4gKiBZb3UgY2FuIGFsc28gcGFzcyBhbiBvcHRpb25hbCBkZXNjcmlwdGlvbiBmb3IgdGhlIHJ1bGUgZm9yIHJlYWRhYmlsaXR5IGluIHRoZSBDbG91ZHdhdGNoIHZpZXcgaW4gdGhlIEFXUyBjb25zb2xlLlxuICovXG5leHBvcnQgY2xhc3MgU2NoZWR1bGVkRnVuY3Rpb24gZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICBsYW1iZGE6IEZ1bmN0aW9uO1xuXG4gIHJ1bGU6IFJ1bGU7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgc2NvcGU6IENvbnN0cnVjdCxcbiAgICBpZDogc3RyaW5nLFxuICAgIHByb3BzOiBTY2hlZHVsZWRGdW5jdGlvblByb3BzLFxuICApIHtcbiAgICBzdXBlcihzY29wZSwgYCR7aWR9U2NoZWR1bGVkRnVuY3Rpb25gKTtcblxuICAgIHRoaXMubGFtYmRhID0gcHJvcHMubGFtYmRhO1xuXG4gICAgdGhpcy5ydWxlID0gbmV3IFJ1bGUoc2NvcGUsIGAke2lkfVRyaWdnZXJgLCB7XG4gICAgICBzY2hlZHVsZTogcHJvcHMuc2NoZWR1bGUgfHwgU2NoZWR1bGUuY3Jvbih7IG1pbnV0ZTogJzExJywgaG91cjogJzEnIH0pLFxuICAgICAgdGFyZ2V0czogW25ldyBMYW1iZGFGdW5jdGlvbihwcm9wcy5sYW1iZGEpXSxcbiAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcy5kZXNjcmlwdGlvbixcbiAgICB9KTtcbiAgfVxuXG4gIHN0YXRpYyBub2RlKFxuICAgIHNjb3BlOiBDb25zdHJ1Y3QsXG4gICAgaWQ6IHN0cmluZyxcbiAgICBmdW5jdGlvblByb3BzPzogWmlwRnVuY3Rpb25Qcm9wcyxcbiAgICBzY2hlZHVsZTogU2NoZWR1bGUgPSBTY2hlZHVsZS5jcm9uKHsgbWludXRlOiAnMTEnLCBob3VyOiAnMScgfSksXG4gICAgZGVzY3JpcHRpb246IHN0cmluZyB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZCxcbiAgKTogU2NoZWR1bGVkRnVuY3Rpb24ge1xuICAgIGNvbnN0IGxhbWJkYSA9IFppcEZ1bmN0aW9uLm5vZGUoc2NvcGUsIGlkLCBmdW5jdGlvblByb3BzKTtcbiAgICByZXR1cm4gbmV3IFNjaGVkdWxlZEZ1bmN0aW9uKHNjb3BlLCBpZCwgeyBsYW1iZGEsIHNjaGVkdWxlLCBkZXNjcmlwdGlvbiB9KTtcbiAgfVxuXG4gIHN0YXRpYyBweXRob24oXG4gICAgc2NvcGU6IENvbnN0cnVjdCxcbiAgICBpZDogc3RyaW5nLFxuICAgIGZ1bmN0aW9uUHJvcHM/OiBaaXBGdW5jdGlvblByb3BzLFxuICAgIHNjaGVkdWxlOiBTY2hlZHVsZSA9IFNjaGVkdWxlLmNyb24oeyBtaW51dGU6ICcxMScsIGhvdXI6ICcxJyB9KSxcbiAgICBkZXNjcmlwdGlvbjogc3RyaW5nIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkLFxuICApOiBTY2hlZHVsZWRGdW5jdGlvbiB7XG4gICAgY29uc3QgbGFtYmRhID0gWmlwRnVuY3Rpb24ucHl0aG9uKHNjb3BlLCBpZCwgZnVuY3Rpb25Qcm9wcyk7XG4gICAgcmV0dXJuIG5ldyBTY2hlZHVsZWRGdW5jdGlvbihzY29wZSwgaWQsIHsgbGFtYmRhLCBzY2hlZHVsZSwgZGVzY3JpcHRpb24gfSk7XG4gIH1cblxuICBzdGF0aWMgY29udGFpbmVyKFxuICAgIHNjb3BlOiBDb25zdHJ1Y3QsXG4gICAgaWQ6IHN0cmluZyxcbiAgICBmdW5jdGlvblByb3BzPzogQ29udGFpbmVyRnVuY3Rpb25Qcm9wcyxcbiAgICBzY2hlZHVsZTogU2NoZWR1bGUgPSBTY2hlZHVsZS5jcm9uKHsgbWludXRlOiAnMTEnLCBob3VyOiAnMScgfSksXG4gICAgZGVzY3JpcHRpb246IHN0cmluZyB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZCxcbiAgKTogU2NoZWR1bGVkRnVuY3Rpb24ge1xuICAgIGNvbnN0IGxhbWJkYSA9IG5ldyBDb250YWluZXJGdW5jdGlvbihzY29wZSwgaWQsIGZ1bmN0aW9uUHJvcHMpO1xuICAgIHJldHVybiBuZXcgU2NoZWR1bGVkRnVuY3Rpb24oc2NvcGUsIGlkLCB7IGxhbWJkYSwgc2NoZWR1bGUsIGRlc2NyaXB0aW9uIH0pO1xuICB9XG59XG4iXX0=