Características de Lambda - AWS Lambda

Características de Lambda

Lambda proporciona una consola de administración y una API para administrar e invocar funciones. Proporciona tiempos de ejecución que admiten un conjunto estándar de características para que pueda cambiar fácilmente de un lenguaje a otro o de una plataforma a otra en función de sus necesidades. Además de funciones, también puede crear versiones, alias, capas y tiempos de ejecución personalizados.

Modelo de programación

Los detalles del proceso de creación varían de unos tiempos de ejecución a otros, pero todos comparten un modelo de programación común que define la interfaz entre el código y el código de tiempo de ejecución. Puede indicar al runtime qué método debe ejecutar definiendo un controlador en la configuración de la función; el runtime ejecutará dicho método. El runtime se pasa en forma de objetos al controlador que contiene el evento de invocación y el contexto, como el nombre de la función y el ID de la solicitud.

Cuando el controlador termina de procesar el primer evento, el runtime le envía otro. La clase de la función permanece en la memoria, por lo que se pueden reutilizar los clientes y las variables declarados fuera del método del controlador en código de inicialización. Para ahorrar tiempo de procesamiento en eventos posteriores, cree recursos reutilizables como clientes AWSSDK durante la inicialización. Una vez inicializada, cada instancia de su función puede procesar miles de solicitudes.

Cuando se habilita el seguimiento de AWS X-Ray, el tiempo de ejecución registra subsegmentos separados para la inicialización y la ejecución.


        Un seguimiento X-Ray con subsegmentos de inicialización e invocación.

La función también tiene acceso al almacenamiento local en el directorio /tmp. Las instancias de su función que están atendiendo solicitudes permanecen activas durante unas horas antes de reciclarse.

El runtime captura la salida de registro de la función y la envía a Amazon CloudWatch Logs. Además de registrar la salida de la función, el tiempo de ejecución también registra las entradas cuando comienza y finaliza la invocación. Esto incluye un registro de informe con el ID de solicitud, la duración facturada, la duración de inicialización y otros detalles. Si la función genera un error, el runtime devuelve ese error al invocador.

nota

El registro está sujeto a las cuotas CloudWatch Logs. Los datos de registro se pueden perder debido a una limitación controlada o, en algunos casos, cuando se detiene una instancia de su función.

Para obtener una introducción práctica sobre estos conceptos en su lenguaje de programación preferido, consulte los siguientes capítulos.

Lambda escala la función ejecutando instancias adicionales a medida que aumenta la demanda y deteniendo instancias a medida que disminuye la demanda. A menos que se indique lo contrario, las solicitudes entrantes pueden procesarse de forma desordenada o simultánea. Almacene el estado de la aplicación en otros servicios y no confíe en que las instancias de la función tengan una larga vida útil. Utilice el almacenamiento local y los objetos de nivel de clase para aumentar el rendimiento, pero mantenga al mínimo el tamaño del paquete de implementación y la cantidad de datos que transfiere al entorno de ejecución.

Escalado

Lambda administra la infraestructura que ejecuta el código, escalándola automáticamente en respuesta a las solicitudes entrantes. Cuando la función se invoca a mayor velocidad de la que una sola instancia de su función puede procesar eventos, Lambda amplía la capacidad ejecutando instancias adicionales. Cuando el tráfico disminuye, las instancias inactivas se bloquean o detienen. Solo paga por el tiempo que la función inicia o procesa eventos.


        Su función se escala automáticamente en función del número de solicitudes abiertas.

Para obtener más información, consulte Escalado de funciones de AWS Lambda.

Controles de simultaneidad

Utilice la configuración de simultaneidad para asegurarse de que sus aplicaciones de producción tengan alta disponibilidad y capacidad de respuesta. Para evitar que una función utilice demasiada simultaneidad y para reservar una parte de la simultaneidad disponible de su cuenta para una función, utilice la simultaneidad reservada. La simultaneidad reservada divide el grupo de simultaneidad disponible en subconjuntos. Una función con simultaneidad reservada solo usa simultaneidad desde su grupo dedicado.


        Simultaneidad reservada asignada a dos funciones.

Para permitir a las funciones que se escalen sin fluctuaciones en la latencia, utilice la simultaneidad aprovisionada. Para las funciones que tardan mucho tiempo en inicializarse o que requieren latencia extremadamente baja para todas las invocaciones, la concurrencia aprovisionada le permite preinicializar instancias de su función y mantenerlas ejecutándose en todo momento. Lambda se integra con Auto Scaling de aplicaciones para admitir el escalado automático para simultaneidad aprovisionada basada en la utilización.


        Simultaneidad aprovisionada autoescalada con Auto Scaling de aplicaciones.

Para obtener más información, consulte Administración de la simultaneidad para una función de Lambda.

Invocación asincrónica

Al invocar una función, puede optar por invocarla de forma síncrona o asíncrona. Con invocación síncrona, espere la función para procesar el evento y devolver una respuesta. Con invocación asíncrona, Lambda pone en cola el evento para su procesamiento y devuelve una respuesta inmediatamente.


        Lambda pone en cola eventos de invocación asíncrona antes de enviarlos a la función.

Para las invocaciones asíncronas, Lambda maneja reintentos si la función devuelve un error o está limitada. Para personalizar este comportamiento, puede configurar las opciones de gestión de errores en una función, versión o alias. También puede configurar Lambda para que envíe eventos que hayan fallado en el procesamiento a una cola de mensajes fallidos o para que envíe un registro de cualquier invocación a un destino.

Para obtener más información, consulte Invocación asincrónica.

Mapeos de origen de eventos

Para procesar elementos de una transmisión o una cola, puede crear un mapeo de origen de eventos. Un mapeo de origen de eventos es un recurso en Lambda que lee los elementos de una cola de Amazon Simple Queue Service (Amazon SQS), una transmisión Amazon Kinesis o una transmisión Amazon DynamoDB y envía los elementos a su función en lotes. Cada evento que su función procesa puede contener cientos o miles de elementos.


        Una asignación de origen de eventos lee registros de una secuencia de Kinesis.

Los mapeos de origen de eventos mantienen una cola local de elementos no procesados y manejan los reintentos si la función devuelve un error o está limitada. Puede configurar un mapeo de origen de eventos para personalizar el comportamiento de lotes y el control de errores, o para enviar un registro de elementos que no se han podido procesar a un destino.

Para obtener más información, consulte Mapeos de origen de eventos de AWS Lambda.

Destinos

Un destino es un recurso de AWS que recibe registros de invocación para una función. Para invocación asíncrona, puede configurar Lambda para que envíe registros de invocación a una cola, un tema, una función o un bus de eventos. Puede configurar destinos separados para las invocaciones exitosas y los eventos que no se procesaron correctamente. El registro de invocación contiene detalles sobre el evento, la respuesta de la función y el motivo por el que se ha enviado el registro.


        Lambda envía registros de invocación a un destino de bus de evento o a una cola, dependiendo del resultado.

Para los mapeos de origen de eventos que leen desde secuencias, puede configurar Lambda para que envíe un registro de lotes que no se han procesado correctamente a una cola o tema. Un registro de error para un mapeo de origen de evento contiene metadatos sobre el lote y apunta a los elementos de la secuencia.

Para obtener más información, consulte Configuración de destinos para invocación asincrónica y las secciones de control de errores de Uso de AWS Lambda con Amazon DynamoDB y Uso de AWS Lambda con Amazon Kinesis.

Proyectos de funciones

Cuando crea una función en la Lambda consola, puede elegir iniciar desde cero, usar un blueprint, usar una imagen contenedoro implementar una aplicación desde AWS Serverless Application Repository. Un proyecto proporciona código de muestra que indica cómo usar Lambda con un servicio de AWS o una aplicación de terceros popular. Los proyectos incluyen preajustes de configuración de código de muestra y funciones para los tiempos de ejecución de Node.js y Python.

Los proyectos se proporcionan para su uso bajo la licencia Creative Commons Zero . Solo están disponibles en la consola Lambda.

Herramientas de prueba e implementación

Lambda admite la implementación de código tal como está o como imágenes de contenedor. Puede utilizar un ecosistema de herramientas enriquecido para crear, construir e implementar sus funciones Lambda utilizando AWS herramientas comunitarias populares como la interfaz de línea de comandos (CLI) de Docker.

Para obtener más información, consulte Herramientas para usar con Lambda.

Plantillas de aplicaciones

Puede utilizar la consola de Lambda para crear una aplicación con una canalización de entrega continua. Las plantillas de aplicación de la consola de Lambda incluyen código para una o varias funciones, una plantilla de aplicación que define funciones y recursos AWS compatibles y una plantilla de infraestructura que define una canalización de AWS CodePipeline. La canalización tiene etapas de compilación e implementación que se ejecutan cada vez que inserta cambios en el repositorio Git incluido.

Las plantillas de aplicación se proporcionan para su uso bajo la licencia MIT sin atribución . Solo están disponibles en la consola Lambda.

Para obtener más información, consulte Creación de una aplicación con entrega continua en la consola de Lambda.