本页面介绍如何将您拥有的对象设为可供公共互联网上的所有人读取。如需了解如何访问已公开的数据,请参阅访问公开数据。
当对象被公开共享时,只要对象处于公开状态,则任何知道对象 URI 的用户都可以访问该对象。
所需权限
控制台
如需使用 Google Cloud 控制台完成本指南,您必须拥有适当的 IAM 权限。如果要访问的对象或存储桶在不是由您创建的项目中,则可能需要项目所有者为您提供包含必要权限的角色。
如需查看特定操作所需权限的列表,请参阅 Google Cloud 控制台的 IAM 权限。
如需查看相关角色的列表,请参阅 Cloud Storage 角色。或者,您也可以创建一个自定义角色,并为其提供具体受限的权限。
命令行
为使用命令行实用程序完成本指南,您必须拥有适当的 IAM 权限。如果要访问的对象或存储桶在不是由您创建的项目中,则可能需要项目所有者为您提供包含必要权限的角色。
如需查看特定操作所需权限的列表,请参阅 gcloud storage
命令的 IAM 权限。
如需查看相关角色的列表,请参阅 Cloud Storage 角色。或者,您也可以创建一个自定义角色,并为其提供具体受限的权限。
客户端库
如需使用 Cloud Storage 客户端库完成本指南,您必须拥有适当的 IAM 权限。如果要访问的对象或存储桶在不是由您创建的项目中,则可能需要项目所有者为您提供包含必要权限的角色。
除非另有说明,否则客户端库请求通过 JSON API 发出,并且需要 JSON 方法的 IAM 权限中列出的权限。如需查看使用客户端库发出请求时调用了哪些 JSON API 方法,请记录原始请求。
如需查看相关 IAM 角色的列表,请参阅 Cloud Storage 角色。或者,您也可以创建一个自定义角色,并为其提供具体受限的权限。
REST API
JSON API
如需使用 JSON API 完成本指南,您必须拥有适当的 IAM 权限。如果要访问的对象或存储桶在不是由您创建的项目中,则可能需要项目所有者为您提供包含必要权限的角色。
如需查看特定操作所需的权限列表,请参阅 JSON 方法的 IAM 权限。
如需查看相关角色的列表,请参阅 Cloud Storage 角色。或者,您也可以创建一个自定义角色,并为其提供具体受限的权限。
将个别对象设为可公开读取
如需将个别对象设为可供公共互联网上的所有人读取,请执行以下操作:
控制台
- 在 Google Cloud 控制台中,进入 Cloud Storage 存储桶页面。
点击您要公开的对象所在存储桶的名称,然后找到该对象(如果该对象位于子目录中)。
点击对象的名称。
点击修改访问权限。
在出现的叠加窗口中,点击 add_box 添加条目按钮。
为 allUsers 添加权限。
- 为“实体”选择公共。
- 为“名称”选择 allUsers。
- 为“访问权限”选择读取者。
点击保存。
授予公开访问权限后,复制网址将显示在“公开访问权限”列中。您可以点击此按钮以获取对象的公开网址。
如需了解如何在 Google Cloud 控制台中获取失败的 Cloud Storage 操作的详细错误信息,请参阅问题排查。
命令行
-
在 Google Cloud 控制台中,激活 Cloud Shell。
Cloud Shell 会话随即会在 Google Cloud 控制台的底部启动,并显示命令行提示符。Cloud Shell 是一个已安装 Google Cloud CLI 且已为当前项目设置值的 Shell 环境。该会话可能需要几秒钟时间来完成初始化。
在开发环境中,运行带有
--add-acl-grant
标志的objects update
命令:gcloud storage objects update gs://BUCKET_NAME/OBJECT_NAME --add-acl-grant=entity=AllUsers,role=READER
其中:
BUCKET_NAME
是包含待公开对象的存储桶的名称。例如my-bucket
。OBJECT_NAME
是您要公开的对象的名称。例如pets/dog.png
。
客户端库
C++
如需了解详情,请参阅 Cloud Storage C++ API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
C#
如需了解详情,请参阅 Cloud Storage C# API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Go
如需了解详情,请参阅 Cloud Storage Go API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Java
如需了解详情,请参阅 Cloud Storage Java API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Node.js
如需了解详情,请参阅 Cloud Storage Node.js API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
PHP
如需了解详情,请参阅 Cloud Storage PHP API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Python
如需了解详情,请参阅 Cloud Storage Python API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Ruby
如需了解详情,请参阅 Cloud Storage Ruby API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
REST API
JSON API
- 从 OAuth 2.0 Playground 获取授权访问令牌。将 Playground 配置为使用您自己的 OAuth 凭据。如需了解相关说明,请参阅 API 身份验证。
创建一个包含以下信息的 JSON 文件:
{ "entity": "allUsers", "role": "READER" }
使用
cURL
,通过Insert
ACL 请求调用 JSON API:curl -X POST --data-binary @JSON_FILE_NAME \ -H "Authorization: Bearer OAUTH2_TOKEN" \ -H "Content-Type: application/json" \ "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/o/OBJECT_NAME/acl"
其中:
JSON_FILE_NAME
是您在第 2 步中创建的文件的路径。OAUTH2_TOKEN
是您在第 1 步中创建的访问令牌。BUCKET_NAME
是包含待公开对象的存储桶的名称。例如my-bucket
。OBJECT_NAME
是您要公开的对象的网址编码名称。例如,pets/dog.png
的网址编码为pets%2Fdog.png
。
XML API
- 从 OAuth 2.0 Playground 获取授权访问令牌。将 Playground 配置为使用您自己的 OAuth 凭据。如需了解相关说明,请参阅 API 身份验证。
创建一个包含以下信息的 XML 文件:
<AccessControlList> <Entries> <Entry> <Scope type="AllUsers"/> <Permission>READ</Permission> </Entry> </Entries> </AccessControlList>
使用
cURL
,通过Set Object ACL
请求调用 XML API:curl -X PUT --data-binary @XML_FILE_NAME \ -H "Authorization: Bearer OAUTH2_TOKEN" \ "https://storage.googleapis.com/BUCKET_NAME/OBJECT_NAME?acl"
其中:
XML_FILE_NAME
是您在第 2 步中创建的文件的路径。OAUTH2_TOKEN
是您在第 1 步中创建的访问令牌。BUCKET_NAME
是包含待公开对象的存储桶的名称。例如my-bucket
。OBJECT_NAME
是您要公开的对象的网址编码名称。例如,pets/dog.png
的网址编码为pets%2Fdog.png
。
将存储桶中的所有对象设为可供公开读取
如需将存储桶中的所有对象设为可供公共互联网上的所有人读取,请执行以下操作:
控制台
- 在 Google Cloud 控制台中,进入 Cloud Storage 存储桶页面。
在存储桶列表中,点击您要设为公开的存储桶的名称。
选择页面顶部附近的权限标签。
在权限部分中,点击
授予访问权限按钮。此时将显示“授予访问权限”对话框。
在新的主账号字段中,输入
allUsers
。在选择角色下拉列表的过滤条件框中输入 Storage Object Viewer,然后从过滤后的结果中选择 Storage Object Viewer。
点击保存。
点击允许公开访问。
授予公开访问权限后,针对每个对象的复制网址将显示在“公开访问权限”列中。您可以点击此按钮以获取对象的公开网址。
如需了解如何在 Google Cloud 控制台中获取失败的 Cloud Storage 操作的详细错误信息,请参阅问题排查。
命令行
-
在 Google Cloud 控制台中,激活 Cloud Shell。
Cloud Shell 会话随即会在 Google Cloud 控制台的底部启动,并显示命令行提示符。Cloud Shell 是一个已安装 Google Cloud CLI 且已为当前项目设置值的 Shell 环境。该会话可能需要几秒钟时间来完成初始化。
在开发环境中,运行
buckets add-iam-policy-binding
命令:gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME --member=allUsers --role=roles/storage.objectViewer
其中
BUCKET_NAME
是您要公开其对象的存储桶的名称。例如my-bucket
。
客户端库
C++
如需了解详情,请参阅 Cloud Storage C++ API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
C#
如需了解详情,请参阅 Cloud Storage C# API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Go
如需了解详情,请参阅 Cloud Storage Go API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Java
如需了解详情,请参阅 Cloud Storage Java API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Node.js
如需了解详情,请参阅 Cloud Storage Node.js API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
PHP
如需了解详情,请参阅 Cloud Storage PHP API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Python
如需了解详情,请参阅 Cloud Storage Python API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Ruby
如需了解详情,请参阅 Cloud Storage Ruby API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Terraform
您可以使用 Terraform 资源将存储桶中的所有对象设为公开。
REST API
JSON API
- 从 OAuth 2.0 Playground 获取授权访问令牌。将 Playground 配置为使用您自己的 OAuth 凭据。如需了解相关说明,请参阅 API 身份验证。
创建一个包含以下信息的 JSON 文件:
{ "bindings":[ { "role": "roles/storage.objectViewer", "members":["allUsers"] } ] }
使用
cURL
,通过PUT
Bucket 请求调用 JSON API:curl -X PUT --data-binary @JSON_FILE_NAME \ -H "Authorization: Bearer OAUTH2_TOKEN" \ -H "Content-Type: application/json" \ "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/iam"
其中:
JSON_FILE_NAME
是您在第 2 步中创建的文件的路径。OAUTH2_TOKEN
是您在第 1 步中创建的访问令牌。BUCKET_NAME
是您要公开其对象的存储桶的名称。例如my-bucket
。
XML API
XML API 不支持将存储桶中的所有对象设为可供公开读取。使用 Google Cloud 控制台或 gcloud storage
。