从GCP Workflows调用Datafusion管道:示例及认证方式问询
从Cloud Workflows启动Cloud Data Fusion管道的实现方案
可行示例(YAML)
以下是直接通过Cloud Workflows调用Data Fusion REST API启动管道的流程示例:
main: params: [input] steps: - get_access_token: call: googleapis.auth.get_access_token args: scope: "https://www.googleapis.com/auth/cloud-platform" result: token - start_datafusion_pipeline: call: http.post args: url: ${"https://datafusion.googleapis.com/v1/projects/" + input.project_id + "/locations/" + input.location + "/instances/" + input.instance_id + "/pipelines/" + input.pipeline_name + ":start"} headers: Authorization: ${"Bearer " + token.access_token} Content-Type: "application/json" body: runtimeArguments: {} # 可按需传入管道运行参数 result: pipeline_response - return_result: return: ${pipeline_response}
如果需要等待管道执行完成,可在流程中添加轮询步骤,调用/pipelines/{pipeline_name}/state接口查询状态,直到返回SUCCEEDED或FAILED状态。
认证机制处理
服务账号权限配置
- Cloud Workflows默认使用自身的服务账号(格式:
[WORKFLOW_NAME]@[PROJECT_ID].iam.gserviceaccount.com)发起API调用。 - 需为该服务账号授予Cloud Data Fusion Admin角色(
roles/datafusion.admin),或更精细的权限如datafusion.pipelines.start和datafusion.pipelines.get,确保具备启动、查询管道的权限。
- Cloud Workflows默认使用自身的服务账号(格式:
令牌自动获取
- 示例中通过
googleapis.auth.get_access_token内置函数自动生成访问令牌,无需手动编写OAuth2认证逻辑。该函数会基于Workflows服务账号身份生成带指定权限范围的令牌,默认有效期3600秒。
- 示例中通过
与Cloud Functions调用的差异
- 此前用Cloud Functions调用时,通常需在函数内通过应用默认凭据(ADC)获取令牌;Workflows通过内置auth模块简化了这一步骤,无需在流程代码中额外处理凭据逻辑。
内容的提问来源于stack exchange,提问作者RaptorX
相关产品推荐
相关产品推荐

