@evadata/evadata-medial-lambda
v1.0.9
Published
A middleware for AWS lambda
Keywords
Readme
Evadata Medial Lambda
A wrapper to help build AWS Lambda backed HTTP services.
Setup
This tool is hosted on AWS Code Artifact. You must login to aws code artifact to get credentials for npm.
Login into AWS CodeArtifact
User must be authenticated with AWS in Dev for the command line.
aws codeartifact login --tool npm --domain evadataprotectcode --domain-owner 708206112830 --repository evadata-medial-lambda --namespace @evadataprotectcodeInstall
npm install @evadataprotectcode/evadata-medial-lambdaA wrapper for AWS Lambda
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
