能否从AWS Kinesis流触发指定Lambda函数?按事件类型触发方案咨询
可行性判断
该需求可以直接实现,不需要额外新增中间架构,直接使用AWS Lambda原生支持的事件源映射过滤规则即可落地。
Lambda针对Kinesis Data Streams类型的事件源,已经支持基于记录内容配置过滤规则,只有匹配过滤规则的记录才会触发对应Lambda执行,不匹配的记录会直接被跳过,不会产生Lambda调用费用。
具体配置方法:给三个分别对应CREATE/UPDATE/DELETE操作的Lambda的Kinesis事件源映射,分别添加对应事件类型的过滤规则即可,CREATE类Lambda的过滤规则示例如下:
{ "filters": [ { "pattern": { "data": { "eventType": ["CREATE"] } } } ] }
同理给另外两个Lambda分别配置eventType为UPDATE、DELETE的过滤规则即可生效。
注意:Kinesis流中的记录payload默认是base64编码,Lambda事件源过滤规则会自动解码data字段内容进行匹配,你不需要额外做编码处理
备选扩展方案
如果你的场景有更复杂的路由逻辑、需要对事件做统一预处理/校验、或者需要支持动态调整路由规则,可选择以下架构:
- 方案1:轻量路由Lambda层
单独部署1个无业务逻辑的路由Lambda订阅Kinesis流,该函数仅负责批量拉取流记录,按事件类型分类后批量调用对应业务Lambda即可,可配合死信队列处理过滤/调用异常的记录。
优势:逻辑灵活可控,可支持任意自定义路由规则,改造现有业务Lambda成本为0。 - 方案2:Amazon EventBridge Pipes托管路由
为每类事件创建独立的EventBridge Pipe,源端统一对接同一个Kinesis流,在Pipe配置页配置对应事件类型的过滤规则,目标端指定对应操作类型的Lambda即可。
优势:完全托管无需维护路由代码,内置重试、异常处理、死信队列能力,同时支持对接EventBridge总线实现更复杂的事件分发逻辑。 - 方案3:Kinesis Data Firehose转储分发
若你的场景还需要对事件做缓冲、格式转换、批量投递到存储/数仓的附加需求,可先将Kinesis流接入Firehose,配置按事件类型过滤的规则,分别投递到对应Lambda以及其他目标存储服务。
方案选择建议
- 仅需要按固定事件类型触发对应Lambda,优先选择原生事件源过滤方案,成本最低改造量最小
- 需要动态调整路由规则、或有额外事件处理需求,优先选择EventBridge Pipes方案
- 有数据转储、缓冲需求选择Firehose方案
内容的提问来源于stack exchange,提问作者Thirumal
相关产品推荐
相关产品推荐

