我尝试将文件的新版本上传到存储桶。
gsutil cp test.txt gs://mybucket/test.txt
并收到 403 响应:
Copying "direction: ltr;" class="">AccessDeniedException: 403 <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="255d5d5d655c5c5c0b4c44480b42564057534c46404446464a504b510b464a48" rel="noreferrer noopener nofollow">[email protected]</a> does not have storage.objects.delete access to mybucket/test.txt.
实际上,服务帐户具有对象创建者角色。 还不够吗?
最佳答案
根据官方文档
Storage Object Creator
Allows users to create objects. Does not give permission to view, delete, or overwrite objects
resourcemanager.projects.get
resourcemanager.projects.list
存储.对象.创建
block 引用>因此,请分配到您的服务帐号
Storage Object Admin (roles/storage.objectAdmin)
因为你没有storage.objects.delete
访问版本控制过程中使用的存储桶。 当您将文件的新版本上传到 Cloud Storage 存储桶时,对象版本控制会将现有对象移至非当前状态。我使用具有
Object Creator role
的服务帐户重现了您的用例。在一个有Access control Uniform
的桶上并启用版本控制并收到相同的错误消息:
service-account.iam.gserviceaccount.com does not have storage.objects.delete access to your-bucket/file
关于google-cloud-storage - 覆盖谷歌云存储中的对象失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61358152/