serverless-lambda

1.0.1 • Public • Published

serverless-lambda Build Status codecov

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 serverless
npm 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('aws-sdk');
// Require serverless-lambda for side-effect
// This will configure AWS object according to environment
require('serverless-lambda');
 
const lambda = new AWS.Lambda();
lambda.invoke(someParams);
 
const dynamodb = new AWS.DynamoDB.DocumentClient();
dynamodb.get(someParams);

or you can require AWS object from this package

// This AWS is exactly same object as original require('aws-sdk')
const AWS = require('serverless-lambda');
 
const lambda = new AWS.Lambda();
lambda.invoke(someParams);
 
const dynamodb = new AWS.DynamoDB.DocumentClient();
dynamodb.get(someParams);

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

http://localhost:8000/shell

API Gateway Entrypoint

http://localhost:5000

TODO

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

License

MIT © Hoishin (Keiichiro Amemiya)

Versions

Current Tags

  • Version
    Downloads (Last 7 Days)
    • Tag
  • 1.0.1
    2
    • latest

Version History

  • Version
    Downloads (Last 7 Days)
    • Published
  • 1.0.1
    2
  • 1.0.0
    0

Package Sidebar

Install

npm i serverless-lambda

Weekly Downloads

2

Version

1.0.1

License

MIT

Last publish

Collaborators

  • hoishin