Terraform 使用版本控制创建GCS存储桶

Terraform 使用版本控制创建GCS存储桶,terraform,terraform-provider-gcp,Terraform,Terraform Provider Gcp,我想创建具有版本控制的GCS bucket 我创建了子模块 resource "google_storage_bucket" "cloud_storage" { project = "${var.project}" name = "${var.storage_name}" location = "${var.location}" storage_class = "${var.storage_class}" versioning = "${var.versi

我想创建具有版本控制的GCS bucket

我创建了子模块

resource "google_storage_bucket" "cloud_storage" {
    project = "${var.project}"
    name = "${var.storage_name}"
    location = "${var.location}"
    storage_class = "${var.storage_class}"
    versioning = "${var.versioning}"
}
根据Terraform,我可以传递版本控制参数来配置版本控制

我不知道版本控制参数接受哪种数据。我试着通过布尔(真),地图和列表如下

地图

variable "versioning" {
  type = list
  default = {
    generation = true,
    metageneration = true
  }
}
列表

variable "versioning" {
  type = list
  default = [
    "generation",
    "metageneration"
  ]
  description = "Enable versioning on Bucket"
}
我读完后就试过了


错误 错误我得到它如下

Error: Unsupported argument

  on ../modules/storage/main.tf line 6, in resource "google_storage_bucket" "cloud_storage":
   6:     versioning = "${var.versioning}"

An argument named "versioning" is not expected here. Did you mean to define a
block of type "versioning"?
如果不使用版本控制参数,该模块工作正常。但是,我想创建一个可以配置版本控制的模块

如果我走错了方向,请告诉我


任何帮助都将不胜感激。

错误消息表明版本控制参数是一个块(而不是地图),因此包含“=”会混淆地形

使用:

不是


metageneration
从何而来?您应该有一个
versioning={“enabled”=true}
块,仅此而已。谢谢你的帮助。它与版本控制块{enabled=true}一起工作。使用Terraform文档来确定应该使用哪些参数,而不是底层API文档。我明白了。非常感谢你。
resource "google_storage_bucket" "foo" {
    ...
    versioning {
      enabled = true
    }
}
resource "google_storage_bucket" "foo" {
    ...
    versioning = {
      enabled = true
    }
}