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. La función de Lambda y la cola de Amazon SQS deben estar en la misma Región de AWS, aunque pueden estar en diferentes Cuentas de AWS.
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
Abra la página de Funciones
en la consola de Lambda. -
Elija el nombre de una función.
-
Elija la pestaña Configuración y, a continuación, elija Permisos.
-
En Nombre del rol, elija el enlace al rol de ejecución. Este enlace abre el rol en la consola de IAM.
-
Elija Agregar permisos y luego Adjuntar políticas.
-
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. -
Regrese a la función en la consola de Lambda. En Descripción general de la función, elija Agregar desencadenador.
-
Elija un tipo de desencadenador.
-
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. La función de Lambda y la cola de Amazon SQS deben estar en la misma Región de AWS, aunque pueden estar en diferentes Cuentas de AWS.
- 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 Controle qué eventos envía Lambda a la función.