Convert Quartz to AWS EventBridge
Translate Quartz scheduler expressions to EventBridge cron() format: same Sunday=1 numbering, shared L/W/# tokens, seconds dropped, year field added.
About this conversion
This is the friendliest cross-vendor conversion in the set, because Quartz and EventBridge are relatives: both count Sunday as 1, both demand ? in one of the day fields, and both speak the L/W/# calendar tokens — so "first Monday" (2#1) or "last day of the month" (L) survive the move verbatim, with no renumbering anywhere. The real difference is at the ends of the expression: Quartz leads with a seconds field EventBridge doesn't have, and EventBridge trails with a year field that Quartz's common 6-field form — the one this converter speaks — doesn't carry. (Quartz itself defines an optional 7-field variant with a trailing year, but most Quartz configurations use six.)
What changes in this conversion
- The seconds field is dropped (EventBridge has minute resolution) and a year field (*) is appended, inside the cron( … ) wrapper.
- Day-of-week numbering is IDENTICAL (Sunday = 1 in both) — numeric values pass through without shifting, unlike every POSIX-family conversion.
- L, W and # calendar tokens are shared syntax and pass through verbatim.
- The ?-in-one-day-field rule exists in both dialects, so no restructuring is needed.
Worked examples
0 30 9 ? * MON-FRIconverts tocron(30 9 ? * MON-FRI *)lossless0 0 12 ? * 2#1converts tocron(0 12 ? * 2#1 *)lossless0 0 0 L * ?converts tocron(0 0 L * ? *)lossless*/30 * * * * ?converts tocron(* * * * ? *)lossy- ⚠ AWS EventBridge has minute resolution — the seconds constraint (*/30) is dropped; fires at second 0.
Every converted expression above is produced by the same conversion engine the tool uses — generated and integrity-tested, not hand-written.
Lossy and refused conversions
The only lossy case is seconds. A Quartz expression firing at second 0 — which is most of them — converts cleanly. Anything else (a fixed second like 30, or a sub-minute pattern like */30) is dropped to minute resolution and flagged: EventBridge simply has no seconds, and its sixth field being year is precisely the confusion the cron() wrapper hides. Twice-a-minute Quartz jobs become once-a-minute EventBridge rules, and the converter tells you so rather than letting the halved cadence surface in production metrics.
FAQ
Do I need to renumber days of the week?
No — this is the rare pair where numbering matches. Both Quartz and EventBridge count Sunday as 1, so 2-6 means Monday–Friday in both. Renumbering only enters when either side of a conversion is in the POSIX family.
Does EventBridge understand Quartz's L, W and # tokens?
Yes — EventBridge adopted Quartz-style calendar tokens, so last-day, nearest-weekday and nth-weekday schedules convert verbatim. It's the POSIX family that can't express them.