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)

    Install

    npm i serverless-lambda

    DownloadsWeekly Downloads

    1

    Version

    1.0.1

    License

    MIT

    Last publish

    Collaborators

    • hoishin