AWS EventBridge
AWS EventBridge Schedule Expression Builder
Build rate() and cron() schedule expressions for AWS EventBridge. EventBridge uses a 6-field cron (adds year field) with different day-of-week numbering and a mandatory ? constraint.
At 02:00 AM
Valid
- 1Thu, Apr 9, 2026, 2:00 AM
- 2Fri, Apr 10, 2026, 2:00 AM
- 3Sat, Apr 11, 2026, 2:00 AM
- 4Sun, Apr 12, 2026, 2:00 AM
- 5Mon, Apr 13, 2026, 2:00 AM
- 6Tue, Apr 14, 2026, 2:00 AM
- 7Wed, Apr 15, 2026, 2:00 AM
- 8Thu, Apr 16, 2026, 2:00 AM
- 9Fri, Apr 17, 2026, 2:00 AM
- 10Sat, Apr 18, 2026, 2:00 AM
Use in AWS EventBridge
ScheduleExpression: "cron(0 2 * * ? *)"
EventBridge Expression Formats
rate() — Simple intervals
| Expression | Meaning |
|---|---|
rate(1 minute) | Every minute |
rate(5 minutes) | Every 5 minutes |
rate(1 hour) | Every hour |
rate(1 day) | Every 24 hours |
cron() — Complex schedules (6 fields)
| Expression | Meaning |
|---|---|
cron(0 2 * * ? *) | Daily at 2:00 AM UTC (dom=*, dow=?) |
cron(0 9 ? * MON-FRI *) | Weekdays at 9:00 AM UTC (dom=?, weekdays) |
cron(0 0 1 * ? *) | 1st of every month at midnight |
cron(15 10 ? * 6L 2025-2030) | 10:15 AM last Friday, 2025–2030 |
EventBridge cron() Field Reference
| Field | Values | Notes |
|---|---|---|
| Minutes | 0–59 | , - * / |
| Hours | 0–23 | , - * / |
| Day-of-month | 1–31 or ? | Supports L (last), W (nearest weekday) |
| Month | 1–12 or JAN–DEC | , - * / |
| Day-of-week | 1–7 or SUN–SAT | 1=Sun, 7=Sat (not Unix 0–6). Supports L, # |
| Year | 1970–2199 | Required field. Use * for "every year" |
Key rule: Exactly one of day-of-month or day-of-week must be ? — you cannot leave both as *.
AWS EventBridge Schedule FAQ
Why does AWS reject my cron expression with a "Field DayOfMonth and DayOfWeek cannot both be specified" error?
AWS EventBridge cron cannot evaluate both
day-of-month and day-of-week at the same time. Exactly one must be set to ? (meaning "don't care"). cron(0 9 * * MON-FRI *) is invalid; the correct form is cron(0 9 ? * MON-FRI *) (dom=?, specify weekdays). Or cron(0 2 15 * ? *) (dom=15, dow=?). Both cannot be * simultaneously.How is AWS EventBridge day-of-week numbering different from Unix cron?
In AWS EventBridge, day-of-week is 1=Sunday, 2=Monday, 3=Tuesday, 4=Wednesday, 5=Thursday, 6=Friday, 7=Saturday. In standard Unix cron, 0=Sunday, 6=Saturday. You can also use three-letter abbreviations (SUN–SAT) in EventBridge — these are unambiguous and recommended. Example:
cron(0 9 ? * MON-FRI *) rather than cron(0 9 ? * 2-6 *).What is the difference between rate() and cron() in AWS EventBridge?
rate(N unit) fires on a fixed interval since the rule was enabled — e.g. rate(5 minutes) fires every 5 minutes from creation time. cron() fires at specific calendar times regardless of when the rule was created. Use rate() for simple polling intervals; use cron() when the time of day or day of week matters.Do I need to include the year field in every EventBridge cron expression?
Yes. EventBridge cron requires all 6 fields:
minute hour day-of-month month day-of-week year. Use * for the year field to mean "every year" — e.g. cron(0 2 * * ? *). You can also specify a year range to schedule a one-time or time-bounded rule: cron(0 9 ? * MON 2026-2027).What is the minimum EventBridge schedule frequency?
AWS EventBridge supports a minimum of 1 minute using
rate(1 minute). Sub-minute scheduling is not supported in standard EventBridge rules. If you need sub-minute precision, consider Lambda with a 1-minute trigger that checks elapsed time, or AWS EventBridge Scheduler with flexible time windows.