import { NestFactory } from '@nestjs/core'; import { ExpressAdapter } from '@nestjs/platform-express'; import serverlessExpress from '@vendia/serverless-express'; import { ValidationPipe, VersioningType } from '@nestjs/common'; import { Context, Handler } from 'aws-lambda'; import express from 'express'; import { AppModule } from './app.module'; let cachedServer: Handler; async function bootstrap() { if (!cachedServer) { const expressApp = express(); const app = await NestFactory.create( AppModule, new ExpressAdapter(expressApp), ); app.enableCors(); app.enableVersioning({ type: VersioningType.HEADER, header: 'Accept-Version', defaultVersion: '1', }); app.useGlobalPipes( new ValidationPipe({ transform: true, transformOptions: { enableImplicitConversion: true }, }), ); await app.init(); cachedServer = serverlessExpress({ app: expressApp }); } return cachedServer; } export const handler = async (event: any, context: Context, callback: any) => { const server = await bootstrap(); return server(event, context, callback); };