I use serverless to orchestrate my lambdas. They help out with the tradeoff between micro-lambdas and monolith. I get a single code base where I can reuse code, write tests and deploy all at once and serverless packages it up into individual lambdas. You can also manage other resources there in a single serverless file including iam permissioning, databases, or any other aws service. So your entire app is in that config file.
Sometimes it bites you in the ass though and you get cryptic errors when trying to update the app in cloudfront, but overall I think its worth it.
This is my approach and it worked really well for a side(ish)-project. I liked having each endpoint be it's own file but also the code could share common 1st and 3rd party libs. I was also able to easily add some top-level checks/handling by adding a wrapper function that could handle certain types of errors and inject stuff like DataDog (though I will not be using them going forward, way too expensive, even with 0 traffic they were causing almost $75 worth of Cloudwatch requests a month, on top of their costs).
Sometimes it bites you in the ass though and you get cryptic errors when trying to update the app in cloudfront, but overall I think its worth it.
[0] https://www.serverless.com/