Integration with AWS Lambda
AWS Lambda is a serverless computing platform that makes it easy to build applications that run on the AWS cloud. feTS is platform-agnostic so they can fit together easily.
Installation
npm i fetsExample
fets.ts
import { createRouter, Response } from 'fets'
import { APIGatewayEvent, APIGatewayProxyResult, Context } from 'aws-lambda'
const router = createRouter<{ event: APIGatewayEvent lambdaContext: Context }>() .route({ method:
'GET', path: '/greetings', schemas: { responses: { 200: { type: 'object', properties: { message: {
type: 'string' } }, required: ['message'], additionalProperties: false } } } , handler: () =>
Response.json({ message: 'Hello World!' }) })
export async function handler(
event: APIGatewayEvent,
lambdaContext: Context
): Promise<APIGatewayProxyResult> {
const response = await router.fetch(
event.path + '?' + new URLSearchParams(event.queryStringParameters as Record<string, string> || {}).toString(),
{
{
method: event.httpMethod,
headers: event.headers as HeadersInit,
body: event.body
? Buffer.from(event.body, event.isBase64Encoded ? 'base64' : 'utf8')
: undefined
},
{
event,
lambdaContext
}
)
const responseHeaders: Record<string, string> = {}
response.headers.forEach((value, name) => { responseHeaders[name] = value })
return { statusCode: response.status, headers: responseHeaders, body: await response.text(),
isBase64Encoded: false } }