Lambda 関数のバッチサイズが設定したバッチサイズより小さいのはなぜですか?

所要時間1分
0

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 を使用する

ストリーミングの操作

AWS公式
AWS公式更新しました 3年前