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 fets

Example

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 } }