Skip to content
22K
Console

Cron

Reference doc for the `sst.aws.Cron` component.

The Cron component lets you add cron jobs to your app using Amazon Event Bus. The cron job can invoke a Function or a container Task.

Cron job function

Pass in a schedule and a function that’ll be executed.

sst.config.ts
new sst.aws.Cron("MyCronJob", {
function: "src/cron.handler",
schedule: "rate(1 minute)"
});

Cron job container task

Create a container task and pass in a schedule and a task that’ll be executed.

sst.config.ts
const myCluster = new sst.aws.Cluster("MyCluster");
const myTask = myCluster.addTask("MyTask");
new sst.aws.Cron("MyCronJob", {
task: myTask,
schedule: "rate(1 day)"
});

Customize the function

sst.config.ts
new sst.aws.Cron("MyCronJob", {
schedule: "rate(1 minute)",
function: {
handler: "src/cron.handler",
timeout: "60 seconds"
}
});

Constructor

new Cron(name, args, opts?)

Parameters

CronArgs

enabled?

Type Input<boolean>

Default true

Configures whether the cron job is enabled. When disabled, the cron job won’t run.

{
enabled: false
}

event?

Type Input<Record<string, Input<string>>>

The event that’ll be passed to the function or task.

{
event: {
foo: "bar",
}
}

For Lambda functions, the event will be passed to the function as an event.

function handler(event) {
console.log(event.foo);
}

For ECS Fargate tasks, the event will be passed to the task as the SST_EVENT environment variable.

const event = JSON.parse(process.env.SST_EVENT);
console.log(event.foo);

function?

Type Input<string | FunctionArgs | “arn:aws:lambda:${string}”>

The function that’ll be executed when the cron job runs.

{
function: "src/cron.handler"
}

You can pass in the full function props.

{
function: {
handler: "src/cron.handler",
timeout: "60 seconds"
}
}

You can also pass in a function ARN.

{
function: "arn:aws:lambda:us-east-1:000000000000:function:my-sst-app-jayair-MyFunction",
}

schedule

Type Input<rate(${string}) | cron(${string})>

The schedule for the cron job.

You can use a rate expression.

{
schedule: "rate(5 minutes)"
// schedule: "rate(1 minute)"
// schedule: "rate(5 minutes)"
// schedule: "rate(1 hour)"
// schedule: "rate(5 hours)"
// schedule: "rate(1 day)"
// schedule: "rate(5 days)"
}

Or a cron expression.

{
schedule: "cron(15 10 * * ? *)", // 10:15 AM (UTC) every day
}

task?

Type Task

The task that’ll be executed when the cron job runs.

For example, let’s say you have a task.

sst.config.ts
const myCluster = new sst.aws.Cluster("MyCluster");
const myTask = myCluster.addTask("MyTask");

You can then pass in the task to the cron job.

sst.config.ts
new sst.aws.Cron("MyCronJob", {
task: myTask,
schedule: "rate(1 minute)"
});

transform?

Type Object

Transform how this component creates its underlying resources.

transform.rule?

Type EventRuleArgs | (args: EventRuleArgs, opts: ComponentResourceOptions, name: string) => void

Transform the EventBridge Rule resource.

transform.target?

Type EventTargetArgs | (args: EventTargetArgs, opts: ComponentResourceOptions, name: string) => void

Transform the EventBridge Target resource.

Properties

nodes

Type Object

The underlying resources this component creates.

nodes.rule

Type EventRule

The EventBridge Rule resource.

nodes.target

Type EventTarget

The EventBridge Target resource.

nodes.function

Type Output<Function>

The AWS Lambda Function that’ll be invoked when the cron job runs.

nodes.job

Type Output<Function>

The AWS Lambda Function that’ll be invoked when the cron job runs.