ResumableUploadAbortException: 403 权限不足
ResumableUploadAbortException: 403 Insufficient Permission
我正在使用 Google Cloud Storage 和 Google Compute Engine 并尝试从我的 VM 上传到我的存储桶。我的存储桶有 read/write 权限,任何有权访问它的人也有。他们被标记为 所有者。我可以很好地从我的存储桶中下载。当我尝试上传到我的存储桶时,这是我收到的错误。 ResumableUploadAbortException: 403 Insufficient Permission
。我不确定为什么会这样?有什么线索吗?
当以非交互方式(例如从 VM 实例)与其他云平台产品(例如 Google 云存储(存储桶)交互时,建议使用作用域,而作用域又会利用服务帐户,验证 VM / 系统的首选方式。进一步阅读可以找到 here.
您是否使用 VM 上的默认服务帐户来访问存储桶?默认情况下只有读取范围。尝试创建具有 Read/Write 范围的虚拟机。
更改 VM 的云 API 访问范围以允许 read/write 存储。这位于 VM 设置的 "Access scopes" 部分。您的 VM 需要停止才能执行此操作。
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"
重要!!
根据 this comment 在相关 post 上的说明,您可能需要在定义新范围后删除 ~/.gsutil
中的凭据。
# VM instance console
sudo rm -r ~/.gsutil
如果可能的话让我放一个更简单的步骤:
- 从控制台停止 VM,编辑访问控制并将 "Storage" 权限从 READ 更改为 Write 或 full。
- 启动虚拟机
从命令行刷新缓存
rm -r ~/.gsutil
这应该有效。
在 GCE 实例上 运行 进行以下设置:无需重启 Compute Engine,
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
如果您已经初始化了 gcloud,则不想重新初始化。
gcloud auth login
您需要授予实例的服务帐户在存储桶中创建对象的权限。尽管其他答案实现了这一点,但它们可能会打开比您需要的更多权限。以下是如何仅添加一个附加权限:
- 获取您的服务帐户的电子邮件地址:
$ gcloud auth list
Credentialed Accounts
ACTIVE ACCOUNT
* 123456789-compute@developer.gserviceaccount.com
- 在 Cloud Console 中打开您的存储桶并转到 "Permissions" 选项卡
- 点击"Add Members"
- 从上方粘贴服务帐户的电子邮件地址
- 下 "Role"、select "Storage Object Admin"
- 注意:这会授予创建、列出和删除对象的权限。如果你只需要创建对象,你可以试试"Storage Object Creator"。
- 点击"Save"
请注意,这会向共享同一服务帐户的所有实例授予权限。如果您需要更细粒度的访问控制,您应该为每个实例创建不同的服务帐户。
完成这些步骤后,您需要重新加载权限,如其他人所说:
rm -rf ~/.gsutil
rm -rf /root/.gsutil
我正在使用 Google Cloud Storage 和 Google Compute Engine 并尝试从我的 VM 上传到我的存储桶。我的存储桶有 read/write 权限,任何有权访问它的人也有。他们被标记为 所有者。我可以很好地从我的存储桶中下载。当我尝试上传到我的存储桶时,这是我收到的错误。 ResumableUploadAbortException: 403 Insufficient Permission
。我不确定为什么会这样?有什么线索吗?
当以非交互方式(例如从 VM 实例)与其他云平台产品(例如 Google 云存储(存储桶)交互时,建议使用作用域,而作用域又会利用服务帐户,验证 VM / 系统的首选方式。进一步阅读可以找到 here.
您是否使用 VM 上的默认服务帐户来访问存储桶?默认情况下只有读取范围。尝试创建具有 Read/Write 范围的虚拟机。
更改 VM 的云 API 访问范围以允许 read/write 存储。这位于 VM 设置的 "Access scopes" 部分。您的 VM 需要停止才能执行此操作。
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"
重要!!
根据 this comment 在相关 post 上的说明,您可能需要在定义新范围后删除 ~/.gsutil
中的凭据。
# VM instance console
sudo rm -r ~/.gsutil
如果可能的话让我放一个更简单的步骤:
- 从控制台停止 VM,编辑访问控制并将 "Storage" 权限从 READ 更改为 Write 或 full。
- 启动虚拟机
从命令行刷新缓存
rm -r ~/.gsutil
这应该有效。
在 GCE 实例上 运行 进行以下设置:无需重启 Compute Engine,
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
如果您已经初始化了 gcloud,则不想重新初始化。
gcloud auth login
您需要授予实例的服务帐户在存储桶中创建对象的权限。尽管其他答案实现了这一点,但它们可能会打开比您需要的更多权限。以下是如何仅添加一个附加权限:
- 获取您的服务帐户的电子邮件地址:
$ gcloud auth list
Credentialed Accounts
ACTIVE ACCOUNT
* 123456789-compute@developer.gserviceaccount.com
- 在 Cloud Console 中打开您的存储桶并转到 "Permissions" 选项卡
- 点击"Add Members"
- 从上方粘贴服务帐户的电子邮件地址
- 下 "Role"、select "Storage Object Admin"
- 注意:这会授予创建、列出和删除对象的权限。如果你只需要创建对象,你可以试试"Storage Object Creator"。
- 点击"Save"
请注意,这会向共享同一服务帐户的所有实例授予权限。如果您需要更细粒度的访问控制,您应该为每个实例创建不同的服务帐户。
完成这些步骤后,您需要重新加载权限,如其他人所说:
rm -rf ~/.gsutil
rm -rf /root/.gsutil