Terraform ECS Fargate定时任务模块遇event_rule_is_enabled参数错误求助
问题核心
使用cn-terraform/ecs-fargate-scheduled-task/aws模块(版本约束~>1.0.22)超一年,未更新模块的情况下突然报错event_rule_is_enabled参数不被识别,查看模块main.tf发现无该参数,但此前配置可正常运行。
排查与解决步骤
检查本地模块缓存
本地.terraform/modules目录下的模块文件可能被意外覆盖或损坏,执行以下命令重新拉取指定版本的模块:terraform init -get=true拉取后检查对应模块目录的
variables.tf,确认是否包含event_rule_is_enabled变量定义。确认实际使用的模块版本
执行terraform providers命令,查看当前实际加载的模块版本。版本约束~>1.0.22允许拉取1.0.x系列中高于等于1.0.22的子版本,如果模块作者在后续小版本中移除了该参数,就会触发报错。
若实际版本高于1.0.22,修改模块版本约束为=1.0.22锁定版本,再重新执行terraform init。核对模块版本历史
确认1.0.22版本是否存在event_rule_is_enabled参数:如果该参数是在1.0.22之前的版本存在,之后被移除,而之前的缓存使用的是旧版本,某次init操作拉取了符合约束的新版本,就会导致参数不兼容。这种情况下,需要锁定到之前正常运行的具体版本。替代配置方案
如果当前使用的模块版本确实没有event_rule_is_enabled参数,查看模块文档中控制事件规则启用状态的替代方式。例如部分模块会通过enabled全局参数,或者需要单独配置aws_cloudwatch_event_rule资源的is_enabled属性。
内容的提问来源于stack exchange,提问作者Ste

