Contenido del curso
Conceptos Claves
Explicación de Serverless Framework
Ecosistema Serverless en AWS
Desarrollando con Serverless Framework
- 12

Conecta Lambda a DynamoDB con AWS SDK
17:23 min - 13

Configuración y uso de DynamoDB Local con Serverless
13:42 min - 14

Variables de ambiente y permisos IAM al desplegar Lambda
18:20 min - 15

Insertar usuarios en DynamoDB con Lambda POST
22:36 min - 16

Actualización de Usuarios en DynamoDB con Serverless Framework
12:36 min - 17

Función Lambda DELETE en Python con Boto3
16:28 min - 18

Servicios AWS más allá de Lambda y DynamoDB
04:24 min
Bonus
Cierre del curso
Crea tus API’s con Serverless Framework y ChatGPT
Prueba tu Lambda sin desplegar a AWS
Resumen
¿Te imaginas desarrollar aplicaciones serverless sin desplegar a la nube cada vez que quieres probar un cambio? Probar funciones Lambda en local con Serverless Framework es posible y te ahorra tiempo valioso de despliegue. Aquí verás cómo invocar funciones localmente y cómo el plugin Serverless Offline emula API Gateway en tu máquina.
¿Cómo invocar una función Lambda en local con Serverless Framework?
Antes de instalar plugins externos, Serverless Framework ya trae un comando nativo para ejecutar tu función sin desplegarla. La idea es simple: pruebas tu lógica directamente desde la terminal, sin esperar a que CloudFormation levante toda la infraestructura en AWS.
Para verlo en acción, primero le damos algo de dinamismo a la respuesta de la Lambda. En lugar de devolver un mensaje estático, usamos new Date() con getHours(), getMinutes() y getSeconds() para concatenar la hora actual en el body de la respuesta [02:00]. Así, cada invocación devuelve un valor distinto y confirmas que la función se está ejecutando de verdad.
El comando clave es sls invoke local, pero necesita que le indiques cuál función ejecutar, porque un mismo proyecto puede tener varias Lambdas declaradas en el serverless.yml. La sintaxis correcta es:
bash sls invoke local --function hello
¿Qué hace
sls invoke local? Ejecuta el código de una función Lambda directamente en tu máquina sin desplegarla a AWS. Solo corre la lógica del handler, no simula peticiones HTTP.
¿Por qué invoke local no es lo mismo que una petición HTTP real?
Al invocar la función con invoke local ves la respuesta en consola, pero no es idéntica a lo que recibirías desde el navegador. La razón es sencilla: en el navegador haces una petición HTTP con método GET que pasa por API Gateway, mientras que invoke local solo dispara la lógica del handler sin emular el flujo completo del ecosistema serverless de AWS.
Emular todo ese ecosistema desde cero sería muy complejo, pero la comunidad ya hizo gran parte del trabajo. Existe un plugin ampliamente adoptado que simula tanto Lambda como API Gateway en tu entorno local, y se llama Serverless Offline.
¿Qué es Serverless Offline y qué emula?
Serverless Offline es un plugin de la comunidad listado en la página oficial de plugins de Serverless Framework. Su función es emular dos servicios de AWS al mismo tiempo:
- AWS Lambda, para ejecutar el código de tus funciones.
- API Gateway, para exponer rutas HTTP en tu máquina.
Esto significa que puedes abrir el navegador, hacer una petición GET a un endpoint local y recibir una respuesta tal como ocurriría en producción. Ideal para iterar rápido en lógicas complejas sin pagar el costo de tiempo del despliegue [05:30].
¿Cómo instalar y configurar Serverless Offline paso a paso?
La instalación toma segundos. Primero instalas el paquete con npm desde la raíz de tu proyecto:
bash npm install serverless-offline --save-dev
Esto crea la carpeta node_modules con el plugin listo para usarse. Después abres tu archivo serverless.yml y añades la sección de plugins:
yaml plugins:
- serverless-offline
Guardas el archivo y con eso le das nuevos superpoderes a tu aplicación. Para confirmar que quedó bien instalado ejecuta sls help: aparecerá una nueva sección llamada Serverless Offline entre los comandos disponibles.
¿Cómo arranco un servidor local con Serverless Offline? Ejecuta
sls offline starten la raíz del proyecto. El plugin levanta un servidor enlocalhost:3000con tus rutas listas para recibir peticiones HTTP.
¿Cómo se prueba la API en el navegador?
Al correr sls offline start, la consola muestra los endpoints disponibles. En el ejemplo, queda expuesta una ruta GET en http://localhost:3000/dev/hello [07:00]. Abres esa URL en el navegador y recibes la misma respuesta que daría AWS, con la hora actualizándose en cada recarga.
La terminal también registra cada llamada que hace la API local, lo que te permite depurar y ver el comportamiento en tiempo real.
¿Qué limitaciones tiene el desarrollo local con Serverless Offline?
Serverless Offline acelera enormemente el ciclo de desarrollo, pero no es mágico. Si modificas el código mientras el servidor está corriendo, los cambios no siempre se reflejan automáticamente. En esos casos necesitas detener el proceso y volver a ejecutar sls offline start para que tome la versión nueva.
Tampoco emula al cien por ciento todos los servicios de AWS ni los comportamientos exactos de IAM, cold starts o triggers de otros servicios. Para lógica HTTP estándar funciona muy bien; para escenarios más exóticos, te tocará probar en la nube de todos modos.
Algunas buenas prácticas que vale la pena adoptar:
- Usa
sls invoke local --function <nombre>cuando solo quieras probar la lógica del handler. - Usa
sls offline startcuando necesites simular peticiones HTTP completas vía API Gateway. - Reinicia el servidor offline tras cambios significativos en
serverless.ymlo en los handlers. - Explora otros plugins de la comunidad para extender capacidades como autenticación o integración con DynamoDB local.
Con estas dos herramientas combinadas reduces drásticamente el tiempo de espera entre iteraciones, mantienes tu cuenta de AWS limpia y desarrollas con la misma agilidad que tendrías en cualquier backend tradicional. ¿Qué plugin de Serverless Framework te gustaría explorar a continuación? Cuéntalo en los comentarios.