我使用谷歌 Cloud 数据流服务已经使用apache beam python sdk已经有一段时间了 .
我正在为新项目设置数据流 .
数据流管道
-
从Google数据存储中读取数据
-
处理它
-
写入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 . 据我所知,服务帐户有必要的许可 .
My question is 这可能会出错?
Update
根据我在以前的项目中的记忆(准确地说是3个不同的项目),我没有给数据流服务代理任何特定的权限 . 计算引擎服务代理具有数据流管理,编辑器,数据流查看器等权限 . 因此,在继续给予与bigquery相关的服务代理权限之前,我想知道为什么环境的行为与以前的项目不同 .
是否有任何权限/政策更改/更新在过去几个月内生效,导致需要大量作者的许可?
2 回答
请确保您的服务帐户('service-account-number-compute@developer.gserviceaccount.com')在'devel-project-abc:DatasetABC'中具有'roles / bigquery.dataEditor'角色 . 还要确保为项目启用了“BigQuery Data Editor”角色 .
GCP IAM是您可以查看的地方 .
您可以找到BigQuery here的每个角色的功能 . 如果以前的项目使用primitive IAM角色,则可能需要正确设置 . 此处提供了IAM Release Notes页面,其中提供了有关对系统执行的更新的其他信息 .