本页面介绍了如何配置存储桶,以将有关对象更改的通知发送到 Pub/Sub 主题。如需了解如何订阅可接收通知的 Pub/Sub 主题,请参阅选择订阅类型。
准备工作
在使用此功能之前,您应执行以下操作:
为将接收通知的项目启用 Pub/Sub API。
对您要监控的存储桶拥有
storage.buckets.update
和storage.buckets.get
权限。如需了解如何执行此操作,请参阅使用 IAM 权限。如果您拥有存储桶所属的项目,那么您很可能已具备所需的权限。对接收通知的项目拥有足够的权限:
如果您拥有接收通知的项目,则您很可能具备所需的权限。
如果您打算创建主题来接收通知,应具备
pubsub.topics.create
权限。无论您是打算使用新主题还是现有主题,都应具备
pubsub.topics.setIamPolicy
权限。如果您创建了一个主题,则通常具备该主题的pubsub.topics.setIamPolicy
权限。如需了解如何获得这些 Pub/Sub 权限,请参阅 Pub/Sub 访问权限控制。
使用您在上一步中获得的电子邮件地址为服务代理授予相关 Pub/Sub 主题的 IAM 角色
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
- 从 OAuth 2.0 Playground 获取授权访问令牌。将 Playground 配置为使用您自己的 OAuth 凭据。如需了解相关说明,请参阅 API 身份验证。
创建一个包含以下信息的 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 OAUTH2_TOKEN" \ -H "Content-Type: application/json" \ "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/notificationConfigs"
其中:
JSON_FILE_NAME
是您在第 2 步中创建的文件的路径。OAUTH2_TOKEN
是您在第 1 步中生成的访问令牌。BUCKET_NAME
是您要为其生成通知的存储桶的名称。例如my-bucket
。
XML API
您无法使用 XML API 来管理 Pub/Sub 通知。
获取通知配置
要获取与您的存储桶关联的特定通知配置,请执行以下操作:
控制台
您无法使用 Google Cloud 控制台来管理 Pub/Sub 通知。请改用 gcloud 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
- 从 OAuth 2.0 Playground 获取授权访问令牌。将 Playground 配置为使用您自己的 OAuth 凭据。如需了解相关说明,请参阅 API 身份验证。
使用
cURL
,通过GET notificationConfigs
请求调用 JSON API:curl -X GET \ -H "Authorization: Bearer OAUTH2_TOKEN" \ "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/notificationConfigs/NOTIFICATION_ID"
其中:
OAUTH2_TOKEN
是您在第 1 步中生成的访问令牌。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
- 从 OAuth 2.0 Playground 获取授权访问令牌。将 Playground 配置为使用您自己的 OAuth 凭据。如需了解相关说明,请参阅 API 身份验证。
使用
cURL
,通过GET notificationConfigs
请求调用 JSON API:curl -X GET \ -H "Authorization: Bearer OAUTH2_TOKEN" \ "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/notificationConfigs"
其中:
OAUTH2_TOKEN
是您在第 1 步中生成的访问令牌。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
- 从 OAuth 2.0 Playground 获取授权访问令牌。将 Playground 配置为使用您自己的 OAuth 凭据。如需了解相关说明,请参阅 API 身份验证。
使用
cURL
,通过DELETE notificationConfigs
请求调用 JSON API:curl -X DELETE \ -H "Authorization: Bearer OAUTH2_TOKEN" \ "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/notificationConfigs/NOTIFICATION_ID"
其中:
OAUTH2_TOKEN
是您在第 1 步中生成的访问令牌。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 触发器传递事件。