处理我的 Amazon Kinesis 数据流时,AWS Lambda 函数每次调用接收的记录少于我在 Kinesis 事件源中配置的批处理大小。这是什么原因?
Lambda 函数处理的实际批处理大小取决于以下几个因素:
- 轮询事件源时,Lambda 从 GetRecords 调用中接收的记录数。
- 用户配置的批处理大小,即每次从流中读取的最大记录数。有关更多信息,请参阅创建事件源映射。
- Lambda 调用负载大小限制 (6MB) 内可以容纳的记录数。记录大小越大,则负载可容纳的记录数就越少。有关限制的更多信息,请参阅 AWS Lambda 限制。
流中的数据量也起到了一定的作用。也就是说,Lambda 函数不会等到有更多记录后才调用。Lambda 函数会以正常速率提取记录并处理可用记录。如果流上的流量较低,则批处理大小也会较低。
使用此公式估算大概批处理大小:
6000 KB / record size in KB
例如,如果批处理中每条记录为 64KB,那么即使您配置了包含 1000 条记录的批处理大小,预计您的每次批处理应该会有大约 90 条记录。