Prácticas recomendadas para implementar respuestas parciales por lotes - AWS Guía prescriptiva

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Prácticas recomendadas para implementar respuestas parciales por lotes

En esta sección se proporcionan las prácticas recomendadas para configurar respuestas por lotes parciales para las fuentes de eventos de Amazon SQS.

  • Configurar una cola de mensajes fallidos para evitar crear un antipatrón acumulativo en la arquitectura de su aplicación sin servidor. Para obtener más información, consulte la sección Evitar los antipatrones acumulativos.

  • Configure la asignación de fuentes de eventos de la función Lambda para que solo sean visibles los mensajes fallidos. Para ello, añádalo ReportBatchItemFailuresa la FunctionResponseTypeslista cuando configure el mapeo de fuentes de eventos. Su función Lambda, cuando SQS la invoca, debe implementar respuestas por lotes parciales. Considere la posibilidad de utilizar la utilidad Powertools for AWS Lambda Batch Processing, que procesa los mensajes SQS con soporte integrado de lotes parciales.

Procesamiento por lotes

Herramientas eléctricas para la utilidad de procesamiento AWS Lambda por lotes

Idempotencia

  • Defina la cantidad de veces que desea que se entregue un mensaje a la cola de origen antes de que se mueva a la cola de mensajes fallidos. Asegúrese de que el valor que defina se ajuste al caso de uso de su aplicación identificando las causas más probables del error y sus tiempos de recuperación estimados. Para definir el número de reintentos, configure el maxReceiveCountvalor en la cola de origen. RedrivePolicy Para obtener más información, consulte SetQueueAttributesla referencia de la API de Amazon SQS. Consulte también la introducción de Amazon Simple Queue Service como redireccionamiento de colas de letras muertas a las colas de origen.

  • Asegúrese de que el código Lambda sea idempotente y pueda gestionar los mensajes varias veces. Para implementar la idempotencia, considere la posibilidad de utilizar la utilidad Powertools for AWS Lambda Idempotency, que prepara el código de una función para admitir trabajos individuales dentro de un lote de Amazon SQS. Comience por incorporar ReportBatchItemFailuresen su evento el mapeo de fuentes. Para obtener más información, consulte Implementación de respuestas por lotes parciales en la Guía para AWS Lambda desarrolladores y ¿Cómo puedo evitar que un mensaje de Amazon SQS invoque mi función Lambda más de una vez?

Utilidad Powertools for Idempotency AWS Lambda

Métricas

Utilidad Powertools for Metrics AWS Lambda

  • Si utiliza una cola First-In-First-Out (FIFO), su función debería dejar de procesar los mensajes después del primer error y devolver todos los mensajes fallidos y sin procesar. batchItemFailures Esto ayuda a conservar el orden de los mensajes de la cola.

nota

Para realizar un seguimiento del rendimiento general de una aplicación que utiliza el procesamiento por lotes parciales, es necesario realizar un seguimiento del rendimiento a nivel de código. Una vez configurado el procesamiento por lotes, las invocaciones a la función Lambda suelen tener éxito independientemente del resultado del procesamiento.

Evitar los antipatrones acumulativos

Lambda y Amazon SQS no pueden controlar los mensajes que los microservicios ascendentes escriben en una cola de SQS. Si hay mensajes que no se pueden procesar, Lambda los devuelve a la cola SQS de origen, a menos que se configure una cola de letras muertas independiente. A continuación, la función Lambda vuelve a intentar los mensajes no procesados. Si no existe ninguna cola de mensajes sin procesar, el número de mensajes sin procesar devueltos a la cola de Amazon SQS eventualmente superará el número de mensajes válidos de la cola.

Este tipo de antipatrón en forma de bola de nieve, en el que cada invocación sucesiva de Lambda empeora el problema, puede provocar los siguientes problemas:

  • Experiencia de usuario deficiente porque los trabajos tardan más de lo habitual en procesarse o no se procesan en absoluto

  • Aumento del costo proporcional al número cada vez mayor de mensajes en la cola de Amazon SQS y reintentos de mensajes

  • Capacidad de computación Lambda reducida para la aplicación o Cuenta de AWS si la función no tiene un límite en sus solicitudes de invocación

Para evitar crear una bola de nieve antipatrón al configurar respuestas por lotes parciales, es mejor crear también una cola con letra muerta. Esta cola independiente puede almacenar los mensajes que no se hayan procesado correctamente y ayudarlo a manejar mejor el ciclo de vida de los mensajes no procesados de su aplicación.

Para obtener más información, consulte Configurar una cola de cartas sin efecto mediante la consola Amazon SQS en la Guía para desarrolladores de Amazon SQS.