Ir al contenido principal

AWS Lambda

La computación dentro de una solución Big Data esta soportada por medio del servicio AWS Lambda (entre otros), que permite ejecutar código sin aprovisionar ni administrar servidores. Se trata de uno de los servicios más interesantes de la plataforma donde únicamente se paga por el tiempo de ejecución de las funciones, por cada 100 ms que el código se ejecute y no por el número de veces que se activa el código. Cuando AWS Lambda ejecuta una función Lambda, se encarga de aprovisionar y administrar los recursos necesarios para ejecutar la función. Al crear una función Lambda, se especifica información de configuración, como la cantidad de memoria y el tiempo de ejecución máximo que se desea permitir. 

Cuando se invoca una función Lambda, AWS Lambda lanza un contenedor (es decir, un entorno de ejecución) basado en los ajustes de configuración que se han  proporcionado. Se necesita tiempo para configurar el contenedor y hacer el bootstrapping necesario, lo que añade latencia cada vez que se invoca la función Lambda. Esta latencia se observa cuando se invoca una función Lambda por primera vez o después de que se ha actualizado, AWS Lambda intenta reutilizar el contenedor para invocaciones posteriores de la función. Después de ejecutar una función Lambda, AWS Lambda mantendrá el contenedor durante algún tiempo en previsión de otra invocación de la función Lambda. 

            En la siguiente imagen mostramos cómo funcionan las funciones Lambda.




            Podemos escribir las funciones Lambda en 4 lenguajes principalmente:

  • Node.js
  • Java
  • C#
  • Phyton


El modelo de programación nos aporta un conjunto de características que debemos tener en cuenta:
  • Handler. Es la función AWS Lambda para iniciar la ejecución de nuestra función Lambda.  Cuando se invoca una función Lambda, AWS Lambda comienza a ejecutar su código llamando a la función del manejador. AWS Lambda pasa todos los datos de eventos a este controlador como el primer parámetro. El manejador debe procesar los datos de eventos entrantes y puede invocar cualquier otra función / método dentro del código aportado.
  • Contexto (interacción en tiempo de ejecución). AWS Lambda también aporta  un objeto de contexto a la función Handler como segundo parámetro. Por medio de este objeto de contexto, el código puede interactuar con AWS Lambda. Por ejemplo, puede controlar el tiempo de ejecución restante antes de que AWS Lambda termine la ejecución de la función Lambda. Para lenguajes como Node.js, existe una plataforma asíncrona que utiliza devoluciones de llamada. AWS Lambda proporciona métodos adicionales sobre este objeto de contexto. 
  • Registro. La función Lambda puede contener declaraciones de registro. AWS Lambda escribe estos registros en los registros de CloudWatch. 
  • Excepciones. La función Lambda puede requerir comunicar el resultado de la ejecución a AWS Lambda. Dependiendo del lenguaje en el que haya creado el código de función Lambda existen diferentes maneras de finalizar una solicitud con éxito o de notificar a AWS Lambda un error durante la ejecución. Si se invoca la función de forma síncrona, AWS Lambda reenvía el resultado al cliente.

A continuación mostramos el código de una handler básico desarrollado en Python:


Comentarios

Entradas populares de este blog

Machine Learning soluciones a los problemas

  El aprendizaje automático, o Machine Learning (ML), es una rama de la inteligencia artificial que se centra en la creación de sistemas que pueden aprender y mejorar a partir de la experiencia sin ser explícitamente programados para cada tarea específica. Este campo ha ganado una gran relevancia en los últimos tiempos debido a los avances en el procesamiento de datos, la disponibilidad de grandes volúmenes de información y el incremento en la capacidad de computación y soluciones Cloud. Vamos a explorar algunos conceptos fundamentales de ML, que problemas surgen en la práctica, como podemos limpiar los datos y que técnicas podemos emplear, que es la validación cruzada y algunos desafíos específicos que plantean los algoritmos. Conceptos Fundamentales de Machine Learning Tipos de Aprendizaje Aprendizaje Supervisado : En este tipo de aprendizaje, el modelo se entrena utilizando un conjunto de datos etiquetados, lo que significa que cada ejemplo de entrenamiento viene con una etiquet...

Despliegue de un IDP en Cognito AWS e Integración con una Web en Sprint Boot

  Introducción En este artículo vamos a describir el proceso de despliegue de un proveedor de identidad (IDP) en Amazon Cognito e integración con una aplicación web desarrollada en Sprint. Se detallan las fases necesarias, las tareas principales dentro de cada fase, junto con recomendaciones para asegurar un proceso exitoso. Fases Necesarias Configuración de Cognito En esta fase se creará el pool de usuarios, el grupo de usuarios y las políticas de autenticación y autorización en Cognito. Tareas Principales: Crear un pool de usuarios en Cognito para gestionar las identidades de los usuarios. Definir los atributos de usuario necesarios para la autenticación y autorización. Configurar las políticas de autenticación para determinar los métodos de acceso (por ejemplo, nombre de usuario y contraseña, autenticación social). Crear un grupo de usuarios para agrupar a los usuarios con permisos específicos. Definir las políticas de autorización para determinar los permisos de acceso a los re...

Jhipster (Angular + Spring Boot) + Docker + AWS

En esta entrada vamos a ver la potencia de esta terna, ya sé que no tiene mucho que ver con el blog, pero me ha parecido interesante compartirlo ya que podemos desarrollar nuestra aplicación web basada en Sprint Boot con un frontal Angular sin mucho esfuerzo (más bien en maquetación), dockerizar esta aplicación, gestionarla desde nuestro dockerhub y publicarla en una máquina EC2 en Amazon completa, teniendo acceso a la misma. El objetivo no es profundizar en JHipster, que nos permite desarrollar proyectos por medio de esta herramienta de una forma rápida, ya que nos asila de conocer y profundizar en exceso en las herramientas (siempre que no nos sea necesario) en las que nos podemos basar. JHipster Es una plataforma de desarrollo que nos permite generar, desarrollar y desplegar modernas aplicaciones web y arquitecturas de microservicios. Os recomiendo que echéis un ojo, me ha parecido muy completo, fácil e intuitivo de manejar.  https://www.jhipster....