请求的身份验证范围不足 - GCP 上的 Dataflow/Apache Beam
Posted
技术标签:
【中文标题】请求的身份验证范围不足 - GCP 上的 Dataflow/Apache Beam【英文标题】:Request had insufficient authentication scopes - Dataflow/Apache Beam on GCP 【发布时间】:2020-01-11 17:15:44 【问题描述】:我正在尝试在 GCP 上运行 Beam 管道(作为 AI Platform ML 训练作业的一部分)。我正在密切关注this notebook 的数据处理部分。当我将 Beam 设置为使用“DirectRunner”时,一切运行良好(虽然速度很慢)。但是,一旦我切换到 DataflowRunner,就会收到“范围不足”错误:(已缩短追溯)
HttpForbiddenError: HttpError 访问 https://dataflow.googleapis.com/v1b3/projects/neurec-252017/locations/us-central1/jobs?alt=json:
回复:[...]
内容
我花了很长时间在 SO 上阅读类似问题的答案,但无济于事。我的理解是,当我启动 Beam 管道时,它会代表我的项目创建一个 GCE 实例,并且该 VM 没有写入我的 GCS 存储桶所需的权限。
我不知道如何为该 GCE 实例设置正确的范围/权限(最好在启动 Beam 管道的 Python 代码中,而不是在 GCP 控制台中)。我尝试向 Compute Engine 默认服务帐号 ([PROJECT_NUMBER]-compute@developer.gserviceaccount.com) 授予以下权限:
计算实例管理 (v1)
数据流管理员
所有者
存储管理员
但我仍然遇到同样的错误。任何帮助将不胜感激。
【问题讨论】:
嗨,Milad,从那时起,您是否能够解决此问题?我遇到了完全相同的问题。 【参考方案1】:您需要“Dataflow Admin”角色,这是创建和管理 Dataflow 作业的最低角色。
将此角色分配给您的帐户(即启动 Dataflow 运行程序作业的帐户),而不是 Compute Engine 默认服务帐户。将 Compute Engine 默认服务帐户恢复原状(删除您的更改)。
Cloud Dataflow Access Control Guide
【讨论】:
感谢您的回复。我在运行 gcloud init 时使用自己的帐户登录,然后在使用同一帐户登录时从终端提交培训作业。该帐户已经是 Dataflow Admin。 @MiladShahidi - 错误消息显示您没有正确的权限。这意味着仔细检查所有内容。 谢谢。我已将项目初始化为默认值,并将应用程序作为我的用户帐户运行,并确保我已将 dataflow-admin、compute-admin、ml-engine-admin 和 storage-admin 分配给我的用户。我已经通过 gcloud config 设置了用户和项目 ID,然后是 gcloud auth application-default login,将 default-service-account 保留为项目初始化期间定义的 Editor Role。仍然出现同样的错误。 这个命令输出gcloud auth list
是什么?编辑您的问题并显示您正在使用的确切代码(不是某些外部链接)。
仔细检查 GCE 实例。 Cloud API access scopes
的设置是什么?确保将其设置为Allow full access to all Cloud APIs
。以上是关于请求的身份验证范围不足 - GCP 上的 Dataflow/Apache Beam的主要内容,如果未能解决你的问题,请参考以下文章
在 GCP 上使用 Pubsub 时如何解决身份验证范围不足的问题
Google Calendar API - 请求的身份验证范围不足
Youtube 评论 API 抛出“权限不足:请求的身份验证范围不足”错误