如何使用Storage Transfer Service在不同项目的存储桶之间复制数据?

时间:2016-09-16 18:51:29

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

我尝试使用Google Cloud的存储转移服务根据发出的事件在不同项目的存储桶之间传输数据。此事件指向属于项目A的存储桶的子目录,我想将其复制到项目B中的目标存储桶,因此STS看起来非常合适。

我已经成功制作了请求,包括前缀表达式,我相信我现在只处理权限错误,因为当我使用我的代码在它创建的同一个项目中的存储桶之间进行复制时并按预期开始转移。但是,当我使用我的服务帐户进行跨桶转移时,我收到以下错误:

Error creating the transfer job: 
Failed to obtain the location of the destination Google Cloud Storage (GCS) bucket due to insufficient permissions.  
Please verify that the necessary permissions have been granted.

所以从这里我已经查看了我的服务帐户的权限。我已将该服务帐户手动添加为第二个项目的项目编辑器(然后是所有者),并且我已将该帐户添加到我试图转移到的目标存储桶的ACL中。

我还有什么其他途径可以俯视吗?对于那些影响我情况的人来说,我没有成功的搜索。

1 个答案:

答案 0 :(得分:1)

您可能遇到的一个问题是您可能正在授予对错误服务帐户的访问权限。为每个项目创建一个服务帐户。可以使用记录hereget googleServiceAccounts命令找到服务帐户。它应该看起来像

  

存储转移 - {UID} @ partnercontent.gserviceaccount.com

每个项目的UID都不同。尝试验证具有您在projectId请求中指定的transferJobs create特定的UID的服务帐户是否具有源存储桶中的READ / LIST访问权限以及接收器存储桶中的READ / WRITE / LIST访问权限。

如果您需要设置的传输数量相对较少,您也可以尝试使用控制台,这是一个旨在简化传输过程的GUI。可以找到使用控制台的说明here