Amazon EventBridge

将来自 AWS 服务、SaaS 应用和自定义应用的事件进行路由的无服务器事件总线,是事件驱动架构的核心

概述

Amazon EventBridge (原 CloudWatch Events) 是一个无服务器事件总线,将事件源与事件处理目标松耦合连接。基于规则对 AWS 服务事件 (EC2 实例状态变化、S3 对象创建、CodePipeline 部署结果等)、SaaS 合作伙伴事件 (Zendesk、Datadog、Auth0 等) 和自定义应用事件进行过滤,路由到 Lambda、SQS、SNS、Step Functions、API Gateway 等 20 多个目标。通过事件模式匹配,可仅处理符合特定条件的事件。

事件总线与规则设计

EventBridge 的事件总线是事件流经的通道。默认事件总线接收 AWS 服务事件,自定义事件总线接收应用特有事件,合作伙伴事件总线接收 SaaS 合作伙伴事件。规则基于事件模式 (JSON 格式的过滤条件) 或计划 (cron 表达式) 将事件路由到目标。事件模式可按事件源、类型、详细字段值进行过滤。支持前缀匹配、后缀匹配、数值范围、存在性检查等丰富的过滤运算符。一条规则最多可设置 5 个目标,实现将一个事件同时分发到多个目标的扇出模式。

Scheduler 与 Pipes

EventBridge Scheduler 是通过 cron 表达式或 rate 表达式生成定时事件的功能。作为 CloudWatch Events cron 规则的后继,提供更灵活的调度能力。支持一次性计划 (在特定日期时间仅执行一次)、时区指定、弹性时间窗口 (在指定时间范围内随机执行) 等功能。EventBridge Pipes 是简化源到目标点对点集成的功能。从 SQS 队列、Kinesis 流、DynamoDB 流等源获取事件,经过可选的过滤和增强 (Lambda 转换) 后分发到目标。使用 Pipes 可以无需 Lambda 胶水代码即可实现 SQS → Lambda → Step Functions 等集成。

实务活用模式

EventBridge 最常见的应用是基于 AWS 服务事件的自动化。例如 EC2 实例变为 terminated 状态时通知 Slack、GuardDuty 检测到威胁时自动修改安全组、CodePipeline 部署失败时通知团队等模式。在微服务架构中,推荐使用事件总线进行服务间通信的事件驱动模式。订单服务向 EventBridge 发布「订单确认」事件,库存服务、支付服务、通知服务各自独立处理事件。Azure 的对应服务是 Azure Event Grid,同样实现事件驱动架构。从基础到应用,可通过书籍 (Amazon) 系统学习 EventBridge。

共有するXB!