

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
Prácticas recomendadas para 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](https://docs.aws.amazon.com//AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-dead-letter-queues.html) 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](#snowball-anti-patterns).
+ 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 **ReportBatchItemFailures**a la **FunctionResponseTypes**lista 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

+ Implemente respuestas por lotes parciales en la función Lambda que invoca SQS. Considere la posibilidad de utilizar la utilidad Powertools for AWS Lambda Batch Processing. Esta utilidad gestiona el procesamiento de mensajes de SQS con soporte integrado de respuesta parcial por lotes. *Para obtener más información, consulte [Notificación de errores de artículos de lotes para funciones de Lambda con un activador de Amazon SQS](https://docs.aws.amazon.com//lambda/latest/dg/example_serverless_SQS_Lambda_batch_item_failures_section.html) en AWS Lambda la Guía para desarrolladores.*

**Herramientas eléctricas para la utilidad de procesamiento AWS Lambda por lotes**
+ [Utilidad Powertools para procesamiento AWS Lambda por lotes (Python)](https://docs.aws.amazon.com//powertools/python/latest/utilities/batch/)
+ [Utilidad Powertools para procesamiento AWS Lambda por lotes (Java)](https://docs.aws.amazon.com//powertools/java/latest/utilities/batch/)
+ [Herramientas eléctricas para la utilidad de procesamiento AWS Lambda por lotes (.Net)](https://docs.aws.amazon.com//powertools/dotnet/utilities/batch-processing/)
+ [Herramientas eléctricas para la utilidad de procesamiento AWS Lambda por lotes () TypeScript](https://docs.aws.amazon.com//powertools/typescript/latest/features/batch/)

## 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 **maxReceiveCount**valor en la cola de origen. **RedrivePolicy** Para obtener más información, consulte [SetQueueAttributes](https://docs.aws.amazon.com//AWSSimpleQueueService/latest/APIReference/API_SetQueueAttributes.html)la 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](https://aws.amazon.com//blogs/compute/introducing-amazon-simple-queue-service-dead-letter-queue-redrive-to-source-queues/) 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 **ReportBatchItemFailures**en su evento el mapeo de fuentes. Para obtener más información, consulte [Implementación de respuestas por lotes parciales](https://docs.aws.amazon.com//lambda/latest/dg/services-sqs-errorhandling.html#services-sqs-batchfailurereporting) 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](https://repost.aws/knowledge-center/lambda-function-process-sqs-messages) una vez?

**Utilidad Powertools for Idempotency AWS Lambda **
+ [Utilidad Powertools para AWS Lambda idempotencia (Python)](https://docs.aws.amazon.com//powertools/python/latest/utilities/idempotency/)
+ [Utilidad Powertools for AWS Lambda Idempotency (Java)](https://docs.aws.amazon.com//powertools/java/latest/utilities/idempotency/)
+ [Utilidad Powertools for AWS Lambda Idempotency (.Net)](https://docs.aws.amazon.com//powertools/dotnet/utilities/idempotency/)
+ [Utilidad Powertools for AWS Lambda Idempotency () TypeScript](https://docs.aws.amazon.com//powertools/typescript/latest/features/idempotency/)

## Métricas

+ [Si desea incorporar métricas empresariales en su función para realizar un seguimiento de los detalles de los trabajos y de los trabajos fallidos, considere la posibilidad de utilizar **aws-embedded-metrics**la utilidad Powertools for AWS Lambda Metrics, que emite métricas operativas y empresariales mientras procesa los eventos de SQS en un formato métrico integrado.](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch_Embedded_Metric_Format_Libraries.html)

**Utilidad Powertools for Metrics AWS Lambda **
+ [Utilidad Powertools for AWS Lambda Metrics (Python)](https://docs.aws.amazon.com/powertools/python/latest/core/metrics/)
+ [Utilidad Powertools for AWS Lambda Metrics (Java)](https://docs.aws.amazon.com/powertools/java/latest/core/metrics/)
+ [Powertools for AWS Lambda Metrics Utility (.Net)](https://docs.aws.amazon.com/powertools/dotnet/core/metrics/)
+ [Powertools for AWS Lambda Metrics Utility () TypeScript](https://docs.aws.amazon.com/powertools/typescript/latest/features/metrics/)
+  Si utiliza una cola [First-In-First-Out (FIFO)](https://docs.aws.amazon.com/powertools/typescript/latest/features/metrics/), 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.](https://docs.aws.amazon.com//AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-dead-letter-queues.html) 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](https://docs.aws.amazon.com//AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-configure-dead-letter-queue.html).*