跳到正文
cron.surf

让 AWS EventBridge 调度每 10 分钟运行

AWS EventBridge 中“每 10 分钟”的表达式是 cron(0/10 * * * ? *)。下面是可直接粘贴的配置、接下来的运行时间和需要注意的地方。 AWS EventBridge Scheduler 使用 cron(),六个字段从分钟到年,按你设置的时区运行(默认 UTC)。

cron(0/10 * * * ? *)在工具中打开

“每隔 10 分钟”

EventBridge Scheduler

AWS CLI (EventBridge Scheduler)
aws scheduler create-schedule \
  --name every-10-minutes \
  --schedule-expression "cron(0/10 * * * ? *)" \
  --schedule-expression-timezone "UTC" \
  --flexible-time-window Mode=OFF \
  --target '{"Arn":"arn:aws:lambda:REGION:ACCOUNT:function:my-job","RoleArn":"arn:aws:iam::ACCOUNT:role/scheduler-invoke"}'
Terraform
resource "aws_scheduler_schedule" "every_10_minutes" {
  name                         = "every-10-minutes"
  schedule_expression          = "cron(0/10 * * * ? *)"
  schedule_expression_timezone = "UTC"

  flexible_time_window {
    mode = "OFF"
  }

  target {
    arn      = aws_lambda_function.job.arn
    role_arn = aws_iam_role.scheduler.arn
  }
}

AWS EventBridge 的坑

cron() 里是六个字段分、时、日、月、星期、年。没有秒字段。
一个日期字段必须是 ?设置了“日”,“星期”就写 ?,反之亦然。两个都设置会报错。
周日是 1星期是 1-7,从 SUN 开始,所以 2-6 是周一到周五。
星期字段不能用步长星期字段支持列表、范围、L 和一个 #,不支持 /。请直接列出日期。

常见问题

AWS EventBridge 中“每 10 分钟”的 cron 表达式是什么?

cron(0/10 * * * ? *)。含义:每隔 10 分钟

AWS EventBridge 的定时任务按哪个时区运行?

EventBridge Scheduler 用 --schedule-expression-timezone 设置 IANA 时区,默认 UTC。旧的 EventBridge 规则只能用 UTC。

rate() 和 cron() 有什么区别?

rate(5 minutes) 从调度开始时起按固定间隔运行;cron() 按钟点运行。在意具体分钟就用 cron()。

用 EventBridge Scheduler 还是 EventBridge 规则?

AWS 推荐新调度使用 EventBridge Scheduler:支持时区和一次性调度。规则只能用 UTC。