AWS

Cron Expressions for AWS EventBridge Scheduler

AWS EventBridge (formerly CloudWatch Events) uses a 6-field cron syntax that adds a 'year' field. It also requires '?' in either the day-of-month or day-of-week field — you cannot specify both. All schedules run in UTC.

Format
6-field cron
Fields
6 fields: minute hour day-of-month month day-of-week year
Timezone
UTC (fixed)
Validate your EventBridge cron expression instantly
Paste any cron expression → get a plain-English explanation, next run times, and lint warnings.

Common EventBridge Cron Patterns

Every 5 minutes
0/5 * * * ? *

Runs every 5 minutes (use 0/5 not */5 in EventBridge)

Use caseLambda polling, health checks
Every hour
0 * * * ? *

Runs at the top of every hour

Use caseHourly Lambda trigger, batch processing
Daily at noon UTC
0 12 * * ? *

Runs every day at 12:00 UTC

Use caseMidday report generation, Lambda invocation
Weekdays at 8am UTC
0 8 ? * MON-FRI *

Runs Monday through Friday at 08:00 UTC

Use caseBusiness-hours automation, workday start tasks
Every Monday
0 0 ? * 2 *

Runs every Monday at midnight UTC (2=Monday in EventBridge)

Use caseWeekly jobs, scheduled audits
First of every month
0 0 1 * ? *

Runs at midnight UTC on the 1st

Use caseMonthly invoices, SLO snapshots
Last day of month
0 23 L * ? *

Runs at 23:00 UTC on the last day of every month

Use caseEnd-of-month reporting, data archival
Specific year
0 0 1 1 ? 2027

Runs once on January 1st, 2027 at midnight

Use caseOne-time scheduled task, data migration

AWS EventBridge Rule — Cron Schedule

yamlEventBridge
# AWS CloudFormation template
Resources:
  ScheduledRule:
    Type: AWS::Events::Rule
    Properties:
      Description: "Run Lambda every day at noon UTC"
      ScheduleExpression: "cron(0 12 * * ? *)"
      State: ENABLED
      Targets:
        - Arn: !GetAtt MyFunction.Arn
          Id: "TargetFunctionV1"

  # Permission for EventBridge to invoke Lambda
  PermissionForEventsToInvokeLambda:
    Type: AWS::Lambda::Permission
    Properties:
      FunctionName: !Ref MyFunction
      Action: "lambda:InvokeFunction"
      Principal: "events.amazonaws.com"
      SourceArn: !GetAtt ScheduledRule.Arn

How EventBridge Differs from Standard Crontab

EventBridge adds a 6th 'year' field and requires '?' for day-of-month or day-of-week. Step values use '0/n' instead of '*/n'. Day-of-week numbering starts at 1 (Sunday), not 0. The entire expression must be wrapped in 'cron(...)'.

Common Gotchas & Pitfalls

1

The '?' wildcard is required — use '?' for either day-of-month OR day-of-week (not both).

2

Use '0/5' instead of '*/5' for step values — EventBridge does not support the '*/n' syntax.

3

Day-of-week uses different numbering: SUN=1, MON=2, TUE=3, WED=4, THU=5, FRI=6, SAT=7 (or use 3-letter abbreviations).

4

The expression must be wrapped in 'cron(...)' when using the console or CloudFormation.

5

AWS EventBridge also supports 'rate(5 minutes)' expressions as an alternative to cron.

6

The year field can be a specific year (2025), a range (2025-2027), or '*' for any year.

7

Minimum schedule rate is 1 minute; the 'every second' frequency is not supported.

Other Platform Guides

More Cron Expression Tools

Translate, build, test, and reference cron expressions — all in one place.