繁体   English   中英

Terraform - 管理销毁除 S3 存储桶以外的所有内容

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM