Creación y configuración de una asignación de orígenes de eventos de Amazon SQS - AWS Lambda

Creación y configuración de una asignación de orígenes de eventos de Amazon SQS

Para procesar los mensajes de Amazon SQS con Lambda, configure la cola con los ajustes adecuados y, a continuación, cree una asignación de orígen de eventos de Lambda.

Configurar una cola para utilizarla con Lambda

Si aún no tiene una cola de Amazon SQS, cree una que sirva como origen de eventos para la función de Lambda. A continuación, configure la cola para dar tiempo suficiente a su función de Lambda a procesar cada lote de eventos.

Para que su función tenga tiempo de procesar cada lote de registros, establezca el tiempo de espera de visibilidad de la cola de origen en al menos seis veces el tiempo de espera que configure en su función. El tiempo adicional permitirá a Lambda volver a intentar realizar los procesos en caso de que la función se vea limitada debido al procesamiento de un lote anterior.

De forma predeterminada, si Lambda detecta un error en cualquier momento del procesamiento de un lote, todos los mensajes de ese lote se vuelven a la cola. Tras el tiempo de espera de visibilidad, Lambda vuelve a ver los mensajes. Puede configurar la asignación de orígenes de orígenes de eventos para usar respuestas de lote parciales para devolver solo los mensajes fallidos a la cola. Si su función no puede procesar un mensaje en repetidas ocasiones, Amazon SQS podrá enviar dicho mensaje a una cola de mensajes fallidos. Te recomendamos que establezcas maxReceiveCount la política de redrive de la cola de origen en al menos 5. Esto le da a Lambda algunas oportunidades de volver a intentarlo antes de enviar los mensajes fallidos directamente a la cola de mensajes sin salida.

Configuración de permisos de rol de ejecución de Lambda

La política administrada de AWS, AWSLambdaSQSQueueExecutionRole, contiene los permisos que Lambda necesita para poder leer de la cola de Amazon SQS. Puede agregar esta política administrada al rol de ejecución de la función.

De manera opcional, si utiliza una cola cifrada, también debe agregar el siguiente permiso a su rol de ejecución:

Creación de una asignación de orígenes de eventos

Cree un mapeo de origen de eventos para indicar a Lambda que envíe elementos desde una cola a una función de Lambda. Puede crear varios mapeos de orígenes de eventos para procesar elementos de varias colas con una sola función. Cuando Lambda invoca la función objetivo, el evento puede contener múltiples elementos, dependiendo del tamaño de lote máximo configurable.

Para configurar la función para que lea desde Amazon SQS, adjunte la política administrada de AWS AWSLambdaSQSQueueExecutionRole al rol de ejecución. A continuación, cree una asignación de orígenes de eventos de SQS desde la consola mediante los siguientes pasos.

Cómo agregar permisos y crear un desencadenador
  1. Abra la página de Funciones en la consola de Lambda.

  2. Elija el nombre de una función.

  3. Elija la pestaña Configuración y, a continuación, elija Permisos.

  4. En Nombre del rol, elija el enlace al rol de ejecución. Este enlace abre el rol en la consola de IAM.

    Enlace al rol de ejecución
  5. Elija Agregar permisos y luego Adjuntar políticas.

    Políticas adjuntas a la consola de IAM
  6. En el campo de búsqueda, escriba AWSLambdaSQSQueueExecutionRole. Agregue esta política al rol de ejecución. Se trata de una política administrada de AWS que contiene los permisos que la función necesita para leer desde una cola de Amazon SQS. Para obtener más información acerca de esta política, consulte AWSLambdaSQSQueueExecutionRole en la Referencia de políticas administradas de AWS.

  7. Regrese a la función en la consola de Lambda. En Descripción general de la función, elija Agregar desencadenador.

    Sección de descripción general de la consola de Lambda
  8. Elija un tipo de desencadenador.

  9. Configure las opciones requeridas y luego elija Add (Agregar).

Lambda admite las siguientes opciones de configuración para los orígenes de eventos de Amazon SQS:

Cola de SQS

La cola de Amazon SQS desde la que leer registros.

Activar desencadenador

El estado de la asignación de origen de eventos. De forma predeterninada, la opción Enable trigger (Activar desencadenador) está seleccionada.

Tamaño de lote

El número máximo de registros que se enviarán a la función en cada lote. Para una cola estándar, puede tratarse de hasta 10 000 registros. Para una cola FIFO, el máximo es 10. Para un tamaño de lote superior a 10, también debe establecer la ventana del lote (MaximumBatchingWindowInSeconds) a al menos 1 segundo.

Configure el tiempo de espera de la función para que disponga de tiempo suficiente para procesar todo un lote de elementos. Si elementos tardan mucho tiempo en procesarse, elija un tamaño de lote más pequeño. Un tamaño de lote amplio puede mejorar la eficiencia para cargas de trabajo que son muy rápidas o tienen mucha administración. Si configura la simultaneidad reservada en la función, establezca al menos cinco ejecuciones simultáneas para reducir la posibilidad de errores de limitación controlada cuando Lambda invoque la función.

Lambda pasa todos los registros del lote a la función en una sola llamada, siempre y cuando el tamaño total de los eventos no exceda la cuota de tamaño de carga de invocaciones para la invocación sincrónica (6 MB). Tanto Lambda como Amazon SQS generan metadatos por cada registro. Estos metadatos adicionales se cuentan como el tamaño total de la carga útil y pueden hacer que el número total de registros enviados en un lote sea inferior al tamaño del lote configurado. Los campos de metadatos que Amazon SQS envía pueden tener una longitud variable. Para obtener más información acerca de los campos de metadatos de Amazon SQS, consulte la documentación de operación de la API ReceiveMessage en la Referencia de la API de Amazon Simple Queue Service.

Ventana del lote

La cantidad de tiempo máxima para recopilar registros antes de invocar la función, en segundos. Esto se aplica únicamente a las colas estándar.

Si utiliza una ventana por lotes superior a 0 segundos, debe tener en cuenta el tiempo de procesamiento aumentado en el tiempo de espera de visibilidad de la cola. Recomendamos establecer el tiempo de espera de visibilidad de la cola hasta en seis veces el tiempo de espera, más el valor de MaximumBatchingWindowInSeconds. Esto permite tiempo para que su función de Lambda procese cada lote de eventos y vuelva a intentarlo en caso de un error de limitación.

Cuando los mensajes están disponibles, Lambda comienza a procesar los mensajes en lotes. Lambda comienza a procesar 5 lotes a la vez con 5 invocaciones simultáneas de la función. Si los mensajes siguen estando disponibles, Lambda agrega hasta 300 instancias más de la función por minuto, hasta un máximo de 1000 instancias de función. Para obtener más información sobre la simultaneidad y el escalado de funciones, consulte Escalado de la función de Lambda.

Para procesar más mensajes, puede optimizar la función de Lambda para obtener un mayor rendimiento. Para obtener más información, consulte Entender cómo escala AWS Lambda con las colas estándar de Amazon SQS.

Simultaneidad máxima

Número máximo de funciones simultáneas que puede invocar el origen de eventos. Para obtener más información, consulte Configuración de la simultaneidad máxima para los orígenes de eventos de Amazon SQS.

Criterios del filtro

Agregue criterios de filtrado para controlar qué eventos envía Lambda a su función para su procesamiento. Para obtener más información, consulte Filtrado de eventos de Lambda.