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

如何用Node.js/Python客户端执行Google Cloud Run Job时传递环境变量

问题:通过客户端库为Cloud Run Job执行传递环境变量

我需要执行Google Cloud Run Job并传递环境变量,就像使用gcloud CLI的以下命令一样:

gcloud run jobs execute <test-job> --update-env-vars key1=value1,key2=value2

希望通过Google Cloud Run的Node.js或Python客户端库实现相同功能,现有Node.js代码片段如下:

/**
// const overrides = {};

// Imports the Run library
const {JobsClient} = require('@google-cloud/run').v2;

// Instantiates a client
const runClient = new JobsClient();

async function callRunJob() {
  // Construct request
  const request = {
    name,
    // overrides,
  };

  // Run request
  const [operation] = await runClient.runJob(request);
  const [response] = await operation.promise();
  console.log(response);
}

callRunJob();

Node.js 解决方案

要实现--update-env-vars的效果,需要配置overrides参数,在其中定义Job执行时的模板覆盖规则,具体是修改容器的环境变量:

const {JobsClient} = require('@google-cloud/run').v2;

const runClient = new JobsClient();

async function callRunJob() {
  // 替换为你的Job完整名称,格式:projects/[PROJECT_ID]/locations/[LOCATION]/jobs/[JOB_NAME]
  const name = 'projects/your-project/locations/us-central1/jobs/test-job';
  
  // 定义要传递的环境变量,对应--update-env-vars的参数
  const envVars = {
    key1: 'value1',
    key2: 'value2'
  };

  // 构造overrides,覆盖Job的模板配置
  const overrides = {
    template: {
      containers: [{
        env: Object.entries(envVars).map(([key, value]) => ({
          name: key,
          value: value
        }))
      }]
    }
  };

  const request = {
    name,
    overrides,
  };

  const [operation] = await runClient.runJob(request);
  const [response] = await operation.promise();
  console.log('Job执行响应:', response);
}

callRunJob();

Python 解决方案

使用Python的google-cloud-run客户端库,同样通过配置overrides来传递环境变量:

首先确保安装依赖:

pip install google-cloud-run

然后编写代码:

from google.cloud import run_v2

def run_job_with_env_vars():
    client = run_v2.JobsClient()
    
    # 替换为你的Job完整名称
    name = "projects/your-project/locations/us-central1/jobs/test-job"
    
    # 定义环境变量
    env_vars = {
        "key1": "value1",
        "key2": "value2"
    }
    
    # 构造覆盖模板
    overrides = run_v2.RunJobRequest.Overrides()
    overrides.template.containers.add(
        env=[
            run_v2.EnvVar(name=key, value=value)
            for key, value in env_vars.items()
        ]
    )
    
    request = run_v2.RunJobRequest(
        name=name,
        overrides=overrides
    )
    
    operation = client.run_job(request=request)
    print("等待Job执行完成...")
    response = operation.result()
    print(f"Job执行响应: {response}")

if __name__ == "__main__":
    run_job_with_env_vars()

说明

  • overrides.template.containers会覆盖Job原有容器的配置,这里仅设置环境变量,其他配置会沿用Job的原始定义
  • 需要确保客户端库版本是最新的,避免API兼容性问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 21:12:11