簡體   English   中英

使用 terraform 創建 google 存儲桶並為指定的桶設置生命周期規則

[英]Create google storage bucket using terraform and set life cycle rule for the specified buckets

我有一個 terraform 模塊來為用戶創建一些具有指定權限的存儲桶,現在我需要為一些桶指定一些生命周期規則,我需要 map 在兩個變量之間,如下所示:

變量.tf

variable "buckets" {
  description = "List of buckets"
  type        = list(string)
  default     = []
}

variable "bucket_deletion_rules" {
  description = "Ad-hoc Bucket deletion rules"
  type        = set(object({}))
  default     = [{}]
}

桶.tf

resource "google_storage_bucket" "data_bucket" {
  for_each                    = toset(var.buckets)
  name                        = each.key
  project                     = var.project
  location                    = var.region
  uniform_bucket_level_access = true
  versioning {
    enabled = false
  }

  dynamic "lifecycle_rule" {
    for_each = var.bucket_deletion_rules
    content {
      action {
        type = "Delete"
      }
      condition {
        age  = lifecycle_rule.value
      }
    }
  }
}

上面的代碼不能正常工作:想法是這樣定義變量:

  buckets = [
    "bucket-mhmd-test1",
    "bucket-mhmd-test2",
    "bucket-mhmd-test3"
  ]
  bucket_deletion_rules = [
    {
    "bucket-mhmd-test1" = 50
    "bucket-mhmd-test2" = 10
    }
  ]

我試圖在動態中放置一個嵌套的 for_each,但我無法將存儲桶名稱與存儲桶刪除規則進行比較。 那么現在我如何定義變量並在這兩個變量之間進行均衡以將規則應用於所需的桶?

一個動態塊只能生成arguments屬於正在配置的資源類型、數據源、提供者或提供者。 不可能生成元參數塊,例如生命周期和供應塊,因為 Terraform 必須在安全地評估表達式之前處理這些塊。

這是來自文檔,可以解釋為什么它不能正常工作。 要動態設置 gcp 生命周期策略,您可以使用模塊(例如this

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM