AWS Cron 语法
EventBridge 表达式形如 cron(0 12 * * ? *),包含六个字段:分钟、小时、日、月、星期和年。它没有秒字段,所以最小精度是 1 分钟。星期编号为 1(星期日)到 7(星期六),也可以写成 MON-FRI 这样的英文缩写。
必须遵守的规则
两个日期字段之一必须为“?”:工作日早上可写 cron(0 8 ? * MON-FRI *),每月 1 日可写 cron(0 8 1 * ? *)。年字段是必填的,每年都运行时写 *。日期字段支持 L、W 和 #,例如 cron(0 18 L * ? *) 表示每月最后一天。
时区
EventBridge 定时规则始终按 UTC 运行,因此工具默认按 UTC 计算 AWS 表达式,并在每次运行旁边显示你的本地时间。EventBridge Scheduler 可以为调度设置时区;这种情况下请在时区选择器中选择相同的时区,以便正确预览。
用 cron 还是 rate?
对于每 15 分钟这样的固定间隔,rate 表达式更简单:rate(15 minutes) 从规则创建时开始计时。如果任务必须在日历时间运行——工作日 08:00、每月最后一天或仅限某一年——就用 cron。EventBridge Scheduler 还支持一次性的 at(...) 调度,以及可以分散调用的弹性时间窗口。
常见问题
- 为什么 AWS 拒绝了我的 Cron 表达式?
- 常见原因是写了五个字段而不是六个、缺少年字段,或者“日”和“星期”字段中都没有“?”。错误信息会指出出错的字段。
- 如何用 Cron 让 Lambda 每 5 分钟运行一次?
- 使用 cron(0/5 * * * ? *)。对于简单的间隔,EventBridge 也支持 rate(5 minutes)。
- AWS Cron 使用 UTC 吗?
- EventBridge 规则是的。EventBridge Scheduler 允许为每个调度单独设置时区。
- 最短间隔是多少?
- 1 分钟,因为 AWS Cron 没有秒字段。