我已经在GCP的Compute Engine VM实例中训练了一个模型,并使用gsutil cp -r命令将权重复制到了Cloud Storage存储桶中。

然后,我将存储桶公开,并尝试使用命令!gsutil cp -r gs://{bucket/folder} ./将这些砝码复制到Google Colab笔记本中

但是,出现以下错误:


  ResumableDownloadException:23次重试后传输失败。最后
  异常:匿名调用者没有storage.objects.get访问权限
  到{文件夹/路径}


为什么会出现此错误?

最佳答案

编辑:


云存储存储桶缺少适当的Cloud IAM角色
使其完全公开阅读。角色
roles/storage.objectViewer
提供必要的权限以从中读取和列出对象
桶-将其分配给allUsers将使其公开。

因此,根据
documentation
这可以通过单个gsutiliam来实现
命令:

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] ./

关于machine-learning - 使用“gsutil”从Cloud Storage存储桶上传到Google Colab时出错,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59642492/

10-12 21:53