

# Creación y configuración de una asignación de orígenes de eventos de Amazon SQS
<a name="services-sqs-configure"></a>

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.

**Topics**
+ [Configurar una cola para utilizarla con Lambda](#events-sqs-queueconfig)
+ [Configuración de permisos de rol de ejecución de Lambda](#events-sqs-permissions)
+ [Creación de una asignación de orígenes de eventos](#events-sqs-eventsource)

## Configurar una cola para utilizarla con Lambda
<a name="events-sqs-queueconfig"></a>

Si aún no tiene una cola de Amazon SQS, [cree una](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-configure-create-queue.html) 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](with-sqs-cross-account-example.md).

Para que su función tenga tiempo de procesar cada lote de registros, establezca el [tiempo de espera de visibilidad](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-visibility-timeout.html) de la cola de origen en al menos seis veces el [tiempo de espera que configure](configuration-timeout.md) 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.

**nota**  
El tiempo de espera de la función debe ser menor o igual que el tiempo de espera de visibilidad de la fila. Lambda valida este requisito al crear o actualizar una asignación de orígenes de eventos y devolverá un error si el tiempo de espera de la función supera el tiempo de espera de visibilidad de la fila.

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](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-visibility-timeout.html), 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](services-sqs-errorhandling.md#services-sqs-batchfailurereporting) 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](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-dead-letter-queues.html). Te recomendamos que establezcas `maxReceiveCount` la [política de redrive de la cola de origen en al menos](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-dead-letter-queues.html#policies-for-dead-letter-queues) 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
<a name="events-sqs-permissions"></a>

La política administrada de AWS, [AWSLambdaSQSQueueExecutionRole](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSLambdaSQSQueueExecutionRole.html), contiene los permisos que Lambda necesita para poder leer de la cola de Amazon SQS. Puede [agregar esta política administrada](lambda-intro-execution-role.md) 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:
+ [kms:Decrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html)

## Creación de una asignación de orígenes de eventos
<a name="events-sqs-eventsource"></a>

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](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSLambdaSQSQueueExecutionRole.html) 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](https://console.aws.amazon.com/lambda/home#/functions) en la consola de Lambda.

1. Elija el nombre de una función.

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

1. 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](http://docs.aws.amazon.com/es_es/lambda/latest/dg/images/execution-role.png)

1. Elija **Agregar permisos** y luego **Adjuntar políticas**.  
![Políticas adjuntas a la consola de IAM](http://docs.aws.amazon.com/es_es/lambda/latest/dg/images/attach-policies.png)

1. 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](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSLambdaSQSQueueExecutionRole.html) en la *Referencia de políticas administradas de AWS*.

1. Regrese a la función en la consola de Lambda. En **Function overview (Descripción general de la función)**, elija **Add trigger (Agregar desencadenador)**.  
![Sección de descripción general de la consola de Lambda](http://docs.aws.amazon.com/es_es/lambda/latest/dg/images/add-trigger.png)

1. Elija un tipo de desencadenador.

1. 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](with-sqs-cross-account-example.md).

**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](https://serverlessland.com/content/service/lambda/guides/aws-lambda-operator-guide/configurations#timeouts) 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](configuration-concurrency.md) 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](gettingstarted-limits.md) 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](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_ReceiveMessage.html) 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](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-visibility-timeout.html) de la cola. Recomendamos establecer el tiempo de espera de visibilidad de la cola hasta en seis veces el [tiempo de espera](configuration-timeout.md), 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 invocaciones simultáneas de la función por minuto, hasta un máximo de 1250 invocaciones simultáneas. Cuando se utiliza el modo aprovisionado, cada sondeador de eventos puede gestionar hasta 1 MB/s de rendimiento, hasta 10 invocaciones simultáneas o hasta 10 llamadas a la API de sondeo de Amazon SQS por segundo. Lambda escala el número de sondeadores de eventos entre el mínimo y el máximo configurados, y suma rápidamente hasta 1000 invocaciones simultáneas por minuto para proporcionar un procesamiento de baja latencia de los eventos de Amazon SQS. Usted controla el escalado y la concurrencia mediante estos ajustes de los sondeadores de eventos mínimos y máximos. Para obtener más información sobre el escalado de funciones y la concurrencia, consulte [Comprender el escalado de la función de Lambda](lambda-concurrency.md).  
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](https://aws.amazon.com/blogs/compute/understanding-how-aws-lambda-scales-when-subscribed-to-amazon-sqs-queues/#:~:text=If there are more messages,messages from the SQS queue.).

**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](invocation-eventfiltering.md).

**Simultaneidad máxima**  
Número máximo de funciones simultáneas que puede invocar el origen de eventos. No se puede usar con el modo apromovisionado habilitado. Para obtener más información, consulte [Configuración de la simultaneidad máxima para los orígenes de eventos de Amazon SQS](services-sqs-scaling.md#events-sqs-max-concurrency).

**Modo aprovisionado**  
Cuando está habilitado, asigna recursos de sondeo dedicados para la asignación de orígenes de eventos. Puede configurar el número mínimo (2-200) y máximo (2-2000) de sondeadores de eventos. Cada sondeador de eventos puede gestionar hasta 1 MB/s de rendimiento, hasta 10 invocaciones simultáneas o hasta 10 llamadas a la API de sondeo de Amazon SQS por segundo.  
Nota: No puede utilizar el modo Aprovisionado y la concurrencia máxima a la vez. Cuando el modo Aprovisionado esté habilitado, utilice la configuración máxima de sondeadores para controlar la concurrencia.