@sailplane/lambda-utils
Version:
Use middleware to remove redundancy in AWS Lambda handlers.
42 lines (31 loc) • 1.83 kB
Markdown
# @sailplane/lambda-utils - Lambda handler middleware
## What?
There's a lot of boilerplate in Lambda handlers.
This collection of utility functions leverage the great [Middy](https://middy.js.org/)
library to add middleware functionality to Lambda handlers.
You can extend it with your own middleware.
This is part of the [sailplane](https://github.com/rackspace/sailplane) library of
utilities for AWS Serverless in Node.js.
## Why?
Middy gives you a great start as a solid middleware framework,
but by itself you are still repeating the middleware registrations
on each handler, its exception handler only works with errors created by the http-errors package,
and you still have to format your response in the shape required by API Gateway.
`LambdaUtils` takes Middy further and is extendable so that you can add your own
middleware (authentication & authorization, maybe?) on top of it.
Used with API Gateway, the included middlewares:
- Set CORS headers
- Normalize incoming headers to mixed-case
- If incoming content is JSON text, replaces event.body with parsed object
- Ensures that event.queryStringParameters and event.pathParameters are defined, to avoid TypeErrors
- Ensures that handler response is formatted properly as a successful API Gateway result
- Unique to LambdaUtils!
- Simply return what you want as the body of the HTTP response
- Catch http-errors exceptions into proper HTTP responses
- Catch other exceptions and return as HTTP 500
- Unique to LambdaUtils!
- Besides providing better feedback to the client, not throwing an exception out of your handler means that your
instance will not be destroyed and suffer a cold start on the next invocation
- Leverages async syntax
## How?
See the [docs](https://github.com/rackspace/sailplane/blob/master/README.md) for usage and examples.