【问题标题】:Unable to Write to bigquery - Permission denied: Apache Beam Python - Google Dataflow无法写入 bigquery - 权限被拒绝:Apache Beam Python - Google Dataflow
【发布时间】:2018-10-17 07:01:39
【问题描述】:

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

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

数据流管道

  1. 从谷歌数据存储中读取数据
  2. 处理它
  3. 写入 Google Big-Query。

我在其他运行良好的项目上运行了类似的管道。

今天,当我开始一个数据流作业时,管道启动,从数据存储中读取数据,对其进行处理,当它即将将其写入 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 相关的服务代理权限之前,我想知道为什么环境的行为与以前的项目不同。

过去几个月是否有任何权限/策略更改/更新导致需要 bigquery 编写器权限?

【问题讨论】:

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


    【解决方案1】:

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

    GCP IAM 是您可以查看这些内容的地方。

    【讨论】:

    • 但是从我以前的项目(准确地说是 3 个不同的项目)的记忆来看,我没有给数据流服务代理任何特定的权限。因此,在继续授予与 bigquery 相关的服务代理权限之前,我想知道为什么环境的行为与以前的项目不同。过去几个月是否有任何前提/政策更改/更新?
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

      但是,如果您要问 您的旧项目和新项目之间有什么不同? 那么我无法回答,也无法询问 GCP 支持,或者只是花更多时间比较两个项目的设置.

      【讨论】:

        猜你喜欢
        • 2020-03-31
        • 1970-01-01
        • 2018-11-24
        • 2017-01-16
        • 1970-01-01
        • 2012-08-13
        • 2016-11-15
        相关资源
        最近更新 更多