You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Terraform中google_cloudbuild_trigger动态step块引发参数不支持错误

Terraform Google Cloud Build Trigger 动态块错误修正

你的代码结构存在明显问题,导致所有属性报错,核心原因是dynamic块语法不符合Terraform规范,具体问题和修正方案如下:

错误原因

  1. 未用content块包裹要生成的step嵌套块属性,Terraform会把id/name等属性识别为dynamic "step"块本身的参数,而dynamic块仅支持for_each/iterator等特定参数,因此抛出“参数不被期望”的错误。
  2. 循环元素引用错误:dynamic块中应使用定义的迭代器变量(此处为step)引用循环元素,而非each.value。

修正后的代码

resource "google_cloudbuild_trigger" "push_to_production" {
  name     = "cloudbuild-workers"
  location = var.region

  build {
    dynamic "step" {
      for_each = local.workers
      content {
        id        = "deploy-worker-${step.value}"
        name      = "gcr.io/google.com/cloudsdktool/cloud-sdk"
        entrypoint = "gcloud"
        args      = [
          "run", "services", "update", step.value,
          "--platform=managed",
          "--image=$_WORKER_IMG",
          "--region=$_REGION",
          "--quiet"
        ]
      }
    }
  }
}

关键修正点

  • 新增content {}块,将所有step块的属性(id、name、entrypoint、args)放入其中,这是Terraform动态生成嵌套块的强制语法。
  • 将each.value替换为step.value,dynamic块的迭代器默认与块名一致(此处为step),需通过该变量引用循环中的元素。

内容的提问来源于stack exchange,提问作者XaxD

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 11:42:36