Python Lambda写入CSV记录至DynamoDB表时数据丢失问题求助
问题排查分析
问题背景
我实现了一套基于Python Lambda的CSV数据写入DynamoDB流程,具体逻辑如下:
- 外部SA集成将清单文件与CSV文件上传至S3存储桶,清单内记录对应CSV的文件名及记录总数
- 传输Lambda检查S3内容,当清单包含多份CSV文件(单文件最多10万条记录)时,启用DynamoDB自动扩缩容
- 传输Lambda调用第二个Lambda,将指定CSV的记录写入目标DynamoDB表
异常现象
测试场景:清单仅包含1个含10条记录的CSV文件
- 实际结果:DynamoDB表中仅写入2条记录
- 矛盾点:执行写入操作的Lambda日志明确显示已完成全部10条记录的写入
已提供的排查素材
- DynamoDB索引配置信息
- 清单文件内容
- 相关Python Lambda代码片段
- 问题相关截图
可能的排查方向
- 主键/分区键冲突:检查CSV记录是否存在重复的主键/分区键值,DynamoDB会自动覆盖重复键的记录,导致实际存储条数少于写入条数
- 批量写入未处理项:确认写入逻辑中是否处理了
batch_write_item返回的UnprocessedItems,若存在未处理的记录,需重试写入 - DynamoDB限流问题:即使启用自动扩缩容,单文件场景下可能未触发扩缩容阈值,导致写入被限流。可查看CloudWatch中的
ThrottledRequests指标确认 - CSV读取逻辑缺陷:检查第二个Lambda的CSV读取代码,确认是否正确读取了全部10条记录,排查是否存在行过滤、编码错误或空行误判的情况
- 日志一致性验证:核对日志对应的Lambda执行实例ID,确认日志是否属于本次测试的执行流程,排除日志混淆或重复上报的可能
内容的提问来源于stack exchange,提问作者Anthony Williams
相关产品推荐
相关产品推荐

