AWS Lambda es una plataforma de computo que permite crear funciones pequeñas, configurarlas en la consola de mando de AWS y ejecutar estas funciones sin necesidad de aprovisionar servidores e infraestructura ahorrando costos al pagar unicamente cuando la función es ejecutada. AWS Lambda se ha convertido en el líder mundial en estas tecnologías y cada vez mas organizaciones adoptan este paradigma.

Para entender como escribir una función lambda, primero debemos entender que es lo que recibe y que produce:

Una función lambda tiene algunos requerimientos. Lo primero es que necesitamos un handler. El handler (o manejador) es el punto de entrada para la función lambda. Una función lambda acepta objetos JSON y normalmente regresan otro objeto JSON.

El segundo requerimiento es que tenemos que especificar un ambiente para la función. Usualmente el ambiente se relaciona directamente con el lenguaje que elegimos para la función.

Y finalmente necesitamos un disparador. Podemos configurar una invocación a una función lambda como respuesta a un evento, como: la creación nuevo archivo en S3, un cambio en una tabla de una DynamoDB, u otro evento similar en AWS. Ademas tambien podemos configurarlos para que respondan a requests como un API Gateway, o basados en un temporizador de AWS Cloudwatch.

También podemos configurar una función lambda para que maneje un evento generado por Alexa, pero cubriremos eso en otro articulo.

Opciones De Lenguaje

Se pueden crear funciones lambda para los siguientes lenguajes:

  1. C#
  2. Go
  3. Java
  4. Node.js
  5. Python

Personalmente recomiendo Python, Go o Node por ser los mas rápidos. Sin embargo cuando Java 12 salga probablemente veamos una mejora significativa en el desempeño cuando corre en serverless.

Una Función Lambda Con Python

Lo primero que debemos hacer para crear una función lambda es navegar al panel de las funciones lambda en nuestra consola de aws que se encuentra ubicado en la categoría “Compute”, al entrar ahí veremos algunas métricas vacías y este panel:

Naturalmente hacemos clic en el botón naranja “Create Function” y en el formulario llenamos los datos que nos piden:

Después de crear nuestra función se nos presenta una pantalla en donde podemos configurar los disparadores como dijimos anteriormente. Para este articulo no describiré como configurar un disparador, si no que simplemente configuraremos una prueba de la función y la ejecutaremos posteriormente a haber escrito el código.

el punto de entrada como había descrito antes en este caso es la función lambda_handler que no hace mas que devolver un código de estatus 200, y la frase “Hello from Lambda!” que es el código por defecto configurado. aquí podemos modificar nuestra función a gusto, o bien podemos subir un fichero comprimido (.zip) con todo el código, o subirlo a una cubeta de S3.

Para efectos de este ejemplo nos quedamos con el código auto generado por defecto, y vamos configurar un evento de prueba haciendo clic en el selector que dice “select a test event” en la parte superior derecha del panel.

 

Y luego clic en “Configure test events” lo cual nos muestra el siguiente dialogo donde configuramos nuestra prueba:

Como nuestra función no esta haciendo nada realmente con el JSON de entrada podemos dejar lo que nos genero por defecto o cambiarlo por:

{
  "hola": "mundo"
}

Pero no podemos suprimirlo ya que es obligatorio para que la función lambda trabaje.

Cuando ya configuramos la prueba, simplemente hacemos clic en el botón “Test” con la prueba seleccionada y nos devolverá el resultado de la función con algunas métricas de la ejecución.

Y así en unos cuantos sencillos pasos creamos una función lambda serverless, y la ejecutamos.

 

 

Categorized in:

Tagged in:

, ,