AWS SSM创建状态管理器关联时cron表达式报InvalidSchedule错误
AWS SSM状态管理器cron表达式报错解决方案
核心原因
你遇到的报错不是SSM完全不支持多工作日cron配置,而是SSM状态管理器关联的调度能力有独立的限制规则,和你参考的其他SSM功能的cron支持范围不一样。
具体触发原因
- 状态管理器关联当前仅支持三类合法的cron表达式,暂时不支持周日期范围写法(也就是你用的
MON-FRI这种范围语法):- 固定间隔类:每半小时、1、2、4、8、12小时执行,对应报错提示中的
cron(0 0/30 * 1/1 * ? *)、cron(0 0 0/4 1/1 * ? *) - 每周单个指定工作日的固定时间,对应报错提示中的
cron(0 0 10 ? * SUN *) - 每天固定时间,对应报错提示中的
cron(0 0 10 ? * * *)
- 固定间隔类:每半小时、1、2、4、8、12小时执行,对应报错提示中的
- 你提到的官方文档中
cron(0 18 ? * MON-FRI *)示例是SSM维护窗口(Maintenance Windows)的支持语法,维护窗口和状态管理器关联是两个独立的功能模块,调度规则不通用,很容易混淆。 - 额外排查点:如果你创建的关联开启了合规项自动修正配置,这类关联的调度限制会更严格,仅支持固定间隔类表达式,也会触发该报错;另外注意检查表达式中
cron和左括号之间不要加多余空格,部分控制台校验逻辑会把cron (识别为非法格式。
可行解决方案
要实现周一到周五上午11点执行的需求,可以选以下两种方案:
- 拆分多个关联:分别为周一到周五创建5个独立的状态管理器关联,对应的cron分别为
cron(0 11 ? * MON *)、cron(0 11 ? * TUE *)、cron(0 11 ? * WED *)、cron(0 11 ? * THU *)、cron(0 11 ? * FRI *),不需要额外依赖其他服务。 - 搭配EventBridge实现:把现有状态管理器关联的调度改为手动触发,再创建EventBridge规则,使用你原本的
cron(0 11 ? * MON-FRI *)作为触发表达式,目标选择SSM的StartAssociation操作绑定对应关联ID即可,仅需要一套配置。
内容的提问来源于stack exchange,提问作者JavierIm
相关产品推荐
相关产品推荐

