1.0.3 • Published 4 years ago

@cazoo/middy v1.0.3

Weekly downloads
-
License
MIT
Repository
gitlab
Last release
4 years ago

@cazoo/middy

Provides a collection middlewares for authoring middy-based APIs for AWS Lambda.

Usage

When creating a middy wrapper for your lambda handlers, you can use the provided middlewares to implement standard features like global error handling, log sanitisation and JSON response formatting.

This library provides the following middlewares;

  • errorHandler: Global error handler used to ensure that runtime errors result in an appropriate HTTP error response.
  • jsonResponder: Ensures that handler responses are returned as well-formed HTTP JSON responses.
  • sanitisedLogger: Populates the event object with a logger that sanitises sensitive fields from generated log events.

The above middlewares can be added into your handler wrapper like so;

export const lambdaMiddyWrapper = <E extends CazooEvent = CazooEvent>({
  lambda,
  inputSchema,
  sensitiveFields = [],
  statusCode = 200,
  resultBody = true
}: MiddyWrapperInput<E>) =>
  middy(lambda)
    .use(sanitisedLogger<E>({ sensitiveFields })) // @cazoo/middy middleware
    .use(httpHeaderNormalizer())
    .use(jsonBodyParser())
    .use(validator({ inputSchema }))
    .use(jsonResponder<E>({ statusCode, resultBody })) // @cazoo/middy middleware
    .use(errorHandler<E>()); // @cazoo/middy middleware

You can then reference your middy wrapper from your lambda controllers like so;

export default lambdaMiddyWrapper<MyEvent>({
  lambda: myEvent,
  inputSchema,
  statusCode: 200,
  resultBody: true
});

const myEvent = async (event: MyEvent) => await onMyEvent(event);

const inputSchema = {
    type: "object",
    properties: {
        body: {
            type: "object"
        }
    },
    required: ["body"]
}
1.0.3

4 years ago