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

如何用Terraform创建Cloud Run并将Secret导出为环境变量?

使用Terraform为Cloud Run服务导入Secret作为环境变量

基于你已能运行的官方基础示例,只需在Cloud Run服务的容器配置中添加环境变量的Secret引用,并配置对应的IAM权限即可实现需求。

完整配置示例

resource "google_cloud_run_service" "default" {
  name     = "cloudrun-service"
  location = "us-central1"

  template {
    spec {
      containers {
        image = "gcr.io/cloudrun/hello"

        # 将Secret Manager中的VAR导出为环境变量VAR
        env {
          name = "VAR"
          value_from {
            secret_key_ref {
              name = "VAR"  # 对应Secret路径/projects/my-project-id/secret/VAR中的Secret名称
              key  = "latest"  # 使用Secret的最新版本,也可指定具体版本号如"1"
            }
          }
        }
      }
    }
  }

  traffic {
    percent         = 100
    latest_revision = true
  }
}

# 授予Cloud Run服务账号读取Secret的权限(必须配置,否则服务无法访问Secret)
resource "google_project_iam_member" "cloud_run_secret_access" {
  project = "my-project-id"
  role    = "roles/secretmanager.secretAccessor"
  member  = "serviceAccount:${google_cloud_run_service.default.service_account}"
}

关键配置说明

  1. 环境变量引用Secret
    在containers的env数组中新增条目,通过value_from.secret_key_ref关联Secret Manager中的Secret:

    • name:环境变量的名称(即你要的VAR)
    • secret_key_ref.name:Secret Manager中Secret的名称(对应你提供的路径里的VAR)
    • secret_key_ref.key:Secret的版本,latest会自动使用最新版本,也可替换为具体的版本ID
  2. IAM权限配置
    Cloud Run的服务账号必须拥有roles/secretmanager.secretAccessor权限才能读取Secret。上述示例中使用了Cloud Run服务自动生成的服务账号,如果你使用自定义服务账号,只需将member字段替换为对应的服务账号邮箱即可。

注意事项

  • 确保你的Terraform Google Provider版本在v4.0及以上,以支持该配置
  • 如果Secret不在当前Terraform配置的项目中,需调整google_project_iam_member的project参数,并确保跨项目访问的权限配置正确

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 18:55:29