¿Cómo utilizar AWS lambda en Netlify?

AWS Lambda se ha convertido en una de las mejores opciones para desarrollar aplicaciones serverless, ahora Netlify nos proporciona una opción muy potente para configurar nuestras funciones e integrarlas en el ciclo de desarrollo de nuestro sitio web.

JSteven

3 minute read

Las arquitecturas serverless han tomado mucha fuerza en los últimos años, esto debido a que la complejidad que supone la infraestructura de software en aplicaciones que deben ser altamente concurrentes, que deben estar pesadas para tener picos de demanda altos en tiempos muy precisos y además lidiar con la complejidad accidental, supone un gran reto para los arquitectos y desarrolladores. Serverless propone un ciclo de desarrollo diferente al que estamos acostumbrados, se enfoca en dedicar el mayor esfuerzo en el diseño de la solución del problema y en el desarrollo, dejando a que otro ente (AWS, Azure, Google) se encargue de dónde (nube) y cómo (virtualización y auto-escalamiento) va a ejecutarse nuestra aplicación.

En serverless lo que hacemos es escribir funciones que realizan una única tarea, para darse una idea es llevar los micro-servicios a su mínima expresión, a estas funciones en AWS se les llama funciones Lambdas.

Y, ¿Qué podemos hacer con estas funciones?
Básicamente cualquier cosa de backend que se nos ocurra, desde pasar mensajes a otros servicios, ejecutar una tarea, funcionar como un API u orquestar llamados a servicios para devolver una única respuesta. El límite lo pone el proveedor en cuanto a los lenguajes de programación soportados para crear nuestras lambdas.

Suena muy bien pero es importante conocer que cada proveedor define la forma en que cobra por el uso de este servicio, normalmente se cobra por tiempo de ejecución, entre mas demore la ejecución de tu función mas cobrará el proveedor. Además estas funciones deben ser sin estado dado que una vez termina su ejecución la memoria se libera. El escalamiento es automático, por cada petición simultanea a tu función el proveedor se encargará de auto-aprovisionar una nueva instancia de dicha función.

Ya hemos visto como crear y desplegar nuestra app web estática en anteriores entregas (1 , 2), ahora veremos como incluir funciones lambdas gracias a la integración con AWS Lambda.

Primero debemos configurar nuestro sitio para poder usar lambdas, vamos al panel de control de Netlify, seleccionamos nuestra web app y damos en la pestaña functions, luego en settings. En Functions directory colocamos la carpeta en donde almacenaremos nuestras funciones.

Una vez hecho esto solo nos queda comenzar a codificar, para esto tenemos dos opciones hasta el momento, escribir nuestras funciones en NodeJS o en Go y para este tutorial utilizaremos NodeJS. Creamos una nueva carpeta dentro de la raiz de nuestro proyecto y dentro un archivo con nombre helloworld.js

En este archivo pondremos el siguiente código:

var handler =  function(event, context, callback) { // La firma de la función se debe respetar
  callback(null, { // El callback es la función que ejecutará nuestra tarea
    statusCode: 200,
    body: "Hello, World"
  });
};

module.exports.handler = handler; // Toda lambda debe exportar una función handler

En el callback es donde la magia sucede, aquí especificamos que debe devolver nuestra función cuando sea invocada, en este caso devolverá un simple “Hello, World”. Para verlo en acción solo debemos dar commit y push en nuestro repositorio y visitamos la siguiente url https://nuestro-sitio/.netlify/functions/helloworld. El nombre del archivo será el nombre con el que Netlify desplegará la función, por ejemplo, si el archivo se llamara test.js la url sería https://nuestro-sitio/.netlify/functions/test.

Con esto ya podemos ir probando nuevas funciones e incluso llamarlas desde nuestro sitio en el momento que se realice determinada acción, próximamente entraremos mas en detalle de casos de uso reales en las que lambda nos facilitará la vida. Si tienes alguna duda déjala en los comentarios. Saludos.

comments powered by Disqus