如何使用 gsutil 从 GCE 上的容器中复制存储桶中的文件

Posted

技术标签:

【中文标题】如何使用 gsutil 从 GCE 上的容器中复制存储桶中的文件【英文标题】:How to copy files from a bucket using gsutil from within a container on GCE 【发布时间】:2019-07-22 16:43:13 【问题描述】:

我有一个在 GCE kubernetes 引擎中运行的容器,它试图将一些数据从存储桶复制到已安装的永久磁盘:

gsutil -m rsync -r -d "gs://$DB_BUCKET/db" /db

当容器运行时,它会失败并显示以下消息:

AccessDeniedException: 403 xxx-service@my-project.iam.gserviceaccount.com does not have storage.objects.list access to my-bucket-db-data

如果我查看服务帐户,它似乎确实有权查看存储桶。如果这有什么不同,我会在部署过程中创建一个填充此存储桶。

我需要授予哪些权限/如何才能同步存储桶中的数据?

【问题讨论】:

【参考方案1】:

您需要给xxx-service@my-project.iam.gserviceaccount.com添加引用权限:

按照以下步骤操作:

1) 访问 Permissions 选项卡进入 $DB_BUCKET

2) 在搜索输入字段中搜索您的服务帐号

3) 在 Role(s) 列中找到“Storage Object Viewer”角色

【讨论】:

以上是关于如何使用 gsutil 从 GCE 上的容器中复制存储桶中的文件的主要内容,如果未能解决你的问题,请参考以下文章

从存储到计算实例运行容器的`gsutil cp`不会复制文件

如何在使用 gsutil 保留 ACL 的同时将文件从 Google Cloud Storage 存储桶 1 复制到存储桶 2

如何使用 gsutil 将所有文件和子文件夹从当前目录复制/移动到 Google Cloud Storage 存储桶

如何让 gsutil 在 docker 容器中使用 gcloud 凭据

使用 Workload Identity 在 Kubernetes 上的 Cloud ML Engine 中的容器中对独立 gsutil 进行身份验证

gsutil 从 s3 匿名复制?