serverless-lambda
Easy Lambda + DynamoDB development and testing with Serverless Framework. Automatically configure SDK config according to environment variables.
Prerequisites
- nvm or Node 6.10.3 installed
- Docker
Install
npm install --save serverless-lambda
Setting up
Make sure you are using Node v6.10.3
node --version# If not 6.10.3 nvm install 6.10.3
Install Serverless Framework (globally) and its plugins (locally)
npm install --global serverlessnpm install --save-dev serverless-dynamodb-local serverless-offline serverless-plugin-simulate
Download the Docker image that will be used to simulate Lambda
docker pull lambci/lambda:nodejs6.10
Install DynamoDB
sls dynamodb install
Start emulator
You need to have 3 processes simultaneously. Open 3 terminals and run the commands below in order.
sls simulate lambda -p 4000
sls simulate apigateway -p 5000 --lambda-port 4000
sls dynamodb start -p 8000 --seed=development
Usage
AWS SDK
const AWS = ;// Require serverless-lambda for side-effect// This will configure AWS object according to environment; const lambda = ;lambda; const dynamodb = ;dynamodb;
or you can require AWS
object from this package
// This AWS is exactly same object as original require('aws-sdk')const AWS = ; const lambda = ;lambda; const dynamodb = ;dynamodb;
Invoke Functions from CLI
Use Serverless commands
$ sls invoke local
Plugin: Invoke
invoke local .................. Invoke function locally
--function / -f (required) ......... Name of the function
--path / -p ........................ Path to JSON or YAML file holding input data
--data / -d ........................ input data
--raw .............................. Flag to pass input data as a raw string
--context / -c ..................... Context of the service
--contextPath / -x ................. Path to JSON or YAML file holding context data
DynamoDB Shell
API Gateway Entrypoint
TODO
- Add CLI that installs Serverless framework and plugins for easier setup
- More test coverage