本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
亚马逊 EventBridge 管道
Amaz EventBridge on Pipes 将源代码连接到目标。它减少了在开发事件驱动架构时对专业知识和集成代码的需求,从而促进了公司应用程序的一致性。要设置管道,请选择来源,添加可选筛选,定义可选扩展,然后选择事件数据的目标。
EventBridge 管道可用于创建电子商务系统。假设您有一个包含客户元数据(例如送货地址)的 API。来源可能是收到的 Amazon SQS 订单消息。然后,管道将该数据发送到Amazon API Gateway API 增强版,后者返回该订单的客户信息。最后,管道将丰富的数据发送到Amazon Step Functions状态机,由状态机处理订单。
源
EventBridge 管道接收来自各种来源的事件数据,对这些数据应用可选的过滤器和扩展,然后将其发送到目标。如果源对发送到管道的事件强制执行顺序,则该顺序将在发送到目标的整个过程中保持不变。更多有关来源的信息,请参阅 亚马逊 EventBridge 管道消息来源。
过滤
EventBridge 管道可以过滤给定源的事件,然后仅处理这些事件的子集。有关筛选的更多信息,请执行以下操作,请执行以下亚马逊 EventBridge 管道筛选操作:
充实
通过 Pipes EventBridge 的扩充步骤,可以在将源数据发送到目标之前对其进行增强。例如,您可能会收到不包含完整票证数据的 Ticket 创建的事件。使用扩展,您可以让 Lambda 函数调用get-ticket
API 以获取完整的票证详细信息。然后,管道可以将该信息发送到目标。
在中设置管道时,可以配置以下扩展 EventBridge:
API 目标
Amazon API Gateway
Lambda 函数
Step Functions 状态机
注意 EventBridge Pipes 仅支持 Express 工作流程作为增强。
EventBridge 同步调用增益,因为它在调用目标之前必须等待强化对象的响应。
充实回应的最大大小,请执行以下操作:
您也可以先转换从源接收的数据,然后再将其发送以进行增强。有关更多信息,请参阅亚马逊 EventBridge 管道输入转换:
使用扩充功能筛选事件
EventBridge 管道将扩充响应直接传递到配置的目标。这包括对支持批处理的目标的数组响应。有关批处理行为的更多信息,请执行以下操作,请执行以下亚马逊 EventBridge 管道的批处理和并发性操作:你也可以使用你的扩充作为过滤器,传递的事件要少于从源头收到的事件。如果您不想调用目标,请返回空响应,例如""
{}
、或[]
。
如果你想用空的有效负载调用目标,请返回一个带有空 JSON 的数组[{}]
。
目标
筛选和丰富事件数据后,您可以将其发送到特定目标,例如 Amazon Kinesis 直播或亚马逊 CloudWatch 日志组。有关可用目标的列表,请执行以下亚马逊 EventBridge 管道的目标操作:
您可以在数据增强之后以及将其发送到目标之前对其进行转换。有关更多信息,请参阅亚马逊 EventBridge 管道输入转换:
验证配置参数
创建管道后, EventBridge 验证以下配置参数:
IAM 角色 — 由于在创建管道后无法更改管道的来源,因此 EventBridge 会验证所提供的 IAM 角色是否可以访问该源。
注意 EventBridge 不会对增益或目标进行相同的验证,因为它们可以在创建管道后更新。
-
批处理 — EventBridge 验证源的批次大小不超过目标的最大批次大小。如果是,则 EventBridge需要较小的批次大小。此外,如果目标不支持批处理,则无法 EventBridge 为源配置批处理。
-
扩展 — EventBridge 验证 API Gateway 和 API 目标扩充的批量大小是否为 1,因为仅支持批量大小 1。
调用类型
EventBridge 有以下方法来调用浓缩或目标:
-
同步(调用类型设置为
REQUEST_RESPONSE
)— 在继续操作之前 EventBridge 等待扩充者或目标的响应。 -
异步(调用类型设置为
FIRE_AND_FORGET
)— EventBridge 不等待响应后再继续。
默认情况下,会同步 EventBridge 调用增益,因为它在调用目标之前必须等待强化对象的响应。同样,对于具有有序源的管道,目标是同步调用的,因为在进入下一个事件之前需要目标的响应。
如果源不强制执行命令,例如标准 Amazon SQS 队列,则 EventBridge 可以同步或异步调用支持的目标。
使用 Lambda 函数和 Step Functions 状态机,您可以配置调用类型。
对于 Step Functions 状态机,必须异步调用标准工作流。
启动或停止管道
默认情况下,管Running
道是在创建时处理事件。要在不处理事件的情况下创建管道,请在 API 调用Stopped
中DesiredState
将设置为,或者在控制台中关闭 Ac tivat e pipe 设置。
如果您使用 Amazon SQS、Kinesis 或 DynamoDB 源创建管道,则创建管道通常需要一两分钟。
如果您使用亚马逊 MSK、自我管理的 Apache Kafka 或Amazon MQ 源创建管道,则创建管道最多可能需要十分钟。
要更改现有管道的状态,请执行以下操作:
API — 将
DesiredState
参数设置为RUNNING
或STOPPED
。控制台 — 在 “管道设置” 选项卡的 “激活” 下,在 “激活管道” 中,开启或关闭 “激活管道”。
管道处于状态STOPPED
和不再处理事件之间可能会有延迟。这种延迟通常少于两分钟,。