我正在使用Google Cloud Storage和Google Compute Engine,并尝试从我的虚拟机上传到我的存储桶。我的存储桶具有读/写权限,任何有访问权限的人都可以这样做。他们被标记为所有者。我可以成功地从我的存储桶下载文件。但是当我尝试上传文件到存储桶时,我遇到了以下错误:ResumableUploadAbortException: 403 Insufficient Permission
. 我不确定为什么会出现这种情况?有什么提示吗?
我正在使用Google Cloud Storage和Google Compute Engine,并尝试从我的虚拟机上传到我的存储桶。我的存储桶具有读/写权限,任何有访问权限的人都可以这样做。他们被标记为所有者。我可以成功地从我的存储桶下载文件。但是当我尝试上传文件到存储桶时,我遇到了以下错误:ResumableUploadAbortException: 403 Insufficient Permission
. 我不确定为什么会出现这种情况?有什么提示吗?
将虚拟机的云API访问范围更改为允许在存储上进行读/写操作。这个设置在虚拟机设置的“访问范围”部分。需要停止虚拟机才能执行此操作。
0. Stop VM instance
1. Open VM instance details
2. Press "Edit"
3. Change Cloud API access scope--> "Allow full access to all cloud APIs"
重要提示!请注意此评论中提到的相关帖子,可能需要在定义新范围后删除~/.gsutil
中的凭据。
# VM instance console
sudo rm -r ~/.gsutil
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以使用服务账号。如果这是共享的计算机,并且您使用个人帐户登录,则其他任何人都可以使用您的凭据。
有关详细信息请阅读此处
如果您已经初始化了gcloud,则不需要重新初始化。
gcloud auth login
$ gcloud auth list
Credentialed Accounts
ACTIVE ACCOUNT
* 123456789-compute@developer.gserviceaccount.com
请注意,这将赋予所有共享同一服务账号的实例相同的权限。如果您需要更细粒度的访问控制,应为每个实例创建不同的服务账号。
完成这些步骤后,您需要像其他人所说的那样重新加载权限。
rm -rf ~/.gsutil
rm -rf /root/.gsutil
如果可以的话,让我用更简单的步骤来解释一下:
在命令行中清除缓存
rm -r ~/.gsutil
这样应该就可以了。
当与其他云平台产品(例如Google Cloud Storage(存储桶))以非交互方式进行交互时,例如从VM实例,建议使用作用域,这反过来利用服务帐户,这是验证VM /系统的首选方式。有关更多信息,请单击此处。
如果您来到这里是为了在Windows上进行类似的操作,除了Daniel's answer之外,请在重新启动实例后按照以下步骤操作。
登录并以管理员权限进入cmd行,并执行以下操作
rmdir /s /q C:\users\<your-login-account>\.gsutil
跟随着
gcloud init
基本上选择1,然后在下一步中再次选择1,就可以完成设置。
VM实例控制台
sudo rm -r ~/.gsutil - rbyndoor