sdgfsdh
sdgfsdh

Reputation: 37131

Renaming s3 bucket in Terraform (but not S3) causes create then destroy?

I want to refactor my Terraform scripts a bit.

Before:

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

  tags = {
    Name = "My bucket"
  }

  versioning {
    enabled = true
    mfa_delete = false
  }
}

After:

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

  tags = {
    Name = "My bucket"
  }

  versioning {
    enabled = true
    mfa_delete = false
  }
}

As you can see, only the name in Terraform has changed (abc -> def).

However, this causes a create / destroy of the bucket in terraform plan.

I expected Terraform recognize the buckets as the same (they have the same attributes, including bucket).

Questions:

Upvotes: 1

Views: 2070

Answers (1)

StephenKing
StephenKing

Reputation: 37640

You can use terraform state mv, to reflect this change in the state.

In you case, this would be

terraform state mv aws_s3_bucket.abc aws_s3_bucket.def

From my own experience, this works well and I recommend doing it instead of working with bad names.

Terraform does not recognize such changes, no :-)

Upvotes: 10

Related Questions