AWS Lambda の同時実行数の上限は、同一アカウントの同一Region内で1000件まで。
同時実行数に達すると、それ以上の呼び出しはスロットリングされ実行されない。
LamdbaのトリガーとしてSQSを設定した場合の挙動について整理する。
SQSとLambdaで実装する直列処理 | DevelopersIO
- Lambda Functionの予約された同時実行数を
1
に制限する - Lambda FunctionのトリガーとしてSQSを指定する
- SQSをFIFOキューにする
例えば、バッチサイズが3
でキューに50個
データが有る場合、Lambdaが 17個並列で起動します。
予約された同時実行数を1
にしないと、Lambdaが複数起動されてしまい直列に処理ができなくなります。
- Lambda関数に同時実行数が設定してある場合は、ちゃんとその数を保ったまま、すべてのメッセージが順次処理される
New for AWS Lambda – SQS FIFO as an event source | AWS Compute Blog
In SQS FIFO queues, using more than one MessageGroupId enables Lambda to scale up and process more items in the queue using a greater concurrency limit. Total concurrency is equal to or less than the number of unique MessageGroupIds in the SQS FIFO queue. Learn more about AWS Lambda Function Scaling and how it applies to your event source.
- FIFOキューの場合、MessageGroupIdの数だけ並列で実行される