🔀 Multi-source routing
Combine routers from different AWS services in a single Lambda handler.
One handler, any event source. Route API Gateway, SQS, DynamoDB, S3 and more to the right code.
// main handler
import { LambdaRouter } from '@lambda-event-router/base'
import { apiRouter } from './api'
import { sqsRouter } from './sqs'
const lambdaRouter = new LambdaRouter({
routers: [apiRouter, sqsRouter],
})
export const handler = lambdaRouter.handler()import { createAPIGatewayRouter } from '@lambda-event-router/apigateway'
import { getOrder } from './getOrder'
import { createOrder, createOrderSchema } from './createOrder'
const apiRouter = createAPIGatewayRouter()
apiRouter.route({
filter: {
method: 'GET',
path: '/order/:id/',
},
handler: getOrder,
})
apiRouter.route({
filter: {
method: 'POST',
path: '/order/:id/',
},
handler: createOrder,
bodySchema: createOrderSchema,
})import { createSQSRouter } from '@lambda-event-router/sqs'
import { processOrder } from './order/process'
import { refundOrder } from './order/refund'
const sqsRouter = createSQSRouter()
sqsRouter.route({
filter: { messageAttributes: { Type: ['ProcessOrder'] } },
handler: processOrder,
})
sqsRouter.route({
filter: { messageAttributes: { Type: ['RefundOrder'] } },
handler: refundOrder,
})There is a router for every AWS service that can trigger a Lambda directly. That is 33 routers across 26 packages.
See all packages and routersThe quick start builds a Lambda that handles an SQS queue, then adds a second event source to the same handler. The examples are CDK apps you can deploy and trigger.