Google cloud platform 数据流-错误:消息:必需';compute.subnetworks.get';许可

Google cloud platform 数据流-错误:消息:必需';compute.subnetworks.get';许可,google-cloud-platform,google-cloud-dataflow,dataflow,google-vpc,Google Cloud Platform,Google Cloud Dataflow,Dataflow,Google Vpc,场景-使用共享VPC在项目A上运行数据流作业,以使用主机项目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

场景-使用共享VPC在项目A上运行数据流作业,以使用主机项目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
工作流失败。原因:错误:消息:必需的“compute.subnetworks.get”permission for“projects//regions/us-east1/subnetworks/”HTTP代码:403
我错过了什么?或者这应该有什么其他许可?
谢谢您的关注。

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

  • 用于从Airflow或任何其他调度工具提交数据流作业的服务帐户需要在项目和宿主项目上都具有以下权限

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

  • 然后我们还有另外两个需要权限的服务帐户,compute@developer.gserviceaccount.com-具有此后缀的服务帐户需要具有Storage Object Viewer的主机项目B上的权限

  • 此外,后缀为dataflow-service-producer-prod.iam.gserviceaccount.com的项目A中的数据流服务帐户需要使用存储对象查看器权限访问主机项目A


  • 小心这些事情解决了我的问题

    我只是在使用带有数据流作业的共享VPC网络和子网时遇到了完全相同的问题,我错过了向默认数据流服务帐户添加网络权限。下面的两个步骤效果很好

    云数据流(运行数据流作业的项目)涉及两个服务帐户

    1默认云数据流服务帐户:service--@Dataflow-service-producer-prod.iam.gserviceaccount.com”
    2自定义控制器服务帐户:myserviceaccount@PROJECT
    ID>.iam.gserviceaccount.com
    
    步骤1:将两个服务帐户添加到网络主机项目上的IAM角色(作为计算网络用户)。此外,您可以将运行数据流作业所需的权限添加到您创建的自定义控制器服务帐户

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

    1.网络:项目//全球/网络/
    2.子网:https://www.googleapis.com/compute/v1/projects//regions/us-central1/subnetworks/
    
    更多详情:

     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. 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>