从另一个项目存储桶读取Dataproc作业

时间:2018-01-04 21:19:01

标签: google-cloud-platform google-cloud-storage google-cloud-dataproc

我的项目A包含存储桶A_B1A_B2。现在,从项目B运行的Dataproc作业需要具有对存储桶A_B1A_B2的读取权限。这有可能吗?

动机:项目A是生产环境,生产数据存储在存储中。项目B是“实验性”环境,在生产数据上运行实验Spark作业。目标是明确区分生产和实验环境的计费。类似的情况可以用dev。

完成

1 个答案:

答案 0 :(得分:1)

实际上,Dataproc集群将代表项目中的服务帐户" B&#34 ;;通常它是默认的GCE服务帐户,但也可以自定义以使用您在项目B中创建的任何其他服务帐户。

您可以通过获取Dataproc群集中某个VM的详细信息来仔细检查服务帐户名称,例如运行:

gcloud compute instances describe my-dataproc-cluster-m

它可能看起来像<project-number>-compute@developer.gserviceaccount.com。现在,在您的情况下,如果您已经拥有A_B1A_B2中的数据,则必须递归编辑这些存储桶的所有内容的权限,以使用类似{{3}的内容为您的服务帐户添加访问权限}};如果您正在使用它,您可能还想更改存储桶的默认ACL&#34;这样新对象也具有该权限。对于许多项目来说,这可能会很繁琐,所以如果提前计划,你可以:

  1. 通过将服务帐户作为项目成员添加到&#34;存储阅读器&#34;来为项目B的服务帐户授予对项目A的一揽子GCS访问权限。作用
  2. 更新可能需要在项目A中共享的存储区,其中包含您创建的新googlegroup的读取权限和/或写入/所有者访问权限,以管理权限分组。然后,您可以将服务帐户自动添加为googlegroup的成员,而无需重新运行存储桶中所有对象的递归更新。