执行terraform apply时遇到ElastiCache引擎版本解析错误求助
执行terraform apply时遇到ElastiCache引擎版本解析错误求助
问题分析
你遇到的这个错误是Terraform AWS提供商处理ElastiCache引擎版本时的已知问题,一般是以下场景触发的:
- 最初在Terraform配置里用了通配符格式的引擎版本(比如
6.x) - 有人通过AWS控制台手动将Redis实例的引擎版本升级到了具体的7.x版本(比如
7.0.*) - 后续执行
terraform apply时,Terraform无法解析状态里的7.x格式,就抛出了Malformed version: 7.x的错误
报错详情
Error: parsing old engine_version: Malformed version: 7.x │ │ with module.redis_cluster.aws_elasticache_replication_group.replication_group, │ on ../../../../modules/redis/main.tf line 11, in resource "aws_elasticache_replication_group" "replication_group": │ 11: resource "aws_elasticache_replication_group" "replication_group" { │
解决办法
这里有个经过验证的临时解决方案,步骤如下:
- 先到AWS控制台查看受影响的ElastiCache复制组当前实际的引擎版本(比如
7.0.7这类具体版本号) - 打开报错中提到的Terraform配置文件(
../../../../modules/redis/main.tf),把engine_version字段的值暂时替换为这个具体版本号 - 执行
terraform apply,这时候Terraform会确认版本已匹配,不会做实际变更,但会更新本地状态文件里的版本记录 - 等这次apply成功后,再把
engine_version改回你原本需要的通配符格式(比如7.x) - 再次执行
terraform apply,此时就不会再出现版本解析错误了
备注:内容来源于stack exchange,提问作者davejagoda
相关产品推荐
相关产品推荐

