Usage with AWS Lambda through the API Gateway
AWS Lambda adapter​
The AWS Lambda adapter is supported for API Gateway Rest API(v1) and HTTP API(v2) use cases.
Example app​
| Description | URL | Links | 
|---|---|---|
| API Gateway with NodeJS client. | n/a | 
How to add tRPC​
1. Install deps​
yarn add @trpc/server
2. Create a tRPC router​
Implement your tRPC router. A sample router is given below:
server.ts
import { initTRPC } from '@trpc/server';
import { z } from 'zod';
export const t = initTRPC()();
const appRouter = t.router({
  getUser: t.procedure.input(z.string()).query((req) => {
    req.input; // string
    return { id: req.input, name: 'Bilbo' };
  }),
});
// export type definition of API
export type AppRouter = typeof appRouter;
3. Use the Amazon API Gateway adapter​
tRPC includes an adapter for API Gateway out of the box. This adapter lets you run your routes through the API Gateway handler.
server.ts
import { CreateAWSLambdaContextOptions, awsLambdaRequestHandler } from '@trpc/server/adapters/aws-lambda';
const appRouter = /* ... */;
// created for each request
const createContext = ({
  event,
  context,
}: CreateAWSLambdaContextOptions) => ({}) // no context
type Context = trpc.inferAsyncReturnType<typeof createContext>;
export const handler = awsLambdaRequestHandler({
  router: appRouter,
  createContext,
})
Build & deploy your code, now use your API Gateway URL to call your function.
| Endpoint | HTTP URI | 
|---|---|
getUser | GET https://<execution-api-link>/getUser?input=INPUT where INPUT is a URI-encoded JSON string. | 
A word about payload format version​
API Gateway has two different event data formats when it invokes a Lambda. For REST APIs they should be version "1.0"(APIGatewayProxyEvent), but you can chose which for HTTP APIs by stating either version "1.0" or "2.0".
- Version 1.0: 
APIGatewayProxyEvent - Version 2.0: 
APIGatewayProxyEventV2 
To infer what version you might have, supply the context as following:
function createContext({
  event,
  context,
}: CreateAWSLambdaContextOptions<APIGatewayProxyEvent>) {
  ...
}
// CreateAWSLambdaContextOptions<APIGatewayProxyEvent> or CreateAWSLambdaContextOptions<APIGatewayProxyEventV2>