This architecture is designed to be used with Node.js projects, but it can be changed to any language.
- Develop multiple lambda functions over the same code base using shared libraries
- Scaffold new lambda functions (configs, handlers & tests)
- One command deploy (build, lint, test & deploy)
- Webpack build system for production
- Use ES2015 & Babel
- Use Mocha for tests
- Travis for CI
- Use ESLint
- Easy versioning & release
- Focus on modularity
Note: Requires a node version >= 4
$ npm install
All commands are defined as scripts in packages.json
.
├── LICENSE
├── README.md
├── bin
│ ├── build.sh
│ ├── create.sh
│ └── deploy.sh
├── config
│ └── templates
│ ├── lambda-spec.tpl.js - Spec test template
│ ├── lambda.config.tpl.js - Lambda config template
│ └── lambda.tpl.js - Lambda handler template
├── gulpfile.js
├── package.json
├── src
│ └── lambdas
├── tests
│ └── index-spec.js
└── webpack.config.js
$ APP=myLambda npm run create
This command will create 3 files:
./src/lambdas/myLambda.js
- Lambda handler function./tests/myLambda-spec.js
- Function test file with Mocha./config/myLambda.config.js
- Lambda config file
$ npm test
This will run all tests for all lambda functions or you can run without npm with:
$ mocha ./tests/myLambda-spec.js --compilers js:babel-register
PROTIP If do you choose run it without npm please install mocha as global before
$ npm install mocha -g
Before Deploy you have to get the AWS Lambda Role Arn
$ ROLE_ARN=xxxx APP=myLambda npm run deploy
You can contribute just opening new issues here or sending a pull request with tests