Amazon Kinesis Data Streams を処理する場合、AWS Lambda 関数のバッチサイズが、設定したバッチサイズより小さくなります。Amazon Kinesis イベントソースで設定したバッチサイズよりも Lambda 関数が呼び出しごとに受信するレコード数が少ないのはなぜですか?
解決方法
Kinesis イベントソースの設定時に設定したバッチサイズによって、Lambda 関数が処理できる最大バッチサイズが決まります。Kinesis イベントソースによって呼び出されたときに関数が処理するバッチサイズは、設定したバッチサイズよりも小さくなることがあります。
4 つの値によって、Kinesis イベントソースによって Lambda 関数が呼び出されたときに処理されるバッチサイズが決まります。
- Kinesis イベントソースの設定時に設定するバッチサイズの最大制限。
- イベントソースをポーリングするときに Lambda が行う GetRecords アクションから受信したレコード数。
- Lambda 呼び出しペイロードの 6 MB のサイズ制限以内に収まるレコード数。
注: レコードサイズが大きいほど、ペイロードに収めることができるレコード数が少なくなります。
- Kinesis Data Streams 内のデータ量。
注: Kinesis Data Streams のトラフィックが小さい場合、関数が処理するバッチサイズは小さくなります。
関数が処理するバッチサイズの近似値を計算するには、次の式を使用します。
6000 KB Lambda invocation payload size limit ÷ The size of an individual record in your batch (in KB) = Approximate number of records processed for each batch
たとえば、バッチ内の各レコードが 64 KB の場合、関数がバッチあたり約 90 レコードを処理すると予想されます。
関連情報
Amazon Kinesis と AWS Lambda を使用する
ストリーミングの操作