使用 aws_s3_bucket 时 Terraform 重写标签和版本控制信息
Terraform rewriting tag and versioning info when using aws_s3_bucket
我 运行 遇到了 Terraform 正在删除 S3 存储桶的标签和版本信息的问题。这可能是什么原因?我该如何阻止这种情况发生?
main.tf :
resource "aws_s3_bucket" "bucket" {
bucket = "bucket-${var.accountName}"
acl = "private"
versioning {
enabled = true
}
lifecycle {
prevent_destroy = true
}
}
计划输出:
module.s3.aws_s3_bucket.bucket
tags.%: "1" => "0"
tags.Versioning: "Yes" =>
该计划告诉您它想从 S3 存储桶中删除 Versioning
标签,但请注意,它并没有告诉您它正在撤消 S3 存储桶的实际版本控制,它看起来会有些东西喜欢:
versioning.0.enabled: "true" => "false"
您尚未在 Terraform 代码中的 S3 存储桶上定义任何标签,因此 Terraform 在刷新阶段检测到偏差后试图强制 S3 存储桶恢复到您定义的配置。
您可以添加 tags to the aws_s3_bucket
resource 您的 Terraform 代码,停止更改 Terraform 外部的 Terraform 托管资源,或者您可以使用 ignore_changes
告诉 Terraform 您希望标签上有偏差。
在我看来,第一个选项是最佳选项,您可以通过使用类似以下内容来实现:
resource "aws_s3_bucket" "bucket" {
bucket = "bucket-${var.accountName}"
acl = "private"
versioning {
enabled = true
}
lifecycle {
prevent_destroy = true
}
tags = {
Versioning = "Yes"
}
}
如果您出于某种原因确实想在 Terraform 之外添加标签,但不希望 Terraform 撤消您的更改,那么您可以使用 ignore_changes
lifecycle:[= 告诉它忽略对标签的更改19=]
resource "aws_s3_bucket" "bucket" {
bucket = "bucket-${var.accountName}"
acl = "private"
versioning {
enabled = true
}
lifecycle {
prevent_destroy = true
ignore_changes = ["tag"]
}
}
我 运行 遇到了 Terraform 正在删除 S3 存储桶的标签和版本信息的问题。这可能是什么原因?我该如何阻止这种情况发生?
main.tf :
resource "aws_s3_bucket" "bucket" {
bucket = "bucket-${var.accountName}"
acl = "private"
versioning {
enabled = true
}
lifecycle {
prevent_destroy = true
}
}
计划输出:
module.s3.aws_s3_bucket.bucket
tags.%: "1" => "0"
tags.Versioning: "Yes" =>
该计划告诉您它想从 S3 存储桶中删除 Versioning
标签,但请注意,它并没有告诉您它正在撤消 S3 存储桶的实际版本控制,它看起来会有些东西喜欢:
versioning.0.enabled: "true" => "false"
您尚未在 Terraform 代码中的 S3 存储桶上定义任何标签,因此 Terraform 在刷新阶段检测到偏差后试图强制 S3 存储桶恢复到您定义的配置。
您可以添加 tags to the aws_s3_bucket
resource 您的 Terraform 代码,停止更改 Terraform 外部的 Terraform 托管资源,或者您可以使用 ignore_changes
告诉 Terraform 您希望标签上有偏差。
在我看来,第一个选项是最佳选项,您可以通过使用类似以下内容来实现:
resource "aws_s3_bucket" "bucket" {
bucket = "bucket-${var.accountName}"
acl = "private"
versioning {
enabled = true
}
lifecycle {
prevent_destroy = true
}
tags = {
Versioning = "Yes"
}
}
如果您出于某种原因确实想在 Terraform 之外添加标签,但不希望 Terraform 撤消您的更改,那么您可以使用 ignore_changes
lifecycle:[= 告诉它忽略对标签的更改19=]
resource "aws_s3_bucket" "bucket" {
bucket = "bucket-${var.accountName}"
acl = "private"
versioning {
enabled = true
}
lifecycle {
prevent_destroy = true
ignore_changes = ["tag"]
}
}