🔀 Multi-source routing
Combine matchers 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 { Latcher } from '@latcher/base'
import { apiMatcher } from './api'
import { sqsMatcher } from './sqs'
const latcher = new Latcher({
matchers: [apiMatcher, sqsMatcher],
})
export const handler = latcher.handler()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,
})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,
})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 matchersThe 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.