Chalice Cron配置周末定时Lambda触发ScheduleExpression报错原因咨询
问题原因与解决方案
核心错误根源
该报错和Chalice框架本身无关,Chalice的Cron方法只是透传参数到AWS EventBridge的定时规则,错误是不符合AWS EventBridge的Cron表达式规范导致的:
AWS Cron明确要求**「日(Day-of-month)」和「周几(Day-of-week)」两个字段不能同时指定具体值/通配符*,必须将其中一个设为?**,用来避免逻辑冲突(同时要求「每月每天」和「仅周末」属于无效逻辑)。
你当前第二个任务的参数:chalice.Cron("0/30", "1-4,12-15", "*", "*", "0,6", "*")
第三个参数(日)设为*、第五个参数(周几)设为0,6,违反了上述规则,因此部署时AWS直接返回参数无效错误。
相关疑问说明
0/30的步长写法、最后一位年的通配符*均是AWS Cron支持的标准语法,通用crontab校验工具提示异常是因为这类工具适配的是Linux原生Cron规范,和AWS Cron规则存在差异,无需在意。- 你之前正常运行的任务就是将周几字段设为
?,避开了两个字段同时指定的问题,因此可以正常部署。
修正后的正确写法
将日字段改为?即可:
@app.schedule(chalice.Cron("0/30", "1-4,12-15", "?", "*", "0,6", "*")) def bar(event):
该表达式会在每周六、周日的1:00-4:59、12:00-15:59时间段内每30分钟触发一次,符合需求。
内容的提问来源于stack exchange,提问作者JickBeNimbler
相关产品推荐
相关产品推荐

