Skip to main content

Cron

caution

This is the SST v1.x Constructs doc. SST v2 is now released. If you are using v2, see the v2 Constructs doc. If you are looking to upgrade to v2, check out the upgrade steps.

The Cron construct is a higher level CDK construct that makes it easy to create a cron job. You can create a cron job by handler function and specifying the schedule it needs to run on. Internally this construct uses a EventBridge Rule.

Examples​

Rate schedule​

import { Cron } from "@serverless-stack/resources";

new Cron(stack, "Cron", {
schedule: "rate(1 minute)",
job: "src/lambda.main",
});

Cron schedule​

new Cron(stack, "Cron", {
schedule: "cron(15 10 * * ? *)",
job: "src/lambda.main",
});

Permissions​

Allow the function to access S3.

const cron = new Cron(stack, "Cron", {
schedule: "rate(1 minute)",
job: "src/lambda.main",
});

cron.attachPermissions(["s3"]);

Disabling​

Disable the cron job from automatically running while developing.

new Cron(stack, "Cron", {
schedule: "rate(1 minute)",
job: "src/lambda.main",
enabled: app.local,
});

Advanced examples​

Configuring the event rule​

Configure the internally created EventBus Rule.

import { Schedule } from "aws-cdk-lib/aws-events";

new Cron(stack, "Cron", {
job: "src/lambda.main",
cdk: {
rule: {
schedule: Schedule.cron({ minute: "0", hour: "4" }),
}
}
});

Configuring the event target​

Configure the internally created EventBus Target.

import { RuleTargetInput } from "aws-cdk-lib/aws-events";

new Cron(stack, "Cron", {
schedule: "rate(1 minute)",
job: {
function: "src/lambda.main",
cdk: {
target: {
event: RuleTargetInput.fromObject({
key: "value"
}),
},
},
},
});

Constructor​

new Cron(scope, id, props)

Parameters

CronProps​

enabled?​

Type : boolean

Default : true

Indicates whether the cron job is enabled.

new Cron(stack, "Cron", {
job: "src/lambda.main",
schedule: "rate(5 minutes)",
enabled: app.local,
})

job​

Type : string | Function | CronJobProps

The definition of the function to be executed.

new Cron(stack, "Cron", {
job : "src/lambda.main",
schedule: "rate(5 minutes)",
})

schedule?​

Type : rate(${string}) | cron(${string})

The schedule for the cron job. The string format takes a rate expression.

rate(1 minute)
rate(5 minutes)
rate(1 hour)
rate(5 hours)
rate(1 day)
rate(5 days)

Or as a cron expression.

cron(15 10 * * ? *)    // 10:15 AM (UTC) every day.
new Cron(stack, "Cron", {
job: "src/lambda.main",
schedule: "rate(5 minutes)",
});
new Cron(stack, "Cron", {
job: "src/lambda.main",
schedule: "cron(15 10 * * ? *)",
});

cdk.id?​

Type : string

Allows you to override default id for this construct.

cdk.rule?​

Type : RuleProps

Override the default settings this construct uses internally to create the events rule.

Properties​

An instance of Cron has the following properties.

id​

Type : string

jobFunction​

Type : Function

The internally created Function instance that'll be run on schedule.

cdk.rule​

Type : Rule

The internally created CDK EventBridge Rule instance.

Methods​

An instance of Cron has the following methods.

attachPermissions​

attachPermissions(permissions)

Parameters

Attaches the given list of permissions to the cron job. This allows the function to access other AWS resources.

cron.attachPermissions(["s3"]);

bind​

bind(constructs)

Parameters

  • constructs Array<SSTConstruct>

Binds the given list of resources to the cron job.

cron.bind([STRIPE_KEY, bucket]);

CronJobProps​

function​

Type : string | Function | FunctionProps

The function that will be executed when the job runs.

  new Cron(stack, "Cron", {
job: {
function: "src/lambda.main",
},
});

cdk.target?​

Type : LambdaFunctionProps

Override the default settings this construct uses internally to create the events rule.