Cloud Pub/Sub 触发器
借助 Cloud Pub/Sub 触发器,您可以根据 Pub/Sub 中间件中的事件运行集成。
使用此触发器时,只要发布者将消息写入您选择的主题,您就可以执行集成。主题可以位于与集成相同的 Google Cloud 项目中,也可以位于其他 Google Cloud 项目中。此触发器执行时,它也会将已发布的消息写入 CloudPubSubMessage 输出变量。根据您的要求,您可以在下游触发器或任务中使用此变量。
如需了解如何使用 Application Integration 和 Cloud Pub/Sub 触发器创建示例集成,请参阅监听 Cloud Pub/Sub 主题并发送电子邮件。
使用此触发器时,只要发布者将消息写入您选择的主题,您就可以执行集成。此触发器执行时,它也会将已发布的消息写入 CloudPubSubMessage 输出变量。根据您的要求,您可以在下游触发器或任务中使用此变量。
准备工作
在配置 Cloud Pub/Sub 触发器之前,请确保在您的 Google Cloud 项目中执行以下任务。
- 为创建此触发器的用户分配 Project IAM Admin (
roles/resourcemanager.projectIamAdmin) 角色。 - 为包含您的集成项目的 Google Cloud 项目启用 Pub/Sub API。
- Access Context Manager Admin (
roles/accesscontextmanager.policyAdmin) - Access Context Manager Editor (
roles/accesscontextmanager.policyEditor) - Access Context Manager Reader (
roles/accesscontextmanager.policyReader) - 确认您具有 Pub/Sub 主题。如需创建新的 Pub/Sub 主题,请执行以下操作:
- 转到 Cloud 控制台中的 Pub/Sub 主题页面。
- 点击创建主题。
- 在主题 ID 字段中,提供唯一的主题名称。
- 点击保存。
如果 Pub/Sub API 受服务边界保护,请确保您定义了以下 IAM 角色来管理这些服务边界:
如需了解如何向主账号授予角色,请参阅授予、更改和撤消访问权限。
添加 Cloud Pub/Sub 触发器
如需将 Cloud Pub/Sub 触发器添加到新的或现有的集成中,请按以下步骤操作:- 在 Google Cloud 控制台中,前往 Application Integration 页面。
- 在导航菜单中,点击集成
系统会显示集成列表页面,其中列出了 Google Cloud 项目中的所有可用集成。
- 选择现有集成,或点击创建集成以创建新的集成。
如需创建新的集成,请执行以下操作:
- 在创建集成窗格中输入名称和说明。
- 选择集成的区域。
- 为集成选择服务账号。您可以随时在集成工具栏的 集成摘要窗格中更改或更新集成的服务账号详细信息。
- 点击创建。
新创建的集成会在集成编辑器中打开。
- 在集成编辑器导航栏中,点击触发器以查看可用触发器列表。
- 点击 Cloud Pub/Sub 触发器元素,并将其放置在设计器中。
配置 Cloud Pub/Sub 触发器
点击集成编辑器中的 Cloud Pub/Sub 触发器 (Cloud Pub/Sub Trigger) 元素以查看触发器配置窗格,然后执行以下任务:
- 按照以下格式在 Pub/Sub 主题字段中指定触发器应监听的主题:
projects/PROJECT_ID/topics/TOPIC_ID
如需查看 Google Cloud 项目中的所有可用主题,请查看主题中的主题名称列。您还可以从其他 Google Cloud 项目中选择主题。
替换以下内容:PROJECT_ID:创建主题的 Google Cloud 项目。TOPIC_ID:您的 Pub/Sub 主题的 ID。主题可以位于与集成项目相同的 Google Cloud 项目中,也可以位于其他 Google Cloud 项目中。
- 选择要用于调用集成服务的服务账号。您还可以选择在集成中创建的配置变量。配置变量的值必须是服务账号电子邮件地址,格式如下:
SERVICE_ACCOUNT_NAME@project-id.iam.gserviceaccount.com。例如,application-integration-invoke@project123.iam.gserviceaccount.com。如需了解如何创建配置变量,请参阅创建变量;如需了解如何创建服务账号,请参阅创建服务账号。
如果您选择配置变量,则必须向配置变量所指的服务账号授予所需角色。如需详细了解如何授予角色,请参阅所需的 IAM 角色。
如果没有服务账号,请点击服务账号列表中的新建来创建服务账号。
默认情况下,订阅的有效期选项设置为 never expire。如果您想将过期时间设置为其他值,请在 Google Cloud 控制台中前往 Pub/Sub 订阅页面,然后修改相应订阅。
服务账号所需的 IAM 角色
选择服务账号后,点击授予会自动向各个服务账号提供以下角色。
| 服务账号 | 已授予 IAM 角色 |
|---|---|
Application Integration 的默认服务账号:service-PROJECT_NUMBER@gcp-sa-integrations.iam.gserviceaccount.com |
如果 Pub/Sub 主题的 Google Cloud 项目与集成项目的 Google Cloud项目不同,则默认服务账号需要主题的 Google Cloud 项目中的 Pub/Sub Editor 角色。 |
| 您为此触发器选择的服务账号 |
Application Integration Invoker (roles/integrations.integrationInvoker)
|
触发器输出
对于每个事件,Cloud Pub/Sub 触发器会生成一个 CloudPubSubMessage 输出变量,您可以在下游任务中使用该变量。该变量采用 JSON 格式,并且具有 PubsubMessage 结构。
为集成创建带过滤条件的订阅
如果您想为 Pub/Sub 订阅设置过滤条件,以便在集成中处理特定事件,请按以下步骤操作:
- 发布已配置 Cloud Pub/Sub 触发器的集成。此步骤会在集成项目中创建订阅。
- 在 Google Cloud 控制台中,前往订阅页面。
- 打开订阅,然后复制所有详细信息,包括订阅名称。
- 删除现有订阅。
- 使用您在第 3 步中复制的已删除订阅的所有详细信息(包括订阅名称)创建新订阅,并在新订阅中添加过滤条件。
新创建的订阅会触发集成,并传递过滤后的消息。
SLA 例外情况
Cloud Pub/Sub 触发器依赖于 Pub/Sub 产品。由于此依赖项位于 Application Integration 外部,因此《Application Integration 服务等级协议 (SLA)》的条款及条件仅在 Cloud Pub/Sub 触发器成功开始执行 active 集成时适用。
将 Pub/Sub 触发器与 VPC Service Controls 搭配使用
如果您在 Application Integration 中配置 Pub/Sub 触发器并尝试发布集成,但 Pub/Sub API 受 VPC Service Controls 中的服务边界保护,则创建所需的 Pub/Sub 订阅会失败。
服务边界会围绕 Google Cloud 资源强制执行安全边界,而这些政策可能会阻止 Application Integration 在集成发布期间创建必要的 Pub/Sub 订阅。
如需在这些场景中成功配置和发布 Pub/Sub 触发器,请执行以下步骤:
- 暂时从服务边界中移除 Pub/Sub API:
- 在 Google Cloud 控制台中,前往 VPC Service Controls 页面。
- 选择包含要在集成中使用的 Pub/Sub 主题的 Google Cloud 项目。
- (可选)如果所选项目未配置任何访问权限政策,系统会显示消息:当前范围内未找到任何 VPC 服务边界。在这种情况下,请点击切换到组织范围,以导航到组织级别。
- 在 VPC Service Controls 页面的表中,点击要修改的服务边界的名称。
- 在服务边界详情页面上,点击修改。
- 在受限的服务窗格中,过滤并选择
pubsub.googleapis.com服务。 - 点击 Remove Selected。
- 点击保存。在确认对话框中,点击确认,从 VPC Service Controls 服务边界中移除 Pub/Sub API。
- 在集成中添加并配置 Pub/Sub 触发器。
- 发布集成。
- 将 Pub/Sub API 重新添加到服务边界:
- 前往 VPC Service Controls 页面。
- 在 VPC Service Controls 页面上,点击表格中您之前修改过的同一服务边界。
- 在服务边界详情页面上,点击修改。
- 在受限的服务窗格中,点击 添加服务。
- 过滤并选择
pubsub.googleapis.com服务。 - 点击添加所选服务。
- 点击保存。在确认对话框中,点击确认,将 Pub/Sub API 重新添加到您的 VPC Service Controls 服务边界。
价格
Cloud Pub/Sub 触发器和 Salesforce 触发器不需要您创建连接器。不过,如果您使用连接器任务连接到 Pub/Sub 或 Salesforce,则需要支付连接器使用费。如需了解价格,请参阅 Application Integration 价格。
注意事项
- Pub/Sub 消息的大小上限为 10 MB。如需了解 Pub/Sub 的所有限制,请参阅 Pub/Sub 配额和限制。
- Pub/Sub 可能会将同一消息多次写入一个主题。要了解 Pub/Sub 的此行为,请参阅至少传送一次。因此,您必须将集成设计为具有幂等性,以免允许将消息多次写入一个主题。
消息标头中的
message_id字段唯一标识 Pub/Sub 消息。 - Cloud Pub/Sub 触发器不支持消息排序。对于由 Cloud Pub/Sub 触发器创建的订阅,Pub/Sub 消息排序处于停用状态,并且无法启用。
- 如果您取消发布集成,系统不会删除 Pub/Sub 订阅,以防消息丢失。不过,如果您删除已发布的版本或集成的所有集成版本,则 Pub/Sub 订阅也会被删除。
配额和限制
如需详细了解配额和限制,请参阅配额和限制。