执行Terraform计划创建Aurora MySQL实例遇版本匹配错误求排查
解决Terraform创建Aurora MySQL实例时的版本报错问题
我一眼就看出核心问题了——你用错Terraform资源啦!aws_db_instance是给传统单节点RDS实例设计的,而Aurora MySQL是集群架构,必须用aws_rds_cluster搭配aws_rds_cluster_instance来创建,这才是导致版本报错的根本原因,哪怕你换了5.7版本也没用,因为资源类型根本不匹配。
接下来给你一步步解决:
1. 先获取Aurora MySQL的正确版本号
AWS控制台显示的版本名(比如你看到的5.6.10a)是友好展示名,Terraform需要的是AWS API识别的正式版本字符串。你可以用AWS CLI命令快速获取所有可用的Aurora MySQL版本:
aws rds describe-db-engine-versions --engine aurora-mysql --query "DBEngineVersions[].EngineVersion"
比如Aurora MySQL 5.6兼容版的正确版本号可能是5.6.mysql_aurora.1.22.5,5.7兼容版可能是5.7.mysql_aurora.2.11.3,具体以命令返回的结果为准。
2. 替换为正确的Terraform配置
把原来的aws_db_instance资源换成Aurora集群的配置,示例如下:
# 创建Aurora集群 resource "aws_rds_cluster" "test" { cluster_identifier = "test-cluster" engine = "aurora-mysql" engine_version = "5.6.mysql_aurora.1.22.5" # 替换为你从CLI获取的正确版本 master_username = "testadmin" master_password = "xxxxx" database_name = "testdb" skip_final_snapshot = true } # 创建集群中的实例节点 resource "aws_rds_cluster_instance" "test_node" { identifier = "test-cluster-node" cluster_identifier = aws_rds_cluster.test.id instance_class = "db.t2.small" engine = aws_rds_cluster.test.engine engine_version = aws_rds_cluster.test.engine_version }
3. 验证配置并重新执行
- 把
engine_version替换成你从CLI拿到的有效版本号 - 执行
terraform init、terraform plan、terraform apply,应该就能正常创建了
另外提醒下:db.t2.small实例类虽然支持Aurora,但如果是生产环境建议用更适合的实例类型(比如db.t3.small或更高配),避免性能瓶颈。
内容的提问来源于stack exchange,提问作者John
相关产品推荐
相关产品推荐

