通过 Amazon EventBridge Pipes 实现事件集成 - 源与目标的连接模式

介绍将 SQS、DynamoDB Streams、Kinesis 等事件源与目标直接连接,并在中间插入过滤和丰富处理的设计模式。

Pipes 的连接模式

EventBridge Pipes 是一项以点对点方式连接事件源与目标的服务。以往为了将 SQS 队列中的消息传递给 Step Functions,需要创建 Lambda 函数,而使用 Pipes 可以直接连接源与目标。支持的源有 SQS、Kinesis Data Streams、DynamoDB Streams、Amazon MSK 和自管理 Kafka。目标则支持 EventBridge 总线、Step Functions、Lambda、API Gateway、SNS、SQS 等众多服务。通过批处理大小和并发设置来控制吞吐量。

过滤与丰富处理

过滤使用 EventBridge 的事件模式语法,只让符合特定条件的事件进入管道。可以进行从 DynamoDB Streams 中只提取 INSERT 事件、只处理 SQS 消息中特定字段超过阈值的消息等控制。在丰富处理步骤中,将过滤后的事件发送到 Lambda 函数或 API Gateway 端点,以附加外部数据或转换格式。输入转换器通过指定事件的 JSON 路径,将其映射为目标所期望的结构,实现无需代码的数据转换。

源与目标的组合

Pipes 的源支持 SQS、Kinesis Data Streams、DynamoDB Streams、MSK、MQ 和自管理 Kafka。目标支持 Step Functions、Lambda、ECS 任务、EventBridge 总线、API Gateway、SNS、SQS 等 15 个以上的服务。在丰富处理步骤中调用 Lambda 或 API Gateway,为事件数据附加外部信息后再投递到目标。通过输入转换器转换事件的结构,整理为目标所期望的格式。

Pipes 的费用

EventBridge Pipes 按请求数计费,每 64 KB 块约为每 100 万次请求 0.40 美元(截至 2026 年 8 月)。通过过滤缩小投递到目标的事件范围,可以减少目标端的处理成本(Lambda 的执行次数、Step Functions 的状态转换)。丰富处理中的 Lambda 调用会另外产生 Lambda 的标准费用。与不使用 Pipes 而用 Lambda 编写胶水代码的情况相比,可以减少 Lambda 的执行成本和维护成本。

错误处理与重试

Pipes 具备根据源的类型而定的错误处理。对于 SQS、Kinesis 和 DynamoDB Streams,处理失败的消息会被重试,超过规定次数的消息可以转移到死信队列(DLQ)。这样,即使部分事件失败,整个管道也不会停滞,可以事后只对有问题的事件进行调查或重新处理。批量处理时,还可以设置只对失败的条目进行部分重试,从而避免对正常事件的重复处理。监视 DLQ 中积压的事件,将其用于发现根本原因。

顺序保证与吞吐量控制

以 Kinesis Data Streams 或 DynamoDB Streams 为源时,按分片保持顺序。在提高并发处理数以提升吞吐量的同时,同一分片内的顺序得以保持,因此即使是顺序很重要的工作负载也可以安全地扩展。调整批处理大小和批处理的等待时间,可以在延迟与吞吐量之间取得平衡。根据目标端的处理能力进行这些设置,避免给下游服务带来过大的负载。对于像 SQS 这样不需要顺序保证的源,可以提高并发性,优先考虑效率。

与 Step Functions 的组合

将 Step Functions 指定为 Pipes 的目标后,可以以事件为契机启动多步骤的工作流。以往需要编写 Lambda 在源的轮询与工作流的启动之间进行衔接,而这种胶水代码将不再需要。短时间内完成的处理选择同步执行的状态机,耗时的处理选择异步执行,根据用途分别使用。如果通过过滤只保留应启动工作流的事件,就可以减少状态转换的次数,优化成本。可以简洁地构建事件驱动的业务处理。

监控与运维的要点

通过 CloudWatch 的指标掌握 Pipes 的运行状况。监控执行数、失败数、各阶段的耗时等,出现异常时通过告警进行通知。如果用于丰富处理的 Lambda 或 API 的延迟成为瓶颈,整个管道的吞吐量就会达到上限,因此通过查看各阶段的耗时,找出改进点。如果以代码管理配置,并在通过 CI/CD 审查过滤模式和转换规则的变更之后再应用,就可以防止生产环境中出现意外的行为变化。保留日志,以便能够追踪哪些事件经过了怎样的处理。

总结

EventBridge Pipes 通过直接连接事件源与目标,减少作为胶水代码的 Lambda。它从 SQS、Kinesis、DynamoDB Streams 等 6 种源连接到 15 个以上的目标,通过过滤和丰富处理对事件进行筛选和加工。通过输入转换器将事件转换为目标所期望的格式,大幅减少集成代码的维护成本。

参考资料(AWS 官方)

本页的第一手信息来源是 AWS 官方网站及官方文档。最新的规格与价格请以下列官方页面为准。

如本页内容与官方文档不一致,请以官方文档为准。

分享