1

私は、Lambda関数をトリガーするDynamoDB Streamを持っています。私は、DynamoDBテーブルへの何千もの書き込みが、ラムダによってすべて処理されるまでに数分(最長30分)かかることに気づいています。バッチサイズが3の各ラムダ呼び出しの平均所要時間は約2秒です。これらのLambdaはI/Oの重いタスクを実行するので、バッチサイズが小さく、並行呼び出し数が多いほど有利です。しかし、これらのLambdaの並列性は、DynamoDBストリームのシャードの数に固定されていますが、シャードの数を増やす方法は見つけられません。DynamoDB Stream + Lambdaスループットの向上

これらのLambdasのスループットを、より大きなバッチサイズとより最適化されたコードを超えて増やす方法はありますか?

答えて

1

各ストリームシャードは、DynamoDBのパーティションに関連付けられています。テーブルのスループットをあまり高くしてpartitions to splitが発生した場合、シャードが増えます。シャードが増えると、並行して動作するラムダ関数の数が増えます。

+0

この情報を含むドキュメントへのリンクを追加できますか?「各ストリームシャードはDynamoDBのパーティションに関連付けられていますか?私はそれを見つけるのに苦労している。 –

+0

[This](https://docs.aws.amazon.com/streams/latest/dev/key-concepts.html)はKinesisストリームですが、同じか類似しているかどうかはわかりません。誰かがラムダがあなたのためにキネシスのストリームクライアントを使用すると言いました。 – HenryLok

1

多くの設定オプションがありません。

処理を切り離すことができます。あなたの変更記録があまりにも大きくなければ、入ってくるラムダはそれらをいくつかのより小さいSNSメッセージに分割することができます。これらのより小さいSNSメッセージのそれぞれは、実際の処理を行うラムダをトリガすることができます。 変更が大きい場合は、SQSまたはS3を使用して、Sambaを介して、またはファイルに対して直接新しいメッセージに対してラムダ処理をトリガすることができます。

関連する問題