GCP Data Fusion工作流执行失败:PROVISION任务REQUESTING_CREATE状态报错
解决Data Fusion工作流PROVISION阶段的
compute.firewalls.list权限缺失问题 我帮你定位下问题核心:你遇到的权限报错,并不是来自你自己的账号或者手动创建的mylab-bigquery@mylab-gcp.iam.gserviceaccount.com服务账号,而是Data Fusion运行作业时依赖的托管服务账号缺少必要权限。下面是具体的解决步骤:
1. 找到Data Fusion实例的托管服务账号
Data Fusion在创建时会自动生成一个专属的托管服务账号,所有作业的底层资源操作(比如创建Dataproc集群、访问防火墙规则)都是通过这个账号执行的:
- 打开Cloud Data Fusion控制台,找到你的
testing_df实例 - 在实例详情页的服务账号字段中,你会看到格式类似这样的账号:
service-<你的项目编号>@gcp-sa-datafusion.iam.gserviceaccount.com
2. 为托管服务账号添加必要权限
进入IAM控制台,找到上面的托管服务账号,添加以下两个关键角色:
- Compute Network Viewer:这个预定义角色包含
compute.firewalls.list权限,正好解决你遇到的报错 - Dataproc Editor:确保服务账号具备创建和管理Dataproc集群的权限(Data Fusion作业依赖Dataproc集群运行)
如果需要更精细化的权限控制,也可以直接给账号添加单独的compute.firewalls.list权限,但使用预定义角色更简单可靠。
3. 验证权限并重新运行工作流
- 可以用gcloud命令确认权限已生效:
gcloud projects get-iam-policy mylab-gcp --filter="bindings.members:service-<你的项目编号>@gcp-sa-datafusion.iam.gserviceaccount.com"
- 回到Data Fusion控制台,重新触发工作流运行,此时应该能顺利通过PROVISION阶段
为什么你的现有角色没起作用?
你给自己的账号和手动创建的BigQuery服务账号加了Owner等角色,但Data Fusion作业运行时并不使用这些账号——它依赖自身的托管服务账号来执行底层资源操作,所以必须给这个特定账号分配权限才行。
你的错误日志核心信息:
com.google.api.client.googleapis.json.GoogleJsonResponseException: 403 Forbidden { "code" : 403, "errors" : [ { "domain" : "global", "message" : "Required 'compute.firewalls.list' permission for 'projects/mylab-gcp'", "reason" : "forbidden" } ], "message" : "Required 'compute.firewalls.list' permission for 'projects/mylab-gcp'" }
内容的提问来源于stack exchange,提问作者Manjit Bhattacharyya
相关产品推荐
相关产品推荐

