Skip to content
cron.surf

Convert AWS EventBridge cron to Kubernetes

AWS EventBridge writes cron(min hour dom mon dow year); Kubernetes writes min hour dom mon dow. Paste an expression to convert it. Anything that does not map exactly is flagged with the reason and a workaround.

“At 00:00, on the last day of the month”

To · KubernetesCan’t convert
  • day of month: Kubernetes has no “last day of the month”. Months end on the 28th to the 31st, so no single day matches.

    WorkaroundRun on days 28-31 and exit unless tomorrow is the 1st. Needs GNU date; in crontab, % is escaped as \%.
    0 0 28-31 * *  # job: [ "$(date -d tomorrow +%d)" = "01" ] || exit 0
    Not equivalent on its own: it needs a check inside the job.

Same schedule on other platforms

crontabCan’t convert
  • day of month: crontab has no “last day of the month”. Months end on the 28th to the 31st, so no single day matches.

    WorkaroundRun on days 28-31 and exit unless tomorrow is the 1st. Needs GNU date; in crontab, % is escaped as \%.
    0 0 28-31 * * [ "$(date -d tomorrow +\%d)" = "01" ] && /path/to/job
    Not equivalent on its own: it needs a check inside the job.
GitHub ActionsCan’t convert
  • day of month: GitHub Actions has no “last day of the month”. Months end on the 28th to the 31st, so no single day matches.

    WorkaroundRun on days 28-31 and exit unless tomorrow is the 1st. Needs GNU date; in crontab, % is escaped as \%.
    0 0 28-31 * *  # job: [ "$(date -d tomorrow +%d)" = "01" ] || exit 0
    Not equivalent on its own: it needs a check inside the job.

Runs late on GitHub? Start it on the minute →

SpringExact
0 0 0 L * *
Six fields, seconds first; set zone= or it uses the server zone.
QuartzExact
0 0 0 L * ?
Seconds first, Sunday is 1, one day field must be ?.

Next 10 runs

computed in your browser
  1. Calculating…

AWS EventBridge vs Kubernetes

AWS EventBridgeKubernetes
Fieldscron(min hour dom mon dow year)min hour dom mon dow
Sunday1 (SUN=1 … SAT=7)0 (7 is an error)
Day and weekday both setone of them must be ?either matches; only * or ? leaves a field open
Special charactersL W # (one #)none
Shortcutsnone; rate() for intervals@yearly @monthly @weekly @daily @hourly
Time zoneIANA zone in Scheduler, UTC by defaultspec.timeZone, else the controller’s zone
Shortest interval1 minute1 minute

Common schedules, converted

AWS EventBridgeKubernetes
Every 5 minutescron(0/5 * * * ? *)*/5 * * * *
Every hourcron(0 * * * ? *)0 * * * *
Every minutecron(* * * * ? *)* * * * *
Every 10 minutescron(0/10 * * * ? *)*/10 * * * *
Every 15 minutescron(0/15 * * * ? *)*/15 * * * *
Every 30 minutescron(0/30 * * * ? *)*/30 * * * *
Daily at midnightcron(0 0 * * ? *)0 0 * * *
Daily at 9 amcron(0 9 * * ? *)0 9 * * *
Weekdays at 9 amcron(0 9 ? * 2-6 *)0 9 * * 1-5
Every Mondaycron(0 0 ? * 2 *)0 0 * * 1
First day of the monthcron(0 0 1 * ? *)0 0 1 * *
Every 6 hourscron(0 0/6 * * ? *)0 */6 * * *
Every Sunday at midnightcron(0 0 ? * 1 *)0 0 * * 0
Every 2 hourscron(0 0/2 * * ? *)0 */2 * * *
Every 12 hourscron(0 0/12 * * ? *)0 */12 * * *
Daily at nooncron(0 12 * * ? *)0 12 * * *
Every Fridaycron(0 0 ? * 6 *)0 0 * * 5
Last day of the monthcron(0 0 L * ? *)Can’t convert
Every quartercron(0 0 1 1/3 ? *)0 0 1 */3 *
Every 2 minutescron(0/2 * * * ? *)*/2 * * * *
Every 3 hourscron(0 0/3 * * ? *)0 */3 * * *
Daily at 6 amcron(0 6 * * ? *)0 6 * * *
Daily at 6 pmcron(0 18 * * ? *)0 18 * * *
Twice a daycron(0 0/12 * * ? *)0 */12 * * *
Weekdays at 6 pmcron(0 18 ? * 2-6 *)0 18 * * 1-5
Weekends at 10 amcron(0 10 ? * 1,7 *)0 10 * * 0,6
15th of the monthcron(0 0 15 * ? *)0 0 15 * *
First Monday of the monthcron(0 9 ? * 2#1 *)Can’t convert
Last Friday of the monthcron(0 17 ? * 6L *)Can’t convert
Once a yearcron(0 0 1 1 ? *)0 0 1 1 *
Every 3 minutescron(0/3 * * * ? *)*/3 * * * *
Every 20 minutescron(0/20 * * * ? *)*/20 * * * *
Every 4 hourscron(0 0/4 * * ? *)0 */4 * * *
Every 8 hourscron(0 0/8 * * ? *)0 */8 * * *
Daily at 1 amcron(0 1 * * ? *)0 1 * * *
Daily at 2 amcron(0 2 * * ? *)0 2 * * *
Daily at 3 amcron(0 3 * * ? *)0 3 * * *
Daily at 8 amcron(0 8 * * ? *)0 8 * * *
Every weekdaycron(0 0 ? * 2-6 *)0 0 * * 1-5
Every weekend daycron(0 0 ? * 1,7 *)0 0 * * 0,6
Every Tuesdaycron(0 0 ? * 3 *)0 0 * * 2
Every Wednesdaycron(0 0 ? * 4 *)0 0 * * 3
Every Thursdaycron(0 0 ? * 5 *)0 0 * * 4
Every Saturdaycron(0 0 ? * 7 *)0 0 * * 6
Every 6 monthscron(0 0 1 1/6 ? *)0 0 1 */6 *

FAQ

Can every AWS EventBridge expression be converted to Kubernetes?

Not all. Of the 45 common schedules on this page, 42 convert exactly. The rest need a workaround, which the converter shows.

How is Sunday written in AWS EventBridge and Kubernetes?

AWS EventBridge: 1 (SUN=1 … SAT=7). Kubernetes: 0 (7 is an error).

Does the time zone carry over?

The expression has no time zone. AWS EventBridge: IANA zone in Scheduler, UTC by default. Kubernetes: spec.timeZone, else the controller’s zone.