1.0.1 • Published 6 years ago

lambda-emulator v1.0.1

Weekly downloads
1
License
MIT
Repository
github
Last release
6 years ago

lambda-emulator Build Status codecov

Emulate AWS Lambda + DynamoDB application and run tests

Prerequisites

  • nvm or Node 6.10.3 installed
  • Docker

Install

npm install --save lambda-emulator

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 and its plugins

npm install --global serverless
npm install --save-dev serverless-dynamodb-local serverless-offline serverless-plugin-simulate

Download the Docker image that will be used to emulate 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

SDK

// Instead of require('aws-sdk') import 'lambda-emulator'
// Even though the name is emulator, this import is production-ready
// since it will just import aws-sdk if it is production
const { Lambda, DynamoDB } = require('lambda-emulator');

const lambda = new Lambda();
lambda.invoke(someParams);

const dynamodb = new DynamoDB.DocumentClient();
dynamodb.get(someParams);

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

http://localhost:8000/shell

API Gateway Entrypoint

http://localhost:5000

API

Lambda

  • Returns AWS.Lambda
  • Endpoint and other configs are set according to environment

DynamoDB

  • Returns AWS.DynamoDB
  • Endpoint and other configs are set according to environment

TODO

  • Add CLI that installs Serverless framework and plugins for easier setup
  • More test coverage

License

MIT © Hoishin (Keiichiro Amemiya)