SAM es la herramienta que más uso cuando el proyecto es principalmente Lambda + API Gateway. CDK está bien para infraestructura compleja, pero para una API serverless con 5 o 6 endpoints, SAM es más rápido y el modo local es lo que lo hace brillar.
Instalación
brew install aws-sam-cli
sam --version
En Linux puedes usar el instalador oficial o pip, aunque prefiero el binario directo.
Plantilla básica
AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Resources:
HelloFunction:
Type: AWS::Serverless::Function
Properties:
CodeUri: src/
Handler: app.handler
Runtime: nodejs20.x
Events:
Api:
Type: Api
Properties:
Path: /hello
Method: get
Por qué el modo local importa
sam local start-api
Esto levanta tu API en http://127.0.0.1:3000 y ejecuta tus Lambdas dentro de contenedores Docker que imitan el runtime de AWS. No es un emulador a medias, usa las mismas imágenes base que corren en producción.
Para invocar una función individual sin API Gateway:
sam local invoke HelloFunction --event events/event.json
Lo que aprendí por las malas
Nunca confíes en que tu código funciona solo porque pasa los tests unitarios. La primera vez que desplegué sin probar con sam local me tocó rollback a las 11 de la noche porque el handler tenía un import relativo que funcionaba en Jest pero no en Lambda.
Deploy
sam build
sam deploy --guided
El --guided solo lo usas la primera vez. Te guarda la configuración en samconfig.toml y después un simple sam deploy basta.
Cierre
SAM no reemplaza a CDK, son herramientas distintas para necesidades distintas. Pero si tu proyecto vive principalmente en Lambda, SAM te va a hacer la vida más fácil.
Top comments (0)