AWS CDK

Run AWS Lambda on schedule

Run AWS Lambda on schedule - AWS CDK

The AWS Lambda service is great for low powered foreground operations like responding to API calls, however, some people use Lambda also for doing medium powered semi-background operations such as periodically synchronizing data between two AWS services (e.g. two DynamoDB tables), aggregating data, sending emails, transitioning S3 files to different storage classes, creating scheduled reports, etc.

A common use case in these latter scenarios is to run the Lambda on a predictable schedule - also called Cron. AWS Lambda doesn’t have such built-in functionality. It can not self-invoke itself on schedule.

However, AWS CloudWatch Rules allows setting up such Cron rules.

import * as lambda from '@aws-cdk/aws-lambda';
import {Rule, Schedule} from '@aws-cdk/aws-events';
import {LambdaFunction} from '@aws-cdk/aws-events-targets';

const lambda = new lambda.Function(...);

new Rule(this, 'Rule', {
    description: "Schedule a Lambda that creates a report every 1st of the month",
    schedule: Schedule.cron({
        year: "*",
        month: "*",
        day: "1",
        hour: "1",
        minute: "1",
    }),
    targets: [new LambdaFunction(lambda)],
});

The above will run the Lambda on the first day of every month. You could adjust the cron expression as per your preferred schedule.

Need help? Get in touch

© 2026 | About me | Contact | Privacy Policy | AWS CDK Constructs