我已经在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/