Crear una minimal API usando AWS Lambda
Ya se que el tema serverless no tiene muchos adeptos, y casi todo el mundo te dice "Comprate un server VPS por 5 dolares". Pero suponete que necesitas una API para algo chiquito, algo rapido, o como yo, que tengo hosteado el blog. En este articulo, te voy a enseñar como hacer para correr una Minimal API de .NET en AWS Lambda de forma REALMENTE facil.
- Crear la API, nada muy loco
dotnet new webapi -n LambdaAPI
cd LambdaAPI
- Agregamos la libreria que permite que Lambda ejecute directamente los endpoints desde .NET
Install-Package Amazon.Lambda.AspNetCoreServer.Hosting
- Agregamos una llamada en nuestro
Program.cs
var builder = WebApplication.CreateBuilder(args);
// La linea que hace la magia
builder.Services.AddAWSLambdaHosting(LambdaEventSource.HttpApi);
var app = builder.Build();
app.MapGet("/", () => "Holis!");
app.Run();
- La corremos localmente, anda sin problemas, tanto en Linux como en Windows o MacOs (obvio tienen que tener instalado el Framework)
Pero como hacemos ahora para hostearla en AWS? Facilisimo!
- Instalamos las AWS Lambda Tools
dotnet tool install -g Amazon.Lambda.Tools
- Le damos al comando
deploy. Nos va a preguntar un par de cosas (region, profile, etc etc)
dotnet lambda deploy-function
Y listo! Vas a verlo en la consola, con una URL del estilo https://[abc123xyz].lambda-url.[region-name].on.aws/. Obviamente esta API es publica, no tiene ningun tipo de seguridad, asi que tengan cuidado lo que hostean.
El free tier de AWS permite 10 millones de ejecuciones de Lambdas por mes y 400,000 GB-seconds de compute time. Creo que si exceden eso, obviamente van a tener que buscar alternativas, pero para cosas chiquitas, esta MAS que bien.
Tambien consideren el cold start (el tiempo que tarda la funcion Lambda en arrancar). Si necesitan mucha velocidad, serverless tal vez no sea lo mas adecuado, pero ha mejorado muchisimo con el tiempo; pueden ver Lambda Cold Starts benchmark para comparar cuanto tarda cada framework/lenguaje.
Y tambien siempre pongan algun rate-limitter, para que si algun gracioso con ganas de hacerles gastar guita se pone a jugar contra su API, que no les termine saliendo 1 millon de dolares.
Ah, y recuerden, nunca llamen recursivamente a una funcion lambda dentro de otra.
Yo soy #teamserverless. Y uds?
Comentarios Recientes
No hay comentarios, porque no dejás alguno?

Deja un comentario



