DEV Community

Gustavo Ramirez
Gustavo Ramirez

Posted on

AWS SAM para APIs serverless el flujo local que me evita sorpresas en produccion

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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

Por qué el modo local importa

sam local start-api
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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)