本页面介绍了如何配置存储桶,以将有关对象更改的通知发送到 Pub/Sub 主题。如需了解如何订阅可接收通知的 Pub/Sub 主题,请参阅选择订阅类型。
准备工作
要使用此功能,请先按照以下说明完成操作。
启用 Pub/Sub API
为将接收通知的项目启用 Pub/Sub API。
获取所需角色
如需获得配置和查看存储桶的 Pub/Sub 通知所需的权限,请让您的管理员为您授予以下角色:
要为其配置 Pub/Sub 通知的存储桶的 Storage Admin (
roles/storage.admin
) 角色要在其中接收 Pub/Sub 通知的项目的 Pub/Sub Admin (
roles/pubsub.admin
) 角色
这些预定义角色包含配置和查看 Pub/Sub 通知所需的权限。如需查看所需的确切权限,请展开所需权限部分:
所需权限
storage.buckets.get
storage.buckets.update
pubsub.topics.create
pubsub.topics.setIamPolicy
如需了解如何授予存储桶的角色,请参阅将 IAM 与存储桶搭配使用。如需了解如何授予项目的角色以及为主题和订阅设置访问权限控制,请参阅控制访问权限。
确保您已具有现有的 Pub/Sub 主题
如果尚未创建,请创建 Pub/Sub 主题以向其发送通知。如果您计划使用 Google Cloud CLI 或 Terraform 执行本页面上的说明,则无需执行此步骤。
向项目的服务代理授予所需角色
如果您计划使用 Google Cloud CLI 或 Terraform 来执行本页面上的说明,则无需执行以下步骤。
为服务代理授予相关 Pub/Sub 主题的 Pub/Sub Publisher (
roles/pubsub.publisher
) 角色。如需了解如何授予主题的角色,请参阅控制访问权限。
应用通知配置
以下步骤将向您的存储桶添加通知配置,用于为所有支持的事件发送通知。
控制台
您无法使用 Google Cloud 控制台来管理 Pub/Sub 通知。请改用 gcloud CLI 或某一可用的客户端库。
命令行
使用 gcloud storage buckets notifications create
命令:
gcloud storage buckets notifications create gs://BUCKET_NAME --topic=TOPIC_NAME
其中:
BUCKET_NAME
是相关存储桶的名称,例如my-bucket
。TOPIC_NAME
是要向其发送通知的 Pub/Sub 主题。如果您指定项目中不存在的主题,该命令会为您创建该主题。
如需为一部分事件发送通知,请添加 --event-types
标志。
客户端库
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 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
如需使用 PHP 为存储桶创建通知配置,请参阅 Google Cloud 客户端库参考文档。Python
如需了解详情,请参阅 Cloud Storage Python API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Ruby
如需了解详情,请参阅 Cloud Storage Ruby API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Terraform
您可以使用 Terraform 资源向存储桶添加通知配置。
REST API
JSON API
安装并初始化 gcloud CLI,以便为
Authorization
标头生成访问令牌。或者,您可以创建访问令牌(使用 OAuth 2.0 Playground),并将其包含在
Authorization
标头中。创建一个包含以下信息的 JSON 文件:
{ "topic": "projects/PROJECT_ID/topics/TOPIC_NAME", "payload_format": "JSON_API_V1" }
其中:
PROJECT_ID
是与您要向其发送通知的 Pub/Sub 主题相关联的项目的 ID。例如my-pet-project
。TOPIC_NAME
是要向其发送通知的 Pub/Sub 主题。例如my-topic
。
如需为一部分事件发送通知,请在 JSON 请求的正文中添加
event_types
字段。使用
cURL
,通过POST notificationConfigs
请求调用 JSON API:curl -X POST --data-binary @JSON_FILE_NAME \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/notificationConfigs"
其中:
JSON_FILE_NAME
是您在第 2 步中创建的文件的路径。BUCKET_NAME
是您要为其生成通知的存储桶的名称。例如my-bucket
。
XML API
您无法使用 XML API 来管理 Pub/Sub 通知。
获取通知配置
如需获取与您的存储桶关联的特定通知配置,请完成以下步骤:
控制台
您无法使用 Google Cloud 控制台来管理 Pub/Sub 通知。请改用 Google Cloud CLI 或某一可用的客户端库。
命令行
使用 gcloud storage buckets notifications describe
命令:
gcloud storage buckets notifications describe projects/_/buckets/BUCKET_NAME/notificationConfigs/NOTIFICATION_ID
其中:
BUCKET_NAME
是您要检索其通知配置的存储桶的名称,例如my-bucket
。NOTIFICATION_ID
是相关配置的 ID 编号。例如5
。
如果成功,响应类似于以下示例:
etag: '132' id: '132' kind: storage#notification payload_format: JSON_API_V1 selfLink: https://www.googleapis.com/storage/v1/b/my-bucket/notificationConfigs/132 topic: //pubsub.googleapis.com/projects/my-project/topics/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 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
如需使用 PHP 获取存储桶的通知配置,请参阅 Google Cloud 客户端库 参考文档。Python
如需了解详情,请参阅 Cloud Storage Python API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Ruby
如需了解详情,请参阅 Cloud Storage Ruby API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
REST API
JSON API
安装并初始化 gcloud CLI,以便为
Authorization
标头生成访问令牌。或者,您可以创建访问令牌(使用 OAuth 2.0 Playground),并将其包含在
Authorization
标头中。使用
cURL
,通过GET notificationConfigs
请求调用 JSON API:curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/notificationConfigs/NOTIFICATION_ID"
其中:
BUCKET_NAME
是您要检索其通知配置的存储桶的名称。例如my-bucket
。NOTIFICATION_ID
是您要检索的通知配置的 ID 编号。例如5
。
XML API
您无法使用 XML API 来管理 Pub/Sub 通知。
列出存储桶的通知配置
如需列出与特定存储桶关联的所有通知配置,请执行以下操作:
控制台
您无法使用 Google Cloud 控制台来管理 Pub/Sub 通知。请改用 gcloud CLI 或某一可用的客户端库。
命令行
使用 gcloud storage buckets notifications list
命令:
gcloud storage buckets notifications list gs://BUCKET_NAME
其中,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 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
如需使用 PHP 列出与存储桶关联的通知配置,请参阅 Google Cloud 客户端库参考文档。Python
如需了解详情,请参阅 Cloud Storage Python API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Ruby
如需了解详情,请参阅 Cloud Storage Ruby API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
REST API
JSON API
安装并初始化 gcloud CLI,以便为
Authorization
标头生成访问令牌。或者,您可以创建访问令牌(使用 OAuth 2.0 Playground),并将其包含在
Authorization
标头中。使用
cURL
,通过GET notificationConfigs
请求调用 JSON API:curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/notificationConfigs"
其中,
BUCKET_NAME
是您要列出其通知配置的存储桶的名称。例如my-bucket
。
XML API
您无法使用 XML API 来管理 Pub/Sub 通知。
移除通知配置
如需从存储桶中移除现有通知配置,请执行以下操作:
控制台
您无法使用 Google Cloud 控制台来管理 Pub/Sub 通知。请改用 gcloud CLI 或某一可用的客户端库。
命令行
使用 gcloud storage buckets notifications delete
命令:
gcloud storage buckets notifications delete projects/_/buckets/BUCKET_NAME/notificationConfigs/NOTIFICATION_ID
其中:
BUCKET_NAME
是您要删除其通知配置的存储桶的名称。例如my-bucket
。NOTIFICATION_ID
是您要删除的配置的 ID 号。 例如5
。
如果成功,响应类似于以下示例:
Completed 1
发送通知后,通知配置触发的所有通知最多可能需要 30 秒才能停止。
客户端库
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 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
如需使用 PHP 删除存储桶的通知配置,请参阅 Google Cloud 客户端库参考文档。Python
如需了解详情,请参阅 Cloud Storage Python API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Ruby
如需了解详情,请参阅 Cloud Storage Ruby API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Terraform
如需移除您创建的通知配置,请在包含 Terraform 文件的文件夹中运行 terraform destroy
。
REST API
JSON API
安装并初始化 gcloud CLI,以便为
Authorization
标头生成访问令牌。或者,您可以创建访问令牌(使用 OAuth 2.0 Playground),并将其包含在
Authorization
标头中。使用
cURL
,通过DELETE notificationConfigs
请求调用 JSON API:curl -X DELETE \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/notificationConfigs/NOTIFICATION_ID"
其中:
BUCKET_NAME
是您要删除其通知配置的存储桶的名称。例如my-bucket
。NOTIFICATION_ID
是您要删除的通知配置的 ID 编号。例如5
。
发送通知后,通知配置触发的所有通知最多可能需要 30 秒才能停止。
XML API
您无法使用 XML API 来管理 Pub/Sub 通知。
后续步骤
- 详细了解适用于 Cloud Storage 的 Pub/Sub 通知。
- 在 Pub/Sub 中创建订阅以查看 Cloud Storage 发送的通知。
- 参阅 GitHub 上用于轮询通知的 Python 示例应用。
- 使用 Cloud Functions 通过 Cloud Storage 触发器传送事件。