Question
Why is this Lambda function not running more concurrent executions?
I have an AWS Lambda function connected to an AWS Kinesis data stream. The volume of data in the stream has recently scaled up significantly, but the number of concurrent executions of the Lambda function has not increased. "Concurrent executions" always hovers around 2-3, even though you can see that the iterator is backed up with quite a few records waiting to be processed in the queue: (https://i.sstatic.net/wdBhSgY8.png)
I have tried setting up this Lambda function/Kinesis stream with 4 Kinesis shards + 10 parallel executions per shard and even tried 10 provisioned concurrencies in Lambda. Still, it never goes past 3 concurrent executions.
The AWS documentation here says: "For example, when you set ParallelizationFactor to 2, you can have 200 concurrent Lambda invocations at maximum to process 100 Kinesis data shards (though in practice, you may see different values for the ConcurrentExecutions metric)." Why "in practice" might we see different values for concurrent executions? Why are mine stuck at 2-3?
I am sure that I am just failing to understand some basic Lambda concept, but I can't find a good explanation anywhere. What is the variable that triggers Lambda to run more concurrent executions at one time? How can I get my Lambda function to run more concurrent executions?
Details on my Lambda function and Kinesis stream:
Lambda function is a Python 3.9 function
(https://i.sstatic.net/zOiRUoq5.png)
(https://i.sstatic.net/bmO5z6cU.png)