1) It could, that's another way to architect the solution, nevertheless, if we are talking about best practice it will break the single-responsibility principle :) One Lambda Function should be responsible for only one task.

2) There is a lot of misconception regarding Kinesis Streams and Shards.

One Stream can have N shards;

Shards can be read at a velocity of 5 reads per second, however, your consumer will read from all the shards;

Therefore if you have 5 lambda consumers you already reached the maximum number of read!

Having more shard, it will help for big batch size item, not to have more consumers.

That's why you have a limitation of 5 consumer per kinesis stream until you don't use the FAN-OUT :)

Regarding your question, i don't know what's your use-case, therefore it's hard to give you a yes/no answer about the bottleneck.

If you are willing to share, we can discuss it :)

3) That's an AWS recommendation/limitation, if you check this page: https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Streams.html

there is a note saying:

"No more than two processes at most should be reading from the same streams shard at the same time. Having more than two readers per shard can result in throttling."

I don't work for AWS, therefore i can't really know what's behind the scene :)

Passionate about people management, effective coaching and IT development. Currently Head Of Development, Scrum Master, AWS Certified, Surfer.

Passionate about people management, effective coaching and IT development. Currently Head Of Development, Scrum Master, AWS Certified, Surfer.