¿Por qué mi función de Lambda vuelve a intentar enviar mensajes válidos de Amazon SQS y los coloca en mi cola de espera?

Última actualización: 01/11/2021

Configuré mi función de AWS Lambda para procesar mensajes en una cola de Amazon Simple Queue Service (Amazon SQS). Ahora, algunos de mis mensajes válidos de Amazon SQS se reciben varias veces hasta el maxReceiveCount y acaban en mi cola de espera no enviados. ¿Por qué sucede esto y cómo puedo asegurarme de que mi función Lambda procesa todos mis mensajes válidos de Amazon SQS?

Descripción corta

Si la función de Lambda se ralentiza, produce un error o no responde al leer un lote de mensajes de Amazon SQS, los mensajes vuelven a la cola. Una vez que se produce el tiempo de espera de visibilidad, su función de Lambda vuelve a recibir el lote de mensajes. Si la función no logra procesar mensajes válidos varias veces, Amazon SQS envía los mensajes a su cola de espera, si es que configuró una.

Para evitar que los mensajes válidos se coloquen en una cola de espera de letras muertas, el código de su función debe ser idempotente y capaz de administrar los mensajes varias veces..

Resolución

Verifica que el código de tu función Lambda sea idempotente

Para conocer las prácticas recomendadas de idempotencia y la lógica de la función de ejemplo, consulte ¿Cómo hago que mi función Lambda sea idempotente?

Compruebe que el tiempo de espera de visibilidad de su cola de Amazon SQS es al menos seis veces mayor que el ajuste de tiempo de espera de su función de Lambda

Establezca el tiempo de espera de visibilidad de su cola fuente en al menos seis veces más que el tiempo de espera de su función. El tiempo adicional permite que la función vuelva a intentar procesar un lote si la función se estrangula mientras procesa un lote anterior.

Para obtener más información, consulte Configuración del tiempo de espera de visibilidad en la Guía para desarrolladores de Amazon SQS.

Nota: Si su función no recibe mensajes porque el tiempo de espera de visibilidad de la cola no es lo suficientemente largo, los mensajes no se registrarán en sus de Amazon CloudWatch Logs.

Compruebe que el atributo maxReceiveCount está establecido en al menos cinco en la política de redireccionamiento de su cola fuente

Establezca el atributo maxReceiveCount en la política de redireccionamiento de la cola fuente en al menos cinco. Si la función muestra un error o no se puede invocar porque tiene la máxima simultaneidad, el procesamiento podría realizarse correctamente con intentos adicionales. Un maxReceiveCount de al menos cinco da a los mensajes más oportunidades de procesarse antes de que se envíen a la cola de espera.

Para obtener más información, consulte ¿Cómo funcionan las colas de espera? y ¿Cómo evitar el procesamiento de mensajes incoherentes? en la Guía para desarrolladores de Amazon SQS.

Identifique y resuelva cualquier error que muestre su función Lambda

Siga las instrucciones de ¿Cómo soluciono los problemas de los errores de las funciones Lambda? Su función elimina los mensajes de la cola de forma automática solo si la función no muestra un error.


¿Le resultó útil este artículo?


¿Necesita asistencia técnica o con la facturación?