Terraform中google_cloudbuild_trigger动态step块引发参数不支持错误
Terraform Google Cloud Build Trigger 动态块错误修正
你的代码结构存在明显问题,导致所有属性报错,核心原因是dynamic块语法不符合Terraform规范,具体问题和修正方案如下:
错误原因
- 未用
content块包裹要生成的step嵌套块属性,Terraform会把id/name等属性识别为dynamic "step"块本身的参数,而dynamic块仅支持for_each/iterator等特定参数,因此抛出“参数不被期望”的错误。 - 循环元素引用错误: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
相关产品推荐
相关产品推荐

