A port of the AWSLABS aws-serverless-express library tailor made for the Fastify web framework. Inspired by wanting to use the Fastify gracefully in Nest projects with Lambda. Plus it's called Fastify, how cool is that!
$ npm install aws-serverless-fastify
Nest example is provided here. Below is the summary.
lambda-entrypoint.ts (I think the lambda-entrypoint.ts is much cleaner than what is proposed by Fastify)
import {
Context,
APIGatewayProxyEvent,
APIGatewayProxyResult,
} from 'aws-lambda';
import { bootstrap } from './app';
import * as fastify from 'fastify';
import { proxy } from 'aws-serverless-fastify';
let fastifyServer: fastify.FastifyInstance;
export const handler = async (
event: APIGatewayProxyEvent,
context: Context,
): Promise<APIGatewayProxyResult> => {
if (!fastifyServer) {
fastifyServer = await bootstrap();
}
return await proxy(fastifyServer, event, context);
};
app.ts (Setup the application once in app.ts)
import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';
import {
FastifyAdapter,
NestFastifyApplication,
} from '@nestjs/platform-fastify';
import * as fastify from 'fastify';
export async function bootstrap(): Promise<fastify.FastifyInstance> {
const serverOptions: fastify.ServerOptionsAsHttp = {
logger: true,
};
const instance: fastify.FastifyInstance = fastify(serverOptions);
const nestApp = await NestFactory.create<NestFastifyApplication>(
AppModule,
new FastifyAdapter(instance),
);
nestApp.setGlobalPrefix('api');
nestApp.enableCors();
await nestApp.init();
return instance;
}
main.ts (Will still serve to run the Nest App locally)
import { bootstrap } from './app';
async function startLocal() {
const fastifyInstance = await bootstrap();
fastifyInstance.listen(3000);
}
startLocal();
Not meant to be exhaustive by any means but here are some basic load tests comparisons through API Gateway via Artillery. aws-serverless-fastify versus aws-serverless-express
Pull Requests are welcome! We just thought this was a cool idea to simplify! Important: Commits should follow Angluar conventional-changelog format :)
- Author - Benjamin Main
aws-serverless-fastify is MIT licensed.