@medial/lambda
v0.0.13
Published
A middleware for AWS lambda
Downloads
6
Maintainers
Readme
@medial/lambda
A wrapper for AWS Lambda
A wrapper to help build AWS Lambda backed HTTP services.
Features
- Validation via Joi
- Headers
- Path Params
- Query Params
- Payload
- Error responses via Boom
- handles complexities of dealing with lambda functions (For example: multiple values for the same key in queryParams)
Please checkout the full example
Inspired by the hapi framework.
Example
Medial Handler Object
const Lambda = require('@medial/lambda');
const Boom = require('@hapi/boom');
const Joi = require('@hapi/joi');
exports.get = Lambda.define({
validate: {
query: Joi.object().keys({
world: Joi.string().default('world')
})
},
handler: async function(request, h) {
const world = request.query.world;
return {hello: world};
}
});
exports.get
is now a AWS Lambda function. Once this function is configured for HTTP access via the AWS API Gateway - when invoked, it will return {"hello": "world"}
with a response code of 200
.
You can also invoke the lambda from another lambda. The response will look like this:
{
multiValueHeaders: {},
statusCode: 200,
body: '{"hello": "world"}' // this is stringifyed object
}
Working example
Deploy the example to AWS and/or run it locally with swagger documentation