Skip to content

Lambda Event RouterType-safe event routing for AWS Lambda

One handler, any event source. Route API Gateway, SQS, DynamoDB, S3 and more to the right code.

Lambda Event RouterLambda Event Router
ts
// 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()
ts
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,
})
ts
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,
})

Supported AWS services

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 routers

Get started

The 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.