Skip to main content

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

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.