仅将AWS Aurora引擎版本指定为Terraform中的主要版本号



我有一些Terraform代码,可以创建AWS Aurora RDS集群:

resource "aws_rds_cluster" "default" {
provider                = aws.customer
cluster_identifier      = "my_id"
engine                  = "aurora-mysql"
engine_version          = "5.7.mysql_aurora.2.03.2"
database_name           = var.db_name
port                    = var.db_port
master_username         = var.db_master_username
master_password         = random_password.sqlpassword.result
backup_retention_period = 5
preferred_backup_window = "07:00-09:00"
skip_final_snapshot     = true
db_subnet_group_name    = aws_db_subnet_group.default.name
vpc_security_group_ids  = [aws_security_group.rds.id]
deletion_protection     = true
}

这个代码已经运行了很长一段时间,直到最近terraform apply失败并出现这个错误Error: Failed to modify RDS Cluster (my_id): InvalidParameterCombination: Cannot upgrade aurora-mysql from 5.7.mysql_aurora.2.07.2 to 5.7.mysql_aurora.2.03.2

长话短说,AWS在维护窗口中升级了次要版本号,并拒绝Terraform降级数据库。我对AWS这样做很满意,但我不想每次都提交新的Terraform代码。

我试图通过使用engine_version="5.7.mysql_aurora.2"来降低engine version中的特定性,但失败了:InvalidParameterCombination: Cannot find upgrade target from 5.7.mysql_aurora.2.07.2 with requested version 5.7.mysql_aurora.2.

什么是合适的Terraform方法来允许RDS次要版本在AWS执行修改后浮动?

您可以向资源添加ignore_changes生命周期块。

resource "aws_rds_cluster" "default" {
provider                = aws.customer
cluster_identifier      = "my_id"
engine                  = "aurora-mysql"
engine_version          = "5.7.mysql_aurora.2.03.2"
database_name           = var.db_name
port                    = var.db_port
master_username         = var.db_master_username
master_password         = random_password.sqlpassword.result
backup_retention_period = 5
preferred_backup_window = "07:00-09:00"
skip_final_snapshot     = true
db_subnet_group_name    = aws_db_subnet_group.default.name
vpc_security_group_ids  = [aws_security_group.rds.id]
deletion_protection     = true
lifecycle {
ignore_changes = [
engine_version,
]
}
}

您可以在此处阅读更多信息:https://www.terraform.io/docs/language/meta-arguments/lifecycle.html

最新更新