Pruebas de Funciones Lambda en Local con Serverless Framework

Clase 11 de 25Curso de Serverless Framework en AWS

Contenido del curso

Desarrollando con Serverless Framework

Resumen

Probar una aplicación serverless no significa depender siempre de la nube. Aunque el modelo serverless se ejecuta sobre infraestructura remota como AWS Lambda y API Gateway, existen herramientas que permiten simular ese entorno directamente en tu máquina local, ahorrando tiempo de despliegue y facilitando el desarrollo iterativo. Aquí se exploran dos formas concretas de lograrlo: el comando invoke local de Serverless Framework y el plugin Serverless Offline.

¿Cómo invocar una función Lambda sin desplegarla en la nube?

Una vez que la aplicación fue eliminada de AWS —y puedes confirmarlo cuando tu URL deja de responder porque Amazon eliminó toda la infraestructura [0:18]— el siguiente paso lógico es desarrollar y probar sin necesidad de volver a desplegar.

Para añadir dinamismo a la respuesta de la API y verificar que las pruebas reflejan cambios reales, se declaran constantes que capturan la hora, los minutos y los segundos del sistema [1:22]:

javascript const hora = new Date().getHours(); const minute = new Date().getMinutes(); const seconds = new Date().getSeconds();

Estas constantes se concatenan en el body de la respuesta Lambda, de modo que cada invocación devuelve un valor distinto. Esto permite comprobar que la función responde correctamente sin depender de un despliegue.

El comando invoke local ejecuta la lógica de una función Lambda específica en tu máquina [3:09]. Al correr sls help, se distinguen dos comandos importantes:

  • invoke: ejecuta la función desplegada en la nube.
  • invoke local: ejecuta la función en tu entorno local, sin necesidad de infraestructura remota.

Para usarlo, es necesario especificar qué función probar, porque un proyecto puede contener múltiples funciones Lambda definidas en el archivo serverless.yml [3:42]:

bash sls invoke local --function helloWorld

El resultado muestra la respuesta directa de la función, incluyendo la hora dinámica que cambia con cada invocación [4:12].

¿Por qué invoke local no es suficiente para emular peticiones HTTP?

Aunque invoke local ejecuta la lógica de la función, no simula una petición HTTP real como la que ocurre cuando un navegador hace un GET a través de API Gateway [4:32]. Son cosas diferentes: una cosa es ejecutar la lógica interna y otra es replicar el comportamiento completo del ecosistema serverless de AWS.

Aquí es donde entra Serverless Offline, un plugin creado por la comunidad que emula tanto Lambda como API Gateway en tu máquina local [5:06]. Este plugin es tan popular y tiene tantas horas de desarrollo que Serverless Framework lo incluye en su sección oficial de plugins.

¿Cómo se instala Serverless Offline?

La instalación requiere dos pasos sencillos [6:12]:

  1. Instalar el paquete con npm:

bash npm install serverless-offline

Esto crea la carpeta node_modules con el plugin incluido.

  1. Agregar la sección de plugins en el archivo serverless.yml:

yaml plugins:

  • serverless-offline

Tras guardar, puedes verificar la instalación ejecutando sls help. Notarás una nueva sección llamada Serverless Offline que antes no existía [7:14].

¿Cómo levantar el servidor local con Serverless Offline?

El comando para arrancar la simulación es:

bash serverless offline start

El plugin levanta un servidor en localhost:3000 y muestra las rutas disponibles [7:38]. Al acceder a http://localhost:3000/dev/hello desde el navegador, se obtiene la misma respuesta dinámica que con invoke local, pero ahora a través de una petición HTTP real simulada.

Cada recarga del navegador refleja el cambio en los segundos, confirmando el dinamismo de la API [7:56].

¿Qué ventajas ofrece el desarrollo local en aplicaciones serverless?

La principal ventaja es el ahorro de tiempo. En lugar de desplegar cada cambio a la nube y esperar el proceso completo de CloudFormation, puedes iterar rápidamente en local [8:20]:

  • Agregar nueva lógica y probarla al instante.
  • Llamar a otras APIs o implementar funcionalidades complejas.
  • Verificar resultados sin costos de despliegue.

Un detalle importante es que los cambios en el código no se reflejan automáticamente mientras el servidor está corriendo. Es necesario detener la ejecución y volver a iniciar serverless offline start para que los cambios surtan efecto [8:42].

Explorar el ecosistema de plugins de Serverless Framework te permite extender las capacidades de tu proyecto. La comunidad mantiene activamente estos recursos y cualquier desarrollador puede crear su propio plugin y publicarlo en GitHub. ¿Ya probaste Serverless Offline en tu proyecto? Comparte tu experiencia con otros plugins que hayas encontrado útiles.

      Pruebas de Funciones Lambda en Local con Serverless Framework