TechCompare LogoTechCompare

AWS EventBridge cron vs rate expressions: which scheduler syntax to use

Use rate() for simple recurring intervals (every 5 minutes, every hour, every day). Use cron() for wall-clock schedules (midnight, first Monday of the month, 9 AM weekdays). For new work, use EventBridge Scheduler and set ScheduleExpressionTimezone when local clock time matters. Legacy scheduled rules remain UTC-only.

AWS EventBridge (formerly CloudWatch Events) supports two schedule expression types: cron(fields) for precise wall-clock scheduling and rate(value unit) for simple recurring intervals. Despite the name, EventBridge cron expressions use 6 fields (not 5), adding a year field. The extra field catches people migrating from Linux cron.

By TechCompare · Updated

Schedule pattern
AWS EventBridge schedules
aws-eventbridge
Category
Platforms
Cloud and container scheduling

How this is calculated

EventBridge cron: cron(0 0 * * ? *) runs at midnight UTC every day. The 6 fields are minute, hour, day-of-month, month, day-of-week, year. The ? placeholder means 'no specific value' and is required in either the day-of-month or day-of-week field. EventBridge rate: rate(5 minutes) starts from the rule creation time, or from a configured StartDate in EventBridge Scheduler. Rate expressions support minute, hour, and day units. Legacy scheduled rules are UTC-only and don't accept ScheduleExpressionTimezone. EventBridge Scheduler is a separate, recommended service that accepts ScheduleExpressionTimezone on CreateSchedule for cron schedules that need local time and daylight saving adjustments.

Verdict

EventBridge cron syntax uses six fields, with a year slot that catches people migrating from Linux cron, and the ? placeholder is mandatory in either day-of-month or day-of-week. rate() handles fixed intervals like 'every 5 minutes' but tops out at day units, so it won't express 'first Monday' or '9 AM weekdays.' EventBridge Scheduler adds per-schedule time zones through CreateSchedule. Legacy EventBridge scheduled rules don't have that parameter and always evaluate in UTC.

More Cron scenarios

Frequently asked questions

What's the difference between EventBridge cron() and rate() expressions?
rate() expresses simple fixed intervals: rate(5 minutes), rate(1 hour), rate(7 days), and nothing more complex. cron() expresses wall-clock schedules: midnight UTC daily, 9 AM on weekdays, the first of the month. If you can say it as 'every N units,' use rate(). If it references a clock time or a calendar pattern, you need cron().
Why does EventBridge cron have 6 fields instead of 5?
EventBridge adds a year field at the end: minute, hour, day-of-month, month, day-of-week, year. It also requires a ? placeholder in either the day-of-month or day-of-week field. Linux cron's 5-field expressions don't paste in directly - 0 0 * * * becomes cron(0 0 * * ? *), and every ? versus * mistake shows up as a validation error at deploy time.
Why did my EventBridge schedule fire at the wrong time?
Legacy EventBridge scheduled rules always evaluate in UTC and have no timezone parameter. EventBridge Scheduler is the separate, recommended service for local clock schedules. Set ScheduleExpressionTimezone when you create a Scheduler cron schedule and it will apply the selected zone's daylight saving changes. If you keep a legacy rule, convert the intended local time to UTC and maintain daylight saving changes yourself.