Created
August 6, 2024 11:46
-
-
Save leegilmorecode/0776b2f2a4809c58ee5b64f7fd053d71 to your computer and use it in GitHub Desktop.
An example of a typed state machine lambda handler with middy and powertools
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import { Logger } from '@aws-lambda-powertools/logger'; | |
import { injectLambdaContext } from '@aws-lambda-powertools/logger/middleware'; | |
import { Metrics } from '@aws-lambda-powertools/metrics'; | |
import { logMetrics } from '@aws-lambda-powertools/metrics/middleware'; | |
import { Tracer } from '@aws-lambda-powertools/tracer'; | |
import { captureLambdaHandler } from '@aws-lambda-powertools/tracer/middleware'; | |
import middy from '@middy/core'; | |
import { Handler } from 'aws-lambda'; | |
interface StateMachineEvent { | |
someProperty: string; | |
anotherProperty: number; | |
} | |
interface CustomContext { | |
// add properties specific to your context | |
} | |
interface CustomResponse { | |
something: string; | |
secondThing: number; | |
} | |
const tracer = new Tracer(); | |
const metrics = new Metrics(); | |
const logger = new Logger(); | |
const myHandler: Handler<StateMachineEvent, CustomResponse> = async ( | |
event: StateMachineEvent, | |
context: CustomContext | |
): Promise<CustomResponse> => { | |
// TODO - code goes here for the handler | |
const { someProperty, anotherProperty } = event; | |
logger.info( | |
`someProperty: ${someProperty}, anotherProperty: ${anotherProperty}` | |
); | |
return { | |
something: 'something', | |
secondThing: 1, | |
}; | |
}; | |
export const handler = middy(myHandler) | |
.use(injectLambdaContext(logger)) | |
.use(captureLambdaHandler(tracer)) | |
.use(logMetrics(metrics)); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment