如何在Terraform中重新创建aws_rds_cluster



我试图通过更新我的资源来创建我当前存在的未加密aws_rds_cluster的加密版本,我添加:

kms_key_id                  = "mykmskey"
storage_encrypted           = true

我的资源应该是这样的:

resource "aws_rds_cluster" "my_rds_cluster" {
  cluster_identifier          = "${var.service_name}-rds-cluster"
  database_name               = var.db_name
  master_username             = var.db_username
  master_password             = random_password.db_password.result
  engine                      = var.db_engine
  engine_version              = var.db_engine_version
  kms_key_id                  = "mykmskey"
  storage_encrypted           = true
  db_subnet_group_name        = aws_db_subnet_group.fleet_service_db_subnet_group.name
  vpc_security_group_ids      = [aws_security_group.fleet_service_service_db_security_group.id]
  skip_final_snapshot         = true
  backup_retention_period     = var.environment != "prod" ? null : 7
  # snapshot_identifier         = "my-rds-instance-snapshot"
  tags = { Name = "${var.service_name}-rds-cluster" }
}

问题是原始资源已经定义了delete_protection = true,我也删除了,但是,即使我删除了它,原始集群也不能通过任何方式删除,以便创建新的集群,无论是通过更改Terraform,还是手动在AWS控制台,它只是抛出一个错误:error creating RDS cluster: DBClusterAlreadyExistsFault: DB Cluster already exists在这种情况下,有什么办法吗?

要完全通过Terraform完成这个操作,您必须:

  1. 删除原始Terraform资源的删除保护
  2. 运行terraform apply,这将从AWS
  3. 中的实际资源中删除保护
  4. 对Terraform资源进行修改,这将导致删除或替换当前资源
  5. 再次运行terraform apply,在此期间Terraform将删除和/或替换资源。

这里的关键是,您不能在实际删除资源的同时删除删除保护,因为Terraform在试图删除资源之前不会更新现有资源以修改属性。

相关内容

  • 没有找到相关文章

最新更新