ResumableUploadAbortException:403权限不足

时间:2015-02-19 16:50:01

标签: google-app-engine google-cloud-storage google-compute-engine gsutil

我正在使用Google云端存储和Google Compute Engine,并尝试从我的虚拟机上传到我的存储桶。我的存储桶具有读/写权限,任何有权访问它的人也是如此。它们被标记为所有者。我可以从我的桶下载很好。当我尝试上传到我的桶时,这是我得到的错误。 ResumableUploadAbortException: 403 Insufficient Permission。我不确定为什么会这样?有线索吗?

6 个答案:

答案 0 :(得分:36)

更改VM的Cloud API访问范围以允许在存储上进行读/写。这位于VM设置的“访问范围”部分。您的VM需要停止才能执行此操作。

https://cloud.google.com/compute/docs/access/create-enable-service-accounts-for-instances#changeserviceaccountandscopes

在相关帖子上按this comment注意,您可能需要在定义新范围后删除~/.gsutil中的凭据。

答案 1 :(得分:4)

您是否使用VM上的默认服务帐户访问存储桶?默认只有读取范围。尝试创建具有读/写范围的VM。

答案 2 :(得分:2)

当以非交互方式(例如来自VM实例)与其他Cloud Platform产品(例如Google云端存储(存储桶))交互时,建议使用范围,而范围又使用服务帐户,验证VM /系统的首选方式。可以找到进一步的阅读here

答案 3 :(得分:1)

在GCE实例上,运行以下命令进行设置:

gcloud init

输出将是这样的。

Choose the account you would like to use to perform operations for  this configuration:
 [1] 533893300998-compute@developer.gserviceaccount.com
 [2] Log in with a new account
Please enter your numeric choice: 1

选择数字1以使用服务帐户。如果这是一台共享计算机,并且您使用个人帐户登录,则该计算机上的其他任何人都可以使用您的凭据。 有关更多详细信息,Read here

答案 4 :(得分:1)

您需要授予实例的服务帐户权限才能在存储桶中创建对象。尽管其他答案可以达到此目的,但它们可能会打开比您所需更多的权限。以下是仅添加一个附加权限的方法:

  1. 获取服务帐户的电子邮件地址:
$ gcloud auth list
                  Credentialed Accounts
ACTIVE  ACCOUNT
*       123456789-compute@developer.gserviceaccount.com
  1. 在Cloud Console中打开存储桶,然后转到“权限”标签
  2. 点击“添加成员”
  3. 从上方粘贴服务帐户的电子邮件地址
  4. 在“角色”下,选择“存储对象管理”
    • 注意:这授予创建,列出和删除对象的权限。如果只需要创建对象,则可以尝试使用“存储对象创建器”。
  5. 点击“保存”

请注意,这将授予共享同一服务帐户的所有实例的权限。如果您需要更细粒度的访问控制,则应该为每个实例创建一个不同的服务帐户。

完成这些步骤后,您需要像其他人所说的那样重新加载权限:

rm -rf ~/.gsutil
rm -rf /root/.gsutil

答案 5 :(得分:0)

如果可以的话,让我采取更简单的步骤:

  1. 从控制台中,停止VM,编辑访问控制,并将“存储”权限从“读取”更改为“写入”或“完全”。
  2. 启动虚拟机
  3. 从命令行刷新缓存

    rm -r〜/ .gsutil

这应该有效。