Aller au contenu principal
Version : 9.x

Utilisation avec Amazon Lambda via l'API Gateway

Traduction Bêta Non Officielle

Cette page a été traduite par PageTurner AI (bêta). Non approuvée officiellement par le projet. Vous avez trouvé une erreur ? Signaler un problème →

Adaptateur Amazon Lambda

L'adaptateur AWS Lambda est pris en charge pour les cas d'utilisation de l'API Gateway : l'API REST (v1) et l'API HTTP (v2).

Exemple d'application

DescriptionURLLinks
API Gateway with NodeJS client.n/a

Comment ajouter tRPC

1. Installer les dépendances

bash
yarn add @trpc/server
bash
yarn add @trpc/server

2. Créer un routeur tRPC

Implémentez votre routeur tRPC. Un exemple de routeur est fourni ci-dessous :

server.ts
ts
import * as trpc from '@trpc/server';
import { z } from 'zod';
const appRouter = trpc.router().query('getUser', {
input: z.string(),
async resolve(req) {
req.input; // string
return { id: req.input, name: 'Bilbo' };
},
});
// export type definition of API
export type AppRouter = typeof appRouter;
server.ts
ts
import * as trpc from '@trpc/server';
import { z } from 'zod';
const appRouter = trpc.router().query('getUser', {
input: z.string(),
async resolve(req) {
req.input; // string
return { id: req.input, name: 'Bilbo' };
},
});
// export type definition of API
export type AppRouter = typeof appRouter;

3. Utiliser l'adaptateur Amazon API Gateway

tRPC inclut un adaptateur prêt à l'emploi pour API Gateway. Cet adaptateur permet d'exécuter vos routes via le handler API Gateway.

server.ts
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,
})
server.ts
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,
})

Construisez et déployez votre code, puis utilisez l'URL de votre API Gateway pour appeler votre fonction.

EndpointHTTP URI
getUserGET https://<execution-api-link>/getUser?input=INPUT

where INPUT is a URI-encoded JSON string.

Note sur les versions de format de payload

L'API Gateway utilise deux formats de données d'événement différents lorsqu'elle invoque une Lambda. Pour les API REST, la version doit être "1.0" (APIGatewayProxyEvent), mais pour les API HTTP, vous pouvez choisir entre la version "1.0" ou "2.0".

  • Version 1.0 : APIGatewayProxyEvent

  • Version 2.0 : APIGatewayProxyEventV2

Pour déterminer la version utilisée, fournissez le contexte comme suit :

function createContext({ event, context, }: CreateAWSLambdaContextOptions<APIGatewayProxyEvent>) { ... } // CreateAWSLambdaContextOptions<APIGatewayProxyEvent> or CreateAWSLambdaContextOptions<APIGatewayProxyEventV2>
function createContext({ event, context, }: CreateAWSLambdaContextOptions<APIGatewayProxyEvent>) { ... } // CreateAWSLambdaContextOptions<APIGatewayProxyEvent> or CreateAWSLambdaContextOptions<APIGatewayProxyEventV2>

En savoir plus sur les versions de format de payload