3

场景 - 使用共享 VPC 在项目 A 上运行 Dataflow 作业以使用宿主项目 B 的区域和子网

在服务帐户上,我对项目 A 和 B 都具有以下权限

Compute Admin
Compute Network User
Dataflow Admin
Cloud Dataflow Service Agent
Editor
Storage Admin
Serverless VPC Access Admin 

但我仍然收到此错误

Workflow failed. Causes: Error: Message: Required 'compute.subnetworks.get' permission for 'projects/<host project>/regions/us-east1/subnetworks/<subnetwork name>' HTTP Code: 403

我在这里想念什么?或者这应该有什么其他权限?感谢您查看这个。

4

2 回答 2

3

我只是在使用共享 VPC 网络和子网和数据流作业时遇到了完全相同的问题,并且我错过了将网络权限添加到默认数据流服务帐户。以下 2 个步骤工作得很好。

Cloud Dataflow 中涉及两个服务帐户(正在运行数据流作业的项目)

 1 Default Cloud Dataflow service account : service-<Project
   Number>@dataflow-service-producer-prod.iam.gserviceaccount.com"
 2 Custom Controller service account : myserviceaccount@PROJECT
   ID>.iam.gserviceaccount.com

第 1 步:将两个服务帐户添加到网络 HOST 项目的 IAM 角色(作为计算网络用户)。此外,您可以将运行数据流作业所需的权限添加到您创建的自定义控制器服务帐户。

第 2 步:将以下格式的网络参数传递给作业(在 WebUI 上或使用命令行)

 1. network : projects/<HOST PROJECT ID>/global/networks/<VPC NETWORK NAME>
 2. subnetwork : https://www.googleapis.com/compute/v1/projects/<HOST PROJECT ID>/regions/us-central1/subnetworks/<SUBNET NAME>

更多细节 :

cloud_dataflow_service_account

控制器服务帐户

指定网络#shared

于 2021-01-12T19:38:38.740 回答
2

好的,我已经解决了这个问题,这里有两件事要记住

  1. 用于从 Airflow 或任何其他调度工具提交 Dataflow 作业的服务帐户需要对项目和宿主项目具有以下权限

    计算网络用户数据流管理云数据流服务代理编辑器

  2. 然后我们有另外两个需要权限的服务帐户,compute@developer.gserviceaccount.com - 具有此后缀的服务帐户需要使用存储对象查看器在宿主项目 B 上获得权限

  3. 此外,来自项目 A 的后缀为dataflow-service-producer-prod.iam.gserviceaccount.com的数据流服务帐户需要访问具有存储对象查看器权限的宿主项目 A

照顾这些事情解决了我的问题

于 2020-08-07T19:45:34.493 回答