重命名Terraform中的s3存储桶(但不重命名S3)会导致创建然后销毁吗?

问题描述 投票:1回答:1

我想稍微重构一下Terraform脚本。

之前:

resource "aws_s3_bucket" "abc" {
  bucket = "my-bucket"
  acl    = "private"
  region = "${var.aws_region}"

  tags = {
    Name = "My bucket"
  }

  versioning {
    enabled = true
    mfa_delete = false
  }
}

之后:

resource "aws_s3_bucket" "def" {
  bucket = "my-bucket"
  acl    = "private"
  region = "${var.aws_region}"

  tags = {
    Name = "My bucket"
  }

  versioning {
    enabled = true
    mfa_delete = false
  }
}

您可以看到,只有名称in Terraform已更改(abc-> def)。

但是,这会导致terraform plan中存储区的创建/销毁。

我希望Terraform将这些存储桶识别为相同的存储桶(它们具有相同的属性,包括bucket)。

问题:

  • 为什么?
  • 是否有一种方法可以在不破坏基础设施的情况下重构Terraform脚本?
amazon-web-services amazon-s3 terraform
1个回答
2
投票

您可以使用terraform state mv反映状态的这种变化。

在您的情况下,这将是

terraform state mv

根据我自己的经验,这很好用,我建议您不要使用不良名称。

Terraform无法识别此类更改,否:-)

© www.soinside.com 2019 - 2024. All rights reserved.