Cron
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 "sst/constructs";
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.mode === "dev",
})
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?
Type :
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
Type :
cdk.rule
Type : Rule
The internally created CDK EventBridge Rule instance.
Methods
An instance of Cron
has the following methods.
attachPermissions
attachPermissions(permissions)
Parameters
- permissions Permissions
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<BindingResource>
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?
Type :
cdk.target?
Type : LambdaFunctionProps
Override the default settings this construct uses internally to create the events rule.