## Benefits
- Guaranteed trigger "directly from the horse's mouth" for a Lambda function whenever a modification is made to DDB table. So the developer doesn't need to rely on other code to hook this together.
## Limitations and risks
- Can cause a lot of redundant Lambda invocations if you're not interested a specific modification type for a certain entity type. More of an issue when using single-table design.
- Potential for infinite recursion with [[DynamoDB streams]] Lambda handlers. E.g. if you trigger on a modify and then do another modify on same table inside the stream handler. Again, this is exacerbated on a single table design.
- Can lead to huge functions with several if/else branches if not careful (due to desire to avoid redundant invocations).
- Stream handlers receive a low-level payload for which the subscriber needs to know the schema. They will not receive a more friendly domain event.
- Max of 2 Lambda functions can read from same stream (see [[DynamoDB streams#Quota limits]])
---
tags: #DynamoDB, #Serverless, #AWSServices, #AWS