我已经在GCP的Compute Engine VM实例中训练了一个模型,并使用gsutil cp -r
命令将权重复制到了Cloud Storage存储桶中。
然后我将存储桶公开,并尝试使用命令!gsutil cp -r gs://{bucket/folder} ./
但是,出现以下错误:
ResumableDownloadException :23次重试后传输失败。最后 异常:匿名调用者没有storage.objects.get访问权限 到{文件夹/路径}
为什么会出现此错误?
答案 0 :(得分:2)
Cloud Storage存储桶缺少适当的Cloud IAM角色
使其完全公开阅读。角色
roles/storage.objectViewer
提供必要的权限以从中读取和列出对象
存储桶-将其分配给allUsers
将使其公开。
因此,根据
documentation,
这可以通过单个gsutil
iam
来实现
命令:
gsutil iam ch allUsers:objectViewer gs://[BUCKET_NAME]
。
然后,在Google Colab中,您应该能够使用以下命令从Cloud Storage存储桶中读取(或下载)对象:
!gsutil cp -r gs://[BUCKET_NAME]/[FOLDER_NAME] ./
一种更安全的方法是代替整个云存储 bucket public,使用以下Python对其进行身份验证 笔记本中的代码:
from google.colab import auth auth.authenticate_user()
然后使用gcloud
命令设置您正在使用的项目ID ;
相应地替换my-project
:
!gcloud config set project my-project
最后运行gsutil
命令;替换bucket
并
folder
:
!gsutil cp -r gs://[BUCKET_NAME]/[FOLDER_NAME] ./