Skip to main content

AWS cron expressions - full guide for EventBridge & Lambda

At 04:30, every day.

Next runs · UTC

Calendar

September 2026 · UTC

0 runs

About this tool

AWS cron expressions are a 6-field Quartz-style format used by EventBridge Rules, EventBridge Scheduler, Lambda Scheduled events and CloudWatch Events. Always wrapped in cron(...), always six fields, and the day-of-month / day-of-week conflict always resolved with ?.
See the extended cron expression editor to test AWS-flavoured expressions interactively, or the AWS last-day-of-month guide for the most-asked AWS cron pattern.

AWS cron syntax - the 6 fields

crontab
cron(MIN HOUR DOM MONTH DOW YEAR)
cron( 0   9   ?   *    MON-FRI *  )
  • Minute 0-59
  • Hour 0-23
  • Day-of-month 1-31, or ?, L, W, L-N
  • Month 1-12 or JAN-DEC
  • Day-of-week 1-7 or SUN-SAT, or ?, L, #
  • Year 1970-2199 (most users put *)

Common AWS cron expressions

  • cron(* * * * ? *) - every minute
  • cron(*/5 * * * ? *) - every 5 minutes
  • cron(*/15 * * * ? *) - every 15 minutes
  • cron(0 * * * ? *) - every hour
  • cron(0 9 * * ? *) - daily at 09:00 UTC
  • cron(0 9 ? * MON-FRI *) - weekdays at 09:00
  • cron(0 0 1 * ? *) - first of every month at midnight
  • cron(0 0 L * ? *) - last day of every month at midnight
  • cron(0 9 ? * 6L *) - last Friday of every month at 09:00
  • cron(0 9 ? * 2#1 *) - first Monday of every month at 09:00

AWS CDK example

ts
import * as events from 'aws-cdk-lib/aws-events';
import * as targets from 'aws-cdk-lib/aws-events-targets';


new events.Rule(this, 'WeekdayMorningRule', {
  schedule: events.Schedule.expression('cron(0 9 ? * MON-FRI *)'),
  targets: [new targets.LambdaFunction(myLambda)],
});

For the newer EventBridge Scheduler:

ts
import * as scheduler from 'aws-cdk-lib/aws-scheduler';


new scheduler.CfnSchedule(this, 'WeekdayMorningSchedule', {
  scheduleExpression: 'cron(0 9 ? * MON-FRI *)',
  scheduleExpressionTimezone: 'America/New_York',
  flexibleTimeWindow: { mode: 'OFF' },
  target: { arn: myLambda.functionArn, roleArn: schedulerRole.roleArn },
});

Common AWS cron pitfalls

  • 5 fields rejected - you must include the year, even if it's *.
  • UTC by default - EventBridge Rules ignore the system timezone. Use EventBridge Scheduler with ScheduleExpressionTimezone for local time.
  • Both day fields restricted - AWS rejects expressions with values in both day-of-month and day-of-week. Use ? in one.
  • Latency tolerance - EventBridge guarantees fire-within-a-minute, not fire-at-the-second.

Examples

  • 0 18 * * *
    Every day at 18:00
  • 0 */5 * * *
    Every 5 hours
  • 0 18 * * 1-5
    Weekdays at 18:00
  • 0 0 1 * *
    Once a month, on the 1st at midnight

Cheatsheet

Full cheatsheet
FieldReq.RangeWildcards
minuteyes0-59, - * /
houryes0-23, - * /
day of monthyes1-31, - * /
monthyes1-12 or JAN-DEC, - * /
day of weekyes0-6 or names; some dialects use 0-7 or 1-7 — see Dialects, - * /

Frequently asked questions

Syntax

How many fields does an AWS cron expression have?

Six: minute, hour, day-of-month, month, day-of-week, year. The expression is wrapped in cron(...). Standard 5-field Unix crontab is rejected - you must include the year (use * for every year).

AWS dialect reference
Which Quartz modifiers does AWS support?

AWS supports ? for an unspecified day field, L for last-day rules, W for the weekday nearest a day-of-month, and # for an nth weekday. It also supports *, ,, -, and /.

Operator matrix
Can an AWS cron expression target one year?

Yes. Put the year in the sixth field, such as cron(0 9 1 1 ? 2027) for 09:00 UTC on January 1, 2027. Expression: 0 9 1 1 ? 2027

Open in editor
Field reference

Timing

When should I use rate(...) instead of cron(...)?

Use rate(1 minute) for one minute and rate(N minutes) for larger intervals, with the same singular/plural rule for hours and days. Rate schedules are relative intervals; use cron(...) for specific calendar times such as 09:00 on weekdays.

AWS cron guide
What AWS cron runs every day at noon?

Use cron(0 12 * * ? *). The editor expression is the bare six-field value; AWS configuration adds the cron(...) wrapper. Expression: 0 12 * * ? *

Open in editor
AWS examples
Can EventBridge cron run every second?

No. EventBridge cron has no seconds field and its minimum interval is one minute. Use cron(* * * * ? *) for every minute. Expression: * * * * ? *

Open in editor
Dialect limits

Days and months

Why must I use ? in either day-of-month or day-of-week?

AWS follows the Quartz convention: you can specify either day-of-month or day-of-week as a value, but not both. Exactly one must be ? (no specific value). The most common pattern is cron(0 9 * * ? *) (every day at 09:00) or cron(0 9 ? * MON-FRI *) (every weekday at 09:00).

Day-field rules
What AWS cron runs at noon on weekdays?

Use cron(0 12 ? * MON-FRI *). The ? leaves day-of-month unspecified while MON-FRI defines the weekday range. Expression: 0 12 ? * MON-FRI *

Open in editor
AWS examples
What AWS cron runs on the last day of every month?

Use cron(0 0 L * ? *) for midnight on the final calendar day of each month. L is in day-of-month, so day-of-week is ?. Expression: 0 0 L * ? *

Open in editor
AWS month-end guide
What AWS cron runs on the second Monday of each month?

Use cron(0 9 ? * MON#2 *) for 09:00 on the second Monday. The # operator selects the nth weekday occurrence. Expression: 0 9 ? * MON#2 *

Open in editor
Nth-weekday operator

Timezones and DST

What timezone do AWS cron expressions use?

By default, all EventBridge Rules run in UTC. The newer EventBridge Scheduler (a separate service) supports a ScheduleExpressionTimezone parameter - pass an IANA timezone like 'America/New_York' to schedule in local time.

Timezone reference
How does EventBridge Scheduler handle daylight-saving time?

With an IANA timezone, EventBridge Scheduler skips a nonexistent spring-forward local time and runs once, not twice, when fall-back repeats a local time. EventBridge Rules remain UTC.

Timezone reference

Platforms

What's the difference between EventBridge Rules and EventBridge Scheduler?

EventBridge Rules combine event routing with UTC schedules. EventBridge Scheduler is the dedicated scheduling service and adds IANA timezones, one-time schedules, flexible delivery windows, retries, and dead-letter queues. Both accept cron(...) expressions.

AWS scheduler comparison

Debugging

Why does AWS reject a valid-looking five-field cron?

AWS requires six fields including year and the cron(...) wrapper. Add ? to one day field and a year such as *, then validate the bare six-field value in the editor.

AWS syntax guide

Crontap

Can I run an AWS-style schedule on Crontap?

You can run the equivalent HTTP schedule on Crontap after converting the AWS wrapper to the editor's bare expression and choosing the intended timezone.

Schedule API calls

Write the cron here. Run it on Crontap.

Point Crontap at any URL. Pick any cron. Done.

WordPress, Shopify, Railway, Cloud Run, Vercel, HubSpot, Ghost, your own box. If it answers HTTP, Crontap can drive it on a clock you can read, in the timezone that actually matters, and page you when something breaks.

1.9k+ teams · Free forever tier · No credit card