[英]Terraform - Manage destroy of everything except the S3 bucket
我们使用 Terraform 创建所有 AWS 资源,但我们的 S3 存储桶出现问题。 我们处于开发环境中,因此有时我们想要销毁所有内容并重新创建除 S3 Bucket 之外的所有内容。
我们尝试为我们的 S3 存储桶实现以下属性:
resource "aws_s3_bucket" "bucket" {
bucket = "${var.name}-${var.environment}-data"
lifecycle {
prevent_destroy = true
}
}
prevent_destroy 属性似乎没有像我们认为的那样起作用。 不是跳过存储桶的删除并以成功 state 终止 terraform 销毁,而是失败(好像此属性故意告诉 terraform 失败)。
我已经在 stackoverflow 上发现了类似的结论,但是什么是避免该问题的最佳方法以及最佳实践的方法?
我们还使用 github 操作,因此我们考虑过使用它来创建存储桶,但如果有使用 terraform 的解决方案,这对我们来说会更容易(因为还有其他资源链接到存储桶 ID)。
提前致谢 !
prevent_destroy
用作确保不会发生资源删除的安全措施。 预计它会出错。 从文档:
此元参数设置为真时,将导致 Terraform 错误地拒绝任何会破坏与资源关联的基础设施 object 的计划
所以你不应该为了你的目的使用这个元参数。
相反,如果你想删除除桶之外的所有东西,你需要在运行销毁操作之前从 terraform state 中删除桶,例如:
terraform state rm aws_s3_bucket.bucket
terraform destroy
对于下一次部署,您需要在运行应用程序之前将存储桶导入回 terraform state:
terraform import aws_s3_bucket.bucket bucket-name
terraform apply
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.