シャード数を増やさずに Kinesis Data Streams からトリガーされる Lambda の実行数を増やしたい時の対処方法

2022.10.27

困っていた内容

Kinesis Data Streams のコンシューマーに Lambda を利用しているのですが、将来的にはプロデューサーからのデータ量が増えることで Lambda の実行数がボトルネックになることを心配しています。

極力シャード数を増やさずにデータ量の増加に対応したいのですが、Kinesis Data Streams からトリガーされる Lambda の実行数を増やす方法はありますか?

結論

ParallelizationFactor の設定値を変更することで、シャードあたりの Lambda 実行数を増加させることが可能です。

Amazon Kinesis で AWS Lambda を使用する

ParallelizationFactor 設定を使用することで、複数の Lambda 呼び出しを同時に実行して Kinesis または DynamoDB データストリームの 1 つのシャードを処理します。Lambda がシャードからポーリングする同時バッチの数は、1 (デフォルト)~10 の並列化係数で指定できます。例えば、ParallelizationFactor を 2 に設定すると、最大 200 個の Lambda 呼び出しを同時に実行して、100 個の Kinesis データシャードを処理できます。

なお、AWS CLI を利用して ParallelizationFactor を変更する場合は、AWS CLI コマンドaws lambda update-event-source-mappingのオプション--parallelization-factorで指定することにより変更が可能です。

update-event-source-mapping

--parallelization-factor (integer) (Streams only) The number of batches to process from each shard concurrently.

マネジメントコンソール上で設定変更をする場合は、Lambda トリガーの編集画面にある追加設定「シャードあたりの同時バッチ」を変更します。

マネジメントコンソール上での設定箇所

1. Kinesis Data Streams のコンシューマーとなる Lambda を選択し、次画面上部にある「トリガーを追加」ボタンを押下
既にトリガーを作成済みの場合は、画面下部にトリガーが表示されているのでチェックボックスにチェックを入れてから、「編集」ボタンを押下

2. トリガーの設定画面にある「追加設定」を開く

3. シャードあたりの同時バッチに 1 ~ 10 の間で希望する値を入力(デフォルト値 1 )

まとめ

シャードを追加してスループットの改善を図る方法以外に、シャードあたりの同時バッチ数を上げることによっても、コンシューマー側のボトルネックが解消できる可能性があることをお忘れなく。

この記事がどなたかのお役に立てば幸いです。

参考資料