关于Lambda返回给Kinesis触发流的响应、状态码去向及回传生产者的疑问
关于Kinesis触发Lambda的响应处理说明
1. Lambda返回给Kinesis触发流的响应处理
当Lambda由Kinesis Stream触发时,Lambda的返回值不会被Kinesis Stream做任何业务层面的处理。Kinesis仅关注Lambda的执行状态(成功/失败),以此决定是否重新投递对应分片的记录:
- 若Lambda执行成功(返回2xx状态码),Kinesis会判定这批记录已处理完成,将该分片的检查点(checkpoint)向前推进,不会再重复投递这批记录。
- 若Lambda执行失败(返回非2xx状态码或函数抛出异常),Kinesis会在重试间隔后重新投递这批记录,直至达到配置的重试次数上限,之后会将这批记录转入死信队列(若已配置)。
2. Lambda状态码与返回数据的去向
- 状态码:Lambda的执行状态码仅反馈给Kinesis的触发机制,用于控制检查点推进和重试逻辑,不会被转发至其他组件。
- 返回数据:Lambda函数的返回内容(如处理结果、自定义数据)不会被Kinesis捕获或存储,也不会流转到你的架构中的其他环节(包括MongoDB Atlas或Producer)。若需保留这些返回数据,需在Lambda函数内部主动将其写入目标存储(如S3、MongoDB或另一个Kinesis流)。
3. Kinesis是否会将响应回传给Producer
不会。Kinesis Stream是单向数据流通道,Producer的职责是将数据写入Kinesis,一旦数据成功写入并得到确认,Producer与后续处理流程便无关联。Kinesis不会将Lambda的处理结果或状态回传给原始Producer,若Producer需要知晓处理结果,需额外实现回调机制:比如Producer写入数据时记录唯一标识,通过SQS、API Gateway等通道将处理结果通知Producer,或让Producer主动查询MongoDB Atlas中的结果。
内容的提问来源于stack exchange,提问作者Bear Bile Farming is Torture
相关产品推荐
相关产品推荐

