无法写入bigquery - 权限被拒绝:Apache Beam Python - Google Dataflow

时间:2018-05-07 12:55:00

标签: python google-bigquery google-cloud-dataflow apache-beam

我使用谷歌云数据流服务已经使用apache beam python sdk已经有一段时间了。

我正在为新项目设置数据流。

数据流管道

  1. 从Google数据存储中读取数据
  2. 处理它
  3. 写入Google Big-Query。
  4. 我在其他正在运行的项目上运行类似的管道。

    今天,当我启动数据流作业时,管道启动,从数据存储读取数据,处理它以及何时将其写入bigquery,结果

    apache_beam.runners.dataflow.dataflow_runner.DataflowRuntimeException: 
    Dataflow pipeline failed. State: FAILED, Error:
    Workflow failed. Causes: S04:read from datastore/GroupByKey/Read+read 
    from datastore/GroupByKey/GroupByWindow+read from datastore/Values+read 
    from datastore/Flatten+read from datastore/Read+convert to table 
    rows+write to bq/NativeWrite failed., BigQuery import job 
    "dataflow_job_8287310405217525944" failed., BigQuery creation of import 
    job for table "TableABC" in dataset "DatasetABC" in project "devel- 
    project-abc" failed., BigQuery execution failed., Error:
    Message: Access Denied: Dataset devel-project-abc:DatasetABC: The user 
    service-account-number-compute@developer.gserviceaccount.com does not 
    have bigquery.tables.create permission for dataset devel-project- 
    abc:DatasetABC: HTTP Code: 403
    

    我确保启用了所有必需的API。据我所知,服务帐户有必要的许可。

    我的问题是这可能会出错?

    更新

    从我以前的项目中记得(准确地说是3个不同的项目),我没有给数据流服务代理任何特定的权限。 计算引擎服务代理具有数据流管理,编辑器,数据流查看器等权限。 因此,在继续向服务代理提供与bigquery相关的权限之前,我想知道为什么环境的行为与以前的项目不同。

    是否有任何权限/政策更改/更新在过去几个月内生效,导致需要大量作者的许可?

3 个答案:

答案 0 :(得分:1)

请确保您的服务帐户(' service-account-number-compute@developer.gserviceaccount.com')有' roles / bigquery.dataEditor'在devel-project-abc:DatasetABC'中的作用。 还要确保' BigQuery数据编辑器'为您的项目启用了角色。

GCP IAM是您可以查看的地方。

答案 1 :(得分:0)

您可以找到BigQuery here的每个角色的功能。如果您以前的项目使用的是primitive IAM角色,则可能需要正确设置。此处提供了IAM Release Notes页,其中提供了有关系统更新的更多信息。

答案 2 :(得分:0)

您的问题不清楚! 如果您问为什么数据流无法写入BigQuery?,那么答案应该与您对使用的服务帐户的权限有关。检查Michael Moursalimov的答案...

但是,如果您要问旧项目和新项目之间有什么区别?然后我无法回答,请寻求GCP支持,或者只是花更多时间比较两个项目的设置