AWS Lambda
# AWS Lambda

AWS Lambda es una plataforma informática sin servidor basada en eventos proporcionada por Amazon como parte de Amazon Web Services . Es un servicio informático que ejecuta código en respuesta a eventos y administra automáticamente los recursos informáticos requeridos por medio de código. Fue introducido en noviembre de 2014.

Los lenguajes de programación oficiales desde el 2018 son Node.js, Python, Java, Go, Ruby, y C# (hasta .NET). A fines de 2018, se agregó soporte de tiempo de ejecución personalizado a AWS Lambda.

AWS Lambda admite la ejecución de ejecutables nativos de Linux a través de llamadas desde un tiempo de ejecución compatible, como Node.js. Por ejemplo, el código de Haskell se puede ejecutar en Lambda.

AWS Lambda se diseñó para casos de uso, como cargas de imágenes u objetos en Amazon S3, actualizaciones de tablas de DynamoDB, respuesta a clics en sitios web o reacciones a lecturas de sensores de un dispositivo conectado a IoT. AWS Lambda también se puede utilizar para aprovisionar automáticamente servicios de back-end activados por solicitudes HTTP personalizadas y "reducir" dichos servicios cuando no están en uso, para ahorrar recursos. Estas solicitudes HTTP personalizadas se configuran en AWS API Gateway, que también puede gestionar la autenticación y la autorización junto con AWS Cognito.

A diferencia de Amazon EC2, que tiene un precio por hora pero medido por segundo, AWS Lambda se mide redondeando al milisegundo más cercano sin tiempo mínimo de ejecución.

En 2019, en la conferencia anual de informática en la nube de AWS (AWS re:Invent), el equipo de AWS Lambda anunció "Concurrencia aprovisionada", una función que "mantiene las funciones inicializadas e hiperpreparadas para responder en milisegundos de dos dígitos". El equipo de Lambda describió la simultaneidad aprovisionada como "ideal para implementar servicios interactivos, como backends web y móviles, microservicios sensibles a la latencia o API sincrónicas".

## Especificación

Cada instancia de AWS Lambda es un contenedor creado a partir de AMI de Amazon Linux (una distribución de Linux relacionada con RHEL ) con 128–10240 MB de RAM (en incrementos de 1 MB), 512 MB a 10 GB de almacenamiento efímero en la carpeta /tmp, y un tiempo de ejecución configurable de 1 a 900 segundos. El almacenamiento efímero permanece disponible localmente solo durante la duración de la instancia y se descarta después de que se completan todas las tareas que se ejecutan en la instancia.

Las instancias no se inician ni se controlan directamente. En su lugar, se debe crear un paquete que contenga las tareas requeridas y cargarlo (por lo general) en un depósito de S3, y se le indica a AWS (a través de Amazon Kinesis, DynamoDB o SQS ) que lo ejecute cuando se active un evento. Cada ejecución de este tipo se ejecuta en un nuevo entorno, por lo que no es posible acceder al contexto de ejecución de ejecuciones anteriores y posteriores. Básicamente, esto hace que las instancias no tengan estado, todos los datos entrantes y salientes deben almacenarse por medios externos (generalmente a través de S3 o DynamoDB, las conexiones entrantes a las instancias están deshabilitadas). El tamaño máximo comprimido de un paquete Lambda es de 50 MB y el tamaño máximo sin comprimir es de 250 MB.

Desde diciembre de 2020, Lambda admite contenedores Docker a través de ECR de hasta 10 GB de tamaño.

