Skip to content

nfoxnetwork/aws-lambda-router

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

20 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Build Status npm version dependencies

aws-lambda-router

A small library providing routing for AWS ApiGateway Proxy Integrations and SNS...

Install

$ npm install aws-lambda-router

Usage

const router = require('aws-lambda-router');

exports.handler = router.handler(
    // the router-config contains configs for every type of 'processor'
{
    // for handling an http-call from an AWS Apigateway proxyIntegration we provide the following config:
    proxyIntegration: {
        // activate CORS on all http-methods (OPTIONS requests are handled automagically):
        cors: true,
        routes: [
            {
                // the request-path-pattern to match:
                path: '/graphql',
                // http method to match
                method: 'POST',
                // provide a function to be called with the propriate data
                action: request=>doAnything(request.body)
            },
            {
                // request-path-pattern with a path variable:
                path: '/article/:id',
                method: 'GET',
                // we can use the path param 'id' in the action call:
                action: request=>getSomething(request.paths.id)
            },
            {
                path: '/:id',
                method: 'DELETE',
                action: request=>deleteSomething(request.paths.id)
            }
        ],
        debug: true,
        // custom mapping of thrown errors to http response code error: 
        // the action can throw an object like
        // "throw {reason: 'NotFound', message: 'object id not found'}"
        // the http response then contains the configured value as response code and the message as the body
        errorMapping: {
            'NotFound': 404,
            'ServerError': 500
        }
    },
    // for handling calls initiated from AWS-SNS:
    sns: {
        routes: [
            {
                // a regex to match the content of the SNS-Subject:
                subject: /.*/,
                // Attention: the message is JSON-stringified 
                action: sns => service.doSomething(JSON.parse(sns.Message))
            }
        ]
    }
});

local developement

The best is to work with npm link

See here: http://vansande.org/2015/03/20/npm-link/

Release History

  • 0.2.1 proxyIntegration: CORS in Preflight, status code 400 for invalid body
  • 0.2.0 Attention: breaking changes for configuration; add SNS event process
  • 0.1.0 make it work now
  • 0.0.1 initial release

About

Improved routing for AWS Lambda like SNS and ApiGateway

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • JavaScript 100.0%