Skip to main content

Cron

caution

This is the SST v0.x Constructs doc. SST v1 is now released. If you are using v1, see the v1 Constructs doc. If you are looking to upgrade to v1, check out the migration 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.

Initializer

new Cron(scope: Construct, id: string, props: CronProps)

Parameters

Examples

Using the rate expression

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

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

Using the cron expression

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

Using Duration

import { Duration } from "aws-cdk-lib";

new Cron(this, "Cron", {
schedule: Duration.days(1),
job: "src/lambda.main",
});

Using CronOptions

new Cron(this, "Cron", {
schedule: { minute: "0", hour: "4" },
job: "src/lambda.main",
});

Giving the cron job some permissions

Allow the function to access S3.

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

cron.attachPermissions(["s3"]);

Configuring the job

Configure the internally created CDK Event Target.

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

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

Properties

An instance of Cron contains the following properties.

eventsRule

Type : cdk.aws-events.Rule

The internally created CDK EventBridge Rule instance.

jobFunction

Type : Function

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

Methods

An instance of Queue contains the following methods.

attachPermissions

attachPermissions(permissions: Permissions)

Parameters

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

Internally calls Function.attachPermissions.

CronProps

job

Type : FunctionDefinition | CronJobProps, defaults to undefined

Takes FunctionDefinition or CronJobProps object used to create the function for the cron job.

schedule?

Type : string | cdk.Duration | cdk.aws-events.CronOptions

The schedule for the cron job. Can be specified as a string. The string format takes a rate expression.

"rate(_Value Unit_)"

// For example, every 5 minutes
"rate(5 minutes)"

Or as a cron expression.

"cron(Minutes Hours Day-of-month Month Day-of-week Year)"

// For example, 10:15 AM (UTC) every day
"cron(15 10 * * ? *)"

You can also use the cdk.Duration as an alternative to defining the rate expression.

import { Duration } from "aws-cdk-lib";

// Repeat every 5 minutes

// As cdk.Duration
Duration.minutes(5)

// The equivalent rate expression
"rate(5 minutes)"

Similarly, you can specify the cron expression using cdk.aws-events.CronOptions.

// 10:15 AM (UTC) every day

// As cdk.aws-events.CronOptions
{ minute: "15", hour: "10" }

// The equivalent cron expression
"cron(15 10 * * ? *)"

eventsRule?

Type : cdk.aws-events.RuleProps, defaults to undefined

Or optionally pass in a CDK EventBridge RuleProps. This allows you to override the default settings this construct uses internally to create the events rule.

CronJobProps

function

Type : FunctionDefinition

A FunctionDefinition object that'll be used to create the job function for the cron.

jobProps?

Type : cdk.aws-events-targets.LambdaFunctionProps, defaults to undefined

Or optionally pass in a CDK LambdaFunctionProps. This allows you to override the default settings this construct uses internally to create the job.