使用“ gsutil”从Cloud Storage存储桶上传到Google Colab时出错

时间:2020-01-08 09:04:34

标签: machine-learning google-cloud-platform google-cloud-storage google-colaboratory bucket

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

然后我将存储桶公开,并尝试使用命令!gsutil cp -r gs://{bucket/folder} ./

将这些砝码复制到Google Colab笔记本中

但是,出现以下错误:

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

为什么会出现此错误?

1 个答案:

答案 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命令;替换bucketfolder

    !gsutil cp -r gs://[BUCKET_NAME]/[FOLDER_NAME] ./