#amazon-web-services #terraform #terraform-provider-aws #amazon-aurora
#amazon-веб-сервисы #terraform #terraform-provider-aws #amazon-aurora
Вопрос:
У меня есть некоторый код 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
с помощью engine_version="5.7.mysql_aurora.2"
, но это не удалось, как это: InvalidParameterCombination: Cannot find upgrade target from 5.7.mysql_aurora.2.07.2 with requested version 5.7.mysql_aurora.2.
Какой метод Terraform был бы подходящим, чтобы разрешить использование младшей версии RDS с изменениями, выполняемыми AWS?
Ответ №1:
Вы можете добавить 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