* Cron Dialect

AWS EventBridge (6 Fields)


* Quick Answer

AWS EventBridge (formerly CloudWatch Events) supports two expression formats: cron() for calendar-based schedules and rate() for simple recurring intervals. The cron() format is a 6-field variant requiring a year field and the ? operator in either DOM or DOW. All times are UTC with no timezone support — a critical operational consideration for global applications.

Field Reference

This dialect uses 6 fields. Fields are listed left to right as they appear in the expression.

Position Field Range Special Chars Notes
1 Minute 0–59 * , - /
2 Hour 0–23 * , - / UTC only. No timezone conversion available.
3 Day of Month 1–31 * , - / ? L W Use ? if DOW is specified. L = last day of month. W = nearest weekday.
4 Month 1–12 * , - / Named: JAN, FEB, MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV, DEC.
5 Day of Week 1–7 (SUN=1) * , - / ? L # SUN=1, MON=2, TUE=3, WED=4, THU=5, FRI=6, SAT=7. Named values also valid.
6 Year 1970–2199 * , - / Required. Use * for all years on recurring schedules.

Special Characters

AWS uses the same special character set as Quartz: ? (no specific value, required in DOM or DOW), L (last day of month or last weekday of month), W (nearest weekday), and # (Nth weekday). The key difference from Quartz is that ? is mandatory — AWS will reject an expression where both DOM and DOW contain specific values or both contain *. Always use ? in the field you are not constraining.

Examples

Partner BetterStack

Monitor your EventBridge schedules in production

Get alerted the moment this cron job fails, is late, or doesn't run. BetterStack tracks execution, duration, and output — no infrastructure required.

Common Gotchas

UTC only — no timezone support in cron()

AWS EventBridge cron expressions always execute in UTC. If you want a job at 9 AM New York time (UTC-5), you must write cron(0 14 ? * MON-FRI *). During daylight saving, you need to update the expression manually — or use EventBridge Scheduler (a newer service) which supports IANA timezone strings.

? is mandatory, not optional

Unlike Quartz where ? is conventional, AWS enforces it. An expression with * in both DOM and DOW (e.g. cron(0 12 * * * *)) will be rejected with a validation error. You must use ? in exactly one of the two fields.

DOW numbering: SUN=1, not SUN=0

AWS uses 1-based DOW numbering starting from Sunday (SUN=1, SAT=7), the same as Quartz. A standard cron '5' means Friday; in AWS cron(…? * 5 *) means Thursday. Using named values (MON, TUE, etc.) avoids this confusion entirely.

rate() does not guarantee exact alignment

A rate(1 hour) rule fires approximately every hour from the time the rule was created or last enabled, not necessarily on the hour boundary. If you need alignment to clock hours (e.g. exactly :00 each hour), use cron(0 * * * ? *) instead.

Minimum rate is 1 minute; maximum cron precision is 1 minute

AWS EventBridge does not support sub-minute schedules. rate(30 seconds) is invalid. The finest granularity is rate(1 minute) or cron(*/1 * * * ? *). For sub-minute Lambda invocations, consider a separate orchestration pattern.

Porting from Standard Cron

Converting from standard 5-field to AWS cron(): wrap in cron(), append a * year field, change DOW values by adding 1 (0-based Sunday becomes 1), and add ? to whichever of DOM or DOW you are not specifying. Standard '0 12 * * *' becomes cron(0 12 * * ? *). Standard '0 9 * * 1-5' (Mon-Fri) becomes cron(0 9 ? * MON-FRI *) — using named values sidesteps the numbering shift.

How This Dialect Differs from Standard Cron

AWS EventBridge cron expressions use 6 fields: Minutes, Hours, Day-of-month, Month, Day-of-week, Year. The Year field (1970–2199) is mandatory. Day-of-month and Day-of-week are mutually exclusive — one must always be ? (no specified value). The W (nearest weekday) and L (last) special characters are supported. AWS uses 1–7 for Sunday–Saturday in the Day-of-week field (Sunday = 1), unlike standard cron where Sunday = 0 or 7. Standard cron expressions require the Year field and ? adjustment before use in EventBridge.

Aspect Standard Cron AWS
Field count 5 fields 6 fields
Seconds precision No No
Year field No Optional / Required
Special chars beyond * , - / None L W ?
DOM / DOW conflict rule OR combination Mutually exclusive — one must be ?

Other Dialects