0.2.1 • Published 3 years ago
lambda-app v0.2.1
Lambda App - Opinionated Lambda App Initialization, Management and Response System
A simplistic and opinionated way to initialize a lambda-based application on AWS, log consistently to CloudWatch and respond to requests from users. The Lambda App system is designed to help minimize app-start and app-response code in serverless applications both through frameworks like serverless.com or the AWS CDK.
Example Usage
simplistic construction and response
export const main: APIGatewayProxyHandlerV2 = async (event, context) => {
const app = new App()
return app.response(HttpStatus.OK)
}Identity Management
Identity request is called by the App runtime via overloading the function onLoadIdentity. It is called when the user invokes init() from the App instance.
class MyApp extends LambdaApp<
MyIdentity,
APIGatewayEventRequestContextV2,
APIGatewayProxyEventV2WithRequestContext<APIGatewayEventRequestContextV2>
> {
public async onLoadIdentity(request: APIGatewayEventRequestContextV2): Promise<MyIdentity> {
return Promise.resolve({
user: {
id: 'abc123',
first: 'John',
last: 'Doe'
},
company: 'Acme',
office: 'New York'
})
}
}
export const main: APIGatewayProxyHandlerV2 = async (event, context) => {
return new MyApp()
.init({ event, context, options: { authorize: true } })
.then((app) => app.response(HttpStatus.OK))
.catch((app) => app.response(HttpStatus.Forbidden, { error: app.error.message }))
}Tests
Tests are executed via Jest.
npm run test