Skip to content

LatcherType-safe event routing for AWS Lambda

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

LatcherLatcher
ts
// main handler
import { Latcher } from '@latcher/base'
import { apiMatcher } from './api'
import { sqsMatcher } from './sqs'

const latcher = new Latcher({
  matchers: [apiMatcher, sqsMatcher],
})

export const handler = latcher.handler()
ts
import { createAPIGatewayMatcher } from '@latcher/apigateway'

import { getOrder } from './getOrder'
import { createOrder, createOrderSchema } from './createOrder'

const apiMatcher = createAPIGatewayMatcher()

apiMatcher.route({
  filters: {
    method: 'GET',
    path: '/order/:id/',
  },
  handler: getOrder,
})

apiMatcher.route({
  filters: {
    method: 'POST',
    path: '/order/:id/',
  },
  handler: createOrder,
  bodySchema: createOrderSchema,
})
ts
import { createSQSMatcher } from '@latcher/sqs'

import { processOrder } from './order/process'
import { refundOrder } from './order/refund'

const sqsMatcher = createSQSMatcher()

sqsMatcher.route({
  filters: { messageAttributes: { Type: ['ProcessOrder'] } },
  handler: processOrder,
})

sqsMatcher.route({
  filters: { messageAttributes: { Type: ['RefundOrder'] } },
  handler: refundOrder,
})

Supported AWS services

There is a matcher for every AWS service that can trigger a Lambda directly. That is 33 matchers across 26 packages.

See all packages and matchers

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.