我正在尝试通过DataFlow将数据从Google Cloud Pub/Sub发送到Google Cloud Storage存储桶。我使用模板创建了DataFlow。
当我使用默认权限设置存储桶时,我在作业日志中收到一条警告,“一些-compute@developer.gserviceaccount.com没有store. object.get access…”,并且存储桶中没有显示任何数据。
我为项目成员的查看器添加了Dataflow Admin权限,警告消失了。
似乎这个过程正在写入存储桶,大多数只是查看它,所以我a)困惑于为什么这解决了我的问题,b)不确定这是否是正确/适当的使用权限。
任何信息将不胜感激。
一些长#-compute@developer.gserviceaccount.com
“solelong#”是您项目的项目编号。
我为项目成员的查看器添加了Dataflow Admin权限,警告消失了。
角色角色/查看器
有权列出存储桶,但无权访问存储桶中的对象。
根据提供的信息,我不确定你到底做了什么以及在哪里做的。如果你将角色角色/datflow. admin
添加到下面用户的每个用户或组中,那是可以的。如果用户需要创建数据流作业并访问结果数据,数据流管理员是正确的角色。然而,缺少的是这些作业是从哪里启动的。可能来自计算实例,这就是为什么服务号被列在错误中。服务号也需要权限。正如他们所说,答案在细节中,你的问题缺少一些。
如果正在从计算引擎实例启动数据流作业,则计算引擎默认服务号(与错误消息中的相同)需要数据流和云存储权限。Datflow. admin将赋予服务号所需的权限。
如果正在从云外部(某人的桌面)启动Dataflow作业,则该用户的IAM成员帐户需要权限。
要查看角色拥有的权限,可以使用CLI:
gcloud iam roles describe roles/dataflow.admin
这将返回以下信息。导入项是权限列表:
description: Minimal role for creating and managing dataflow jobs.
etag: AA==
includedPermissions:
- compute.machineTypes.get
- dataflow.jobs.cancel
- dataflow.jobs.create
- dataflow.jobs.get
- dataflow.jobs.list
- dataflow.jobs.updateContents
- dataflow.messages.list
- dataflow.metrics.get
- resourcemanager.projects.get
- resourcemanager.projects.list
- storage.buckets.get
- storage.objects.create
- storage.objects.get
- storage.objects.list
name: roles/dataflow.admin
stage: GA
title: Dataflow Admin
从这个列表中,您可以看到您授予了某人/某物在您的存储桶中创建、获取和列出对象的权限。如果要求仅提供存储权限,则添加角色角色\store. legacyBucketWriter
。