@code-like-a-carpenter/lambda-handlers v3.6.0
@code-like-a-carpenter/lambda-handlers
Wrappers to make writing lambda handlers easier
Table of Contents
Install
npm i @code-like-a-carpenter/lambda-handlersUsage
This package provides various factories for Lambda events. Each factory, at a minimum, adds telemetry to your handler, but also simplifies the interface. For example, the REST handler takes care of JSON serialization and deserialization while the SQS handler lets you think about individual messages rather than the entire event.
All factories force you to prove async callbacks rather than nodebacks.
REST Apis (API Gateway v1
First, use openapi-typescript to generate typescript types from the api.yml
that you're passing to CloudFormation.
npx openapi-typescript api.yml --output __generated__/api.tsThen, use handleRestEvent to define your lambda handler.
import {handleRestEvent} from '@code-like-a-carpenter/lambda-handlers';
import {operations} from './__generated__/api';
export const handler = handleRestEvent<operations['myOperation']>(
async (event, {context, logger}) => ({
statusCode: 204,
})
);event is a transformed version of the raw Lambda event. The query string and
header objects have been replaced with URLSearchParams and Headers,
respectively. For content-type: application/json, the body has been parsed
into a type-safe object.
context is the Lambda context object.
logger is a Logger from @code-like-a-carpenter/logger scoped to this
request.
SQS Events
When you configure your CloudFormation stack, make sure your SQS handler includes
FunctionResponseTypes:
- BatchRequestFailureshandleSqsEvent will take care of return the correct payload if any message
cannot be processed, but it can only do so if the resource has been configured
to expect such a response.
import {handleSqsEvent} from '@code-like-a-carpenter/lambda-handlers';
export const handler = handleSqsEvent(async (message, {context, logger}) => {
logger.info('Received message', {message});
});message is a single record from the original SQS event.
context is the Lambda context object.
logger is a Logger from @code-like-a-carpenter/logger scoped to this
message.
Maintainer
Contributing
Please see contributing guidelines at the project homepage.
License
MIT © Ian Remmel 2023 until at least now
7 months ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
3 years ago
2 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago