AWS Lambda消费Kinesis Stream的更新行为及多实例版本切换逻辑
Lambda发布新版本后消费Kinesis流的行为分析
针对你提出的场景(4分片Kinesis流、Parallelization Factor=1、高负载持续接收事件),发布Lambda新版本后的具体行为如下:
关于“下一次调用是否总会用最新版本”:
不会。正在处理当前批次的旧版本实例不会被强制中断,会继续完成当前批次的处理;而新的分片迭代请求(即新的批次)会使用新版本的函数实例。因此在更新后的一段时间内,新旧版本会同时存在并处理不同的批次。关于是否会执行“滚动更新”:
属于一种基于批次完成的滚动替换,但不是严格按固定顺序逐个替换。每个旧实例在自身当前批次处理完成后,会被新版本实例接管对应分片的后续处理。这个过程中必然会出现部分批次由旧版本处理、部分由新版本处理的情况,直到所有旧实例都完成当前批次并退出。其他补充细节:
Lambda与Kinesis的绑定是基于分片迭代器的,每个实例对应一个分片的迭代器。发布新版本后,新创建的迭代器会关联新版本函数;已存在的旧迭代器(对应正在运行的实例)会持续使用旧版本直到当前批次处理完毕,之后该迭代器会被释放,不再接收新的事件批次,由新版本实例创建新的迭代器接管分片消费。
内容的提问来源于stack exchange,提问作者Renan
相关产品推荐
相关产品推荐

