具有版本控制限制的多 S3 存储桶定义

Multi S3 bucket Definition with versioning limitations

我正在读这个 post:

并且想知道我如何添加一个过滤器以在其中一个存储桶上启用存储桶版本控制并使用 terraform 条件或任何允许它工作的任何东西禁用其余存储桶的版本控制? 我正在尝试类似的方法,但它不起作用

variable "s3_bucket_name" {
  type    = "list"
  default = ["prod_bucket", "stage-bucket", "qa_bucket"]
}

resource "aws_s3_bucket" "henrys_bucket" {
  count         = "${length(var.s3_bucket_name)}"
  bucket        = "${var.s3_bucket_name[count.index]}"
  acl           = "private"
  force_destroy = "true"
  var.s3_bucket_name[count.index] != "target-bucket-name" versioning { enabled = true } : versioning { enabled = false }
}

您可以使用对象列表而不仅仅是存储桶名称列表。该对象可以包含存储桶名称和 versioning_enabled 标志。然后使用 bucket-name 和 versioning_enabled.

类似于:

bucket        = var.s3_buckets[count.index].bucket_name 

对于版本控制,添加基于 var.s3_buckets[count.index].versioning_enabled 的动态块,如下所示:

dynamic "versioning" {
  for_each = var.s3_buckets[count.index].versioning_enabled== true ? [1] : []
  content {
    enabled = true
  }
}