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
Las siguientes son las prácticas recomendadas para configurar respuestas por lotes parciales para las fuentes de SQS eventos de Amazon
-
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 de esta guía.
-
Configure la asignación de orígenes de eventos de la función de Lambda para que solo se vean los mensajes fallidos. Para ello, debe incluir el valor ReportBatchItemFailuresen la FunctionResponseTypeslista al configurar el mapeo de la fuente de eventos. Para obtener más información, consulte Implementación de respuestas por lotes parciales en la Guía para AWS Lambda desarrolladores.
-
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 los tiempos de recuperación estimados. Para definir el número de reintentos, debe configurar el maxReceiveCountvalor de la cola de origen. RedrivePolicy Para obtener más información, consulta SetQueueAttributesAmazon SQS API Reference. Además, consulte Introducción a la redirección de la cola de mensajes fallidos de Amazon Simple Queue Service a las colas de origen
en el Blog de AWS . -
Asegúrese de que el código de función de Lambda tenga idempotencia
y sea capaz de manejar mensajes varias veces. Esto prepara el código de la función para admitir trabajos individuales dentro de un lote de SQS mensajes de Amazon. Un buen punto de partida es incorporarlo ReportBatchItemFailuresen la configuración del mapeo de fuentes de eventos. Para obtener más información, consulte Informes de errores de artículos en lotes en la Guía para desarrolladores de AWS Lambda . Consulte también ¿Cómo puedo evitar que un SQS mensaje de Amazon invoque mi función Lambda más de una vez? -
Considere la posibilidad de utilizar herramientas como aws-embedded-metrics
Powertools para AWS Lambda (Python). Estas herramientas lo ayudan a incorporar métricas empresariales en su código de funciones para hacer un seguimiento de los trabajos fallidos y de los detalles de esos trabajos. -
Si utilizas esta función con una cola de primeros en entrar, primeros en salir (FIFO), tu función debería dejar de procesar los mensajes tras el primer error y devolver todos los mensajes fallidos y sin procesar.
batchItemFailures
Esto ayuda a preservar el orden de los mensajes en la cola.
nota
El seguimiento del rendimiento a nivel de código es necesario para monitorear el rendimiento general de una aplicación que utiliza el procesamiento parcial por lotes. Una vez configurado el procesamiento parcial por lotes, las invocaciones a la función de Lambda casi siempre se realizan correctamente, sin importar el resultado del procesamiento por lotes.
Evitar los antipatrones acumulativos
Lambda y Amazon no SQS pueden controlar los mensajes que los microservicios ascendentes escriben en una cola de Amazon. SQS Si hay mensajes que no se pueden procesar, Lambda devuelve esos mensajes sin procesar a la cola de Amazon de origen, a menos que se configure una SQS cola de letras muertas independiente. A continuación, la función Lambda vuelve a intentar esos mensajes sin procesar en cada lote de SQS mensajes de Amazon siguiente, fallan y vuelven a la cola para volver a intentarlo. Si no existe ninguna cola de mensajes sin procesar, el número de mensajes sin procesar que se devuelven a la cola de Amazon eventualmente superará el número de mensajes válidos de la SQS cola.
Este tipo de antipatrón acumulativo (en el que cada invocación sucesiva de la función de Lambda empeora el problema) puede provocar lo siguiente:
-
Mala experiencia del usuario porque los trabajos tardan mucho más en procesarse de lo habitual o no se procesan en absoluto
-
Aumento del coste proporcional al aumento exponencial del número de mensajes en la SQS cola de Amazon y de los reintentos de mensajes
-
Reducción de la capacidad de computación de Lambda para la aplicación o para toda la Cuenta de AWS si la función no tiene un límite en sus solicitudes de invocación.
Para evitar crear un antipatrón en forma de bola de nieve al configurar respuestas por lotes parciales en AmazonSQS, se recomienda crear también una cola de 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 instrucciones, consulte Configuración de una cola de letra muerta (consola) en la Guía para desarrolladores de Amazon SQS.