1

我正在尝试根据正在发出的事件使用 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 中。

还有其他我想念的途径吗?我在谷歌上搜索其他遇到我情况的人并没有取得太大的成功。

4

1 回答 1

3

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

storage-transfer-{UID}@partnercontent.gserviceaccount.com

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

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

于 2016-09-16T20:37:04.133 回答