【问题标题】:Renaming s3 bucket in Terraform (but not S3) causes create then destroy?在 Terraform(但不是 S3)中重命名 s3 存储桶会导致创建然后销毁?
【发布时间】:2020-03-11 13:52:16
【问题描述】:

我想稍微重构一下我的 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
  }
}

如您所见,只有 Terraform 中的名称 发生了变化(abc -> def)。

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

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

问题:

  • 这是为什么呢?
  • 有没有办法在不破坏基础设施的情况下重构 Terraform 脚本?

【问题讨论】:

标签: amazon-web-services amazon-s3 terraform


【解决方案1】:

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

在你的情况下,这将是

terraform state mv aws_s3_bucket.abc aws_s3_bucket.def

根据我自己的经验,这很有效,我建议这样做而不是使用坏名字。

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

【讨论】:

    猜你喜欢
    • 2018-05-20
    • 1970-01-01
    • 2021-12-11
    • 2022-01-12
    • 2016-09-29
    • 2021-02-04
    • 2018-05-29
    • 2021-08-14
    • 2023-03-07
    相关资源
    最近更新 更多