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

Terraform配置Cloud Run Job Secret时遇Unsupported block type错误求助

解决Terraform Cloud Run Job添加Secret时的"value_from"块错误

问题原因

你使用的GoogleCloudPlatform/terraform-google-cloud-run仓库v0.8.0版本的job-exec模块,内部代码对google_cloud_run_v2_job资源的value_from块位置处理有误,或是与当前使用的Terraform Google Provider版本不兼容,导致Terraform无法识别该块的合法位置。

解决步骤

1. 匹配Terraform Google Provider版本

打开模块的versions.tf文件,查看它要求的Google Provider版本范围。v0.8.0的job-exec模块通常要求google provider >= 4.0.0,确保你的根模块provider配置满足这个要求:

terraform {
  required_providers {
    google = {
      source  = "hashicorp/google"
      version = "~> 4.0" # 与模块要求版本匹配
    }
  }
}

2. 升级job-exec模块到稳定新版本

v0.8.0属于较旧版本,这类结构错误大概率已在新版本中修复。修改模块引用,使用最新稳定版(可查看仓库标签选择v1.x系列):

module "job" {
  source  = "GoogleCloudPlatform/cloud-run/google//modules/job-exec"
  version = "~> 1.0" # 替换为最新稳定版
  # 其他配置项...
}

执行terraform init -upgrade完成模块升级。

3. 校验env_secret_vars配置格式

确保variable.tfvars里的env_secret_vars符合模块要求的结构,应为包含环境变量名、Secret名称、Secret密钥的列表:

env_secret_vars = [
  {
    name  = "DB_PASSWORD"
    secret = "my-db-secret"
    key   = "password"
  }
]

4. 临时修复模块代码(仅无法升级时使用)

若必须保留v0.8.0版本,手动修正模块的main.tf文件:
找到报错的dynamic "value_from"块,确保它嵌套在env块内部,调整后的代码示例:

dynamic "env" {
  for_each = var.env_secret_vars
  content {
    name = env.value.name
    value_from {
      secret_key_ref {
        secret = env.value.secret
        key    = env.value.key
      }
    }
  }
}

修改后执行terraform plan验证问题是否解决。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 14:12:38