Lambda处理Kinesis事件正常却被调用4次的问题排查
Lambda处理Kinesis事件重复调用+响应语法无效问题分析
核心原因
PROBLEM: Function response syntax is invalid. Please check function implementation. 这个提示说明Lambda返回给Kinesis事件源的响应格式不符合AWS规范——哪怕你的业务逻辑执行成功,Kinesis仍会判定该批次处理失败,触发3次重试,最终导致总共4次调用(1次初始调用+3次重试)。
具体问题场景
Kinesis作为Lambda事件源时,要求Lambda必须返回特定格式的JSON响应,用于告知哪些记录处理成功/失败。常见的格式错误包括:
- 函数未返回任何内容(比如没有
return语句,返回null或undefined) - 返回非JSON格式的内容(比如直接返回字符串、数字)
- JSON格式不合法:拼写错误(如
batchItemFailure而非batchItemFailures)、缺少必要字段、数组结构错误
正确的响应格式示例:
- 所有记录处理成功时:
{ "batchItemFailures": [] } - 部分记录处理失败时(仅返回失败记录的
sequenceNumber):{ "batchItemFailures": [ {"itemIdentifier": "你的Kinesis记录sequenceNumber"} ] }
解决步骤
- 检查Lambda函数的返回逻辑,确保返回符合上述要求的JSON结构
- 验证返回的JSON语法正确性,可通过Lambda执行日志查看实际返回内容
- 重新部署修正后的函数,执行
aws lambda list-event-source-mappings命令确认LastProcessingResult状态恢复正常
内容的提问来源于stack exchange,提问作者David Marciel
相关产品推荐
相关产品推荐

