如何从Cloud Run调用Google Cloud Workflow中的指定端点
从Cloud Run调用Google Cloud Workflow指定端点操作指南
前置要求
你需要先确认已经完成以下准备:
- 目标Workflow已经部署完成,且你知晓其所属的项目ID、部署区域、Workflow名称
- 你拥有对应Google Cloud项目的IAM权限调整权限,可给Cloud Run服务账号分配权限
步骤1:配置IAM调用权限
Cloud Run服务默认使用Google Cloud自动生成的运行时服务账号,你需要给该账号分配Workflow的调用权限:
- 进入Cloud Run控制台,打开你当前部署的服务详情页,在「安全」标签页找到当前使用的服务账号邮箱,默认格式为
[PROJECT-NUMBER]-compute@developer.gserviceaccount.com - 进入IAM控制台,给上述服务账号添加角色:
roles/workflows.invoker,该角色仅授予Workflow调用权限,符合最小权限原则
步骤2:获取目标Workflow的调用端点
每个部署完成的Workflow都有固定的调用端点,格式如下:
https://[REGION]-workflows.googleapis.com/v1/projects/[PROJECT-ID]/locations/[REGION]/workflows/[WORKFLOW-NAME]/executions
你只需要把对应占位符替换成你实际的项目ID、部署区域、Workflow名称即可得到指定Workflow的调用端点。
步骤3:在Cloud Run业务代码中发起调用
你可以直接在Cloud Run部署的业务代码中,通过Google Cloud官方SDK或者原生HTTP请求调用上述端点,以下是Python示例代码:
import os import requests import google.auth from google.auth.transport.requests import Request # 自动获取Cloud Run运行时的身份凭证 credentials, project_id = google.auth.default( scopes=["https://www.googleapis.com/auth/cloud-platform"] ) credentials.refresh(Request()) auth_header = {"Authorization": f"Bearer {credentials.token}"} # 替换为你的实际Workflow端点 WORKFLOW_ENDPOINT = "https://[REGION]-workflows.googleapis.com/v1/projects/[PROJECT-ID]/locations/[REGION]/workflows/[WORKFLOW-NAME]/executions" # 传入Workflow需要的参数 workflow_input = { "argument": '{"project_name": "测试项目", "creator": "user01"}' } response = requests.post(WORKFLOW_ENDPOINT, headers=auth_header, json=workflow_input) print(response.json())
如果使用其他编程语言,逻辑完全一致:先获取运行时身份凭证,携带凭证向Workflow端点发起POST请求,传入所需参数即可。
常见问题排查
- 调用返回403:确认服务账号已经分配
roles/workflows.invoker角色,且权限配置已经生效(通常配置后1-2分钟生效) - 调用返回404:确认Workflow端点中的项目ID、区域、Workflow名称拼写完全正确,且Workflow已经处于已部署状态
内容的提问来源于stack exchange,提问作者Tuljaram Singh Thakur
相关产品推荐
相关产品推荐

