94

我在 Google Cloud Storage 中有 1000 个文件要公开,或者通常是一个目录层次结构。

在 Web UI 中,我似乎只能一次公开一个。

有没有办法做到这一点。

4

7 回答 7

122

gsutil -m acl set -R -a public-read gs://bucket

  • 同时-m发出多个请求。
  • 对存储桶中的每个对象的-R问题请求。
  • -a问题要求每个对象的每个版本。

有关gsutil help acl更多信息,请参阅。

在 API 层gsutil发出以下 HTTP 请求:

PUT /bucket/obj?acl HTTP/1.1
Host: storage.googleapis.com
x-goog-acl: public-read

您可以通过使用以下-D标志来查看gsutil

gsutil -D setacl public-read gs://bucket/obj
于 2013-01-26T02:03:48.617 回答
68

您可以将存储桶中的所有对象设为公开。这是链接

  1. 在 Google Cloud Platform Console 中打开 Cloud Storage 浏览器。
  2. 在存储桶列表中,单击要公开的存储桶的名称。
  3. 选择页面顶部附近的权限选项卡。
  4. 单击添加成员按钮。
    出现添加成员对话框。
  5. 在成员字段中,输入 allUsers。
  6. 在 Roles 下拉列表中,选择 Storage 子菜单,然后单击 Storage Object Viewer 选项。
  7. 单击添加。

公开共享后,公共访问 > 列中的每个对象都会出现一个链接图标。您可以单击此图标以获取对象的 URL。

于 2017-08-24T19:56:11.867 回答
62

运行时:gsutil -m acl set -R -a public-read gs://bucket您为当前存储桶中的所有对象定义公开读取,但是当您上传新文件时,默认情况下它们不会公开。

我发现值得将存储桶默认 acl 定义为 public-readgsutil defacl set public-read gs://bucket

于 2015-01-29T23:08:23.500 回答
19

最简单的方法是使用控制台。

点击“编辑存储桶权限”

在此处输入图像描述

输入allUsers添加成员。那么Select Role>> Storage_Storage Object Viewer

注意力!这将为 Internet 上的所有人授予对该选定存储桶中所有对象的读取权限。

在此处输入图像描述

于 2018-07-23T11:53:28.150 回答
14

在此处找到的有关托管静态网站的当前(2017 年 10 月)文档指向:

gsutil acl ch -r -u AllUsers:R gs://bucket-name

递归技巧在哪里-r-u AllUsers:R提供公共读取访问权限。

于 2017-10-05T16:24:16.980 回答
1

您可以在公共范围内制作所有对象,此链接有更多信息:https ://cloud.google.com/storage/docs/access-control/making-data-public

如果您不能,请在控制台中登录您的存储桶并单击“编辑存储桶权限” - 在添加成员中输入 allUsers。然后选择角色 > 存储 > 存储对象查看器

于 2021-08-25T00:42:11.430 回答
1

为了代表 Erik 复制和粘贴,这对我来说始终如一:

使对象组公开可读

要使存储桶中的所有对象公开可读:

CONSOLEGSUTILREST APIS 使用 gsutil iam ch 命令,将 [VALUES_IN_BRACKETS] 替换为适当的值:

 gsutil iam ch allUsers:objectViewer gs://[BUCKET_NAME]
于 2017-08-27T04:32:55.920 回答