AWS Lambda: how to share code between functions in a monorepo

Yan Cui - Jun 30 '19 - - Dev Community

A while back, a client asked me “how can I share business logic between services in a Node.js monorepo?”. The TL;DR of it is:

  • Encapsulate the shared business logic into modules, and put them in a separate folder.

  • In the Lambda handler functions, reference the shared modules using relative paths.

  • Use webpack to resolve and bundle them into the deployment package. If you use the Serverless framework, then check out the serverless-webpack plugin. For example:

  • Deploy every service on every commit. You can do this with a simple script like the following.

To see how everything fits together, check out this demo repo. It has CI/CD set up already through drone.io and you can see a recent deployment of all the services in the monorepo here.

But wait! How do I choose between having a monorepo vs a repo per service?

Don’t worry, I’ve got you covered for that too ;-) You can read about my thoughts on the two approaches here.

Check out theburningmonk.com for more of my articles.

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Terabox Video Player