通过Terraform创建AWS Scheduler失败:Cron表达式验证错误
问题原因及解决方案
核心原因
AWS Scheduler(原EventBridge Scheduler)的cron表达式规则和标准Linux cron存在差异,你的表达式cron(0 23 * * *)违反了关键规则:
- 日与周字段冲突:AWS不允许同时将
Day-of-month(第3位)和Day-of-week(第5位)设为*,这会导致调度逻辑歧义,必须用?表示忽略其中一个字段。 - 即使省略可选的
Year字段,只要日/周字段同时为*,就会触发验证错误。
解决方案
根据你每天23:00执行任务的需求,修改为以下任意一种合法表达式即可:
方案1:省略Year字段(推荐)
schedule_expression = "cron(0 23 * * ?)"
用?替代周字段的*,明确表示按日维度调度,忽略周维度。
方案2:包含Year字段
如果需要指定年份范围,可补充Year字段(同样需避免日/周冲突):
schedule_expression = "cron(0 23 * * ? 2024-2025)"
或用通配符表示所有年份:
schedule_expression = "cron(0 23 * * ? *)"
内容的提问来源于stack exchange,提问作者pkaramol
相关产品推荐
相关产品推荐

