

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Práticas recomendadas para implementar respostas de lotes parciais
<a name="best-practices-partial-batch-responses"></a>

Esta seção fornece as melhores práticas para configurar respostas parciais em lote para fontes de eventos do Amazon SQS.
+ Configure uma [fila de mensagens não entregues](https://docs.aws.amazon.com//AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-dead-letter-queues.html) para evitar a criação de um antipadrão tipo bola de neve na arquitetura da aplicação com tecnologia sem servidor. Para obter mais informações, consulte a seção [Evitar antipadrões de bolas de neve](#snowball-anti-patterns).
+ Configure o mapeamento da fonte de eventos da função Lambda para tornar visíveis somente as mensagens com falha. Para fazer isso, adicione **ReportBatchItemFailures**à **FunctionResponseTypes**lista ao configurar o mapeamento da fonte de eventos. Sua função Lambda, quando invocada pelo SQS, deve implementar respostas parciais em lote. Considere usar o utilitário Powertools for AWS Lambda Batch Processing, que processa mensagens SQS com suporte integrado a lotes parciais.

## Processamento em lotes
<a name="batch-processing"></a>
+ Implemente respostas parciais em lote na sua função Lambda que está sendo invocada pelo SQS. Considere usar o utilitário Powertools for AWS Lambda Batch Processing. Esse utilitário manipula o processamento de mensagens do SQS com suporte integrado de resposta parcial em lote. *Para obter mais informações, consulte [Relatar falhas de itens em lote para funções Lambda com um gatilho do Amazon SQS](https://docs.aws.amazon.com//lambda/latest/dg/example_serverless_SQS_Lambda_batch_item_failures_section.html) no AWS Lambda Guia do desenvolvedor.*

**Powertools for AWS Lambda Batch Processing Utility**
+ [Powertools for AWS Lambda Batch Processing Utility (Python)](https://docs.aws.amazon.com//powertools/python/latest/utilities/batch/)
+ [Powertools for AWS Lambda Batch Processing Utility (Java)](https://docs.aws.amazon.com//powertools/java/latest/utilities/batch/)
+ [Powertools for AWS Lambda Batch Processing Utility (.Net)](https://docs.aws.amazon.com//powertools/dotnet/utilities/batch-processing/)
+ [Powertools for AWS Lambda Batch Processing Utility () TypeScript](https://docs.aws.amazon.com//powertools/typescript/latest/features/batch/)

## Idempotência
<a name="idempotency"></a>
+ O número de vezes que uma mensagem é entregue à fila de origem antes de ser movida para a fila de mensagens não entregues. Certifique-se de que o valor definido seja adequado ao caso de uso do seu aplicativo, identificando as causas mais prováveis de falha e seus tempos de recuperação estimados. Para definir o número de novas tentativas, configure o **maxReceiveCount**valor na fila de origem. **RedrivePolicy** Para obter mais informações, consulte [SetQueueAttributes](https://docs.aws.amazon.com//AWSSimpleQueueService/latest/APIReference/API_SetQueueAttributes.html)a *Amazon SQS API* Reference. Além disso, consulte [Introdução ao redirecionamento de filas sem saída do Amazon Simple Queue Service para](https://aws.amazon.com//blogs/compute/introducing-amazon-simple-queue-service-dead-letter-queue-redrive-to-source-queues/) filas de origem.
+ Certifique-se de que seu código Lambda seja idempotente e possa lidar com mensagens várias vezes. Para implementar a idempotência, considere usar o Powertools for AWS Lambda Idempotency Utility, que prepara o código de uma função para suportar trabalhos individuais dentro de um lote do Amazon SQS. Comece incorporando **ReportBatchItemFailures**em seu mapeamento de origem de eventos. Para obter mais informações, consulte [Implementação de respostas parciais em lote](https://docs.aws.amazon.com//lambda/latest/dg/services-sqs-errorhandling.html#services-sqs-batchfailurereporting) no *Guia do AWS Lambda desenvolvedor* e [Como posso evitar que uma mensagem do Amazon SQS invoque minha função Lambda](https://repost.aws/knowledge-center/lambda-function-process-sqs-messages) mais de uma vez?

**Ferramentas elétricas para utilidade de AWS Lambda idempotência**
+ [Powertools for AWS Lambda Idempotency Utility (Python)](https://docs.aws.amazon.com//powertools/python/latest/utilities/idempotency/)
+ [Powertools for AWS Lambda Idempotency Utility (Java)](https://docs.aws.amazon.com//powertools/java/latest/utilities/idempotency/)
+ [Powertools for AWS Lambda Idempotency Utility (.Net)](https://docs.aws.amazon.com//powertools/dotnet/utilities/idempotency/)
+ [Ferramentas elétricas para utilidade de AWS Lambda idempotência () TypeScript](https://docs.aws.amazon.com//powertools/typescript/latest/features/idempotency/)

## Metrics
<a name="metrics"></a>
+ Para incorporar métricas de negócios em sua função para rastrear detalhes do trabalho e trabalhos reprovados, considere usar **aws-embedded-metrics**o Powertools for AWS Lambda Metrics Utility, que emite métricas operacionais e comerciais ao processar eventos SQS em formato métrico [incorporado](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch_Embedded_Metric_Format_Libraries.html).

**Powertools for AWS Lambda Metrics Utility**
+ [Powertools for AWS Lambda Metrics Utility (Python)](https://docs.aws.amazon.com/powertools/python/latest/core/metrics/)
+ [Powertools for AWS Lambda Metrics Utility (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/)
+  Se você usar uma fila [First-In-First-Out (FIFO)](https://docs.aws.amazon.com/powertools/typescript/latest/features/metrics/), sua função deverá parar de processar mensagens após a primeira falha e retornar todas as mensagens com falha e não processadas. **batchItemFailures** Isso ajuda a preservar a ordem das mensagens da sua fila.

**nota**  
Para monitorar o desempenho geral de um aplicativo que usa processamento em lote parcial, é necessário o rastreamento de desempenho em nível de código. Depois que o processamento em lote é configurado, as invocações da função Lambda geralmente são bem-sucedidas, independentemente do resultado do processamento.

## Evitar antipadrões de bolas de neve
<a name="snowball-anti-patterns"></a>

O Lambda e o Amazon SQS não podem controlar as mensagens que os microsserviços upstream gravam em uma fila do SQS. [Se houver mensagens que não possam ser processadas, o Lambda retornará essas mensagens não processadas para a fila SQS de origem, a menos que uma fila de mensagens mortas separada seja configurada.](https://docs.aws.amazon.com//AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-dead-letter-queues.html) As mensagens não processadas são então repetidas pela função Lambda. Se não houver fila de mensagens mortas, o número de mensagens não processadas retornadas à fila do Amazon SQS eventualmente supera as mensagens válidas da fila.

Esse tipo de antipadrão de *bola de neve*, em que cada invocação sucessiva do Lambda piora o problema, pode causar os seguintes problemas:
+ **Experiência ruim do usuário** porque os trabalhos demoram mais do que o normal para serem processados ou não são processados
+ **Custo mais elevado** proporcional ao número exponencialmente crescente de mensagens na fila e novas tentativas de mensagens do Amazon SQS
+ **Capacidade de computação Lambda reduzida para o aplicativo ou Conta da AWS** se a função não tiver um limite em suas solicitações de invocação

Para evitar a criação de um antipadrão de bola de neve ao configurar respostas parciais em lote, é melhor também criar uma fila de mensagens mortas. Essa fila separada pode armazenar mensagens que não foram processadas com êxito e ajudar você a gerenciar melhor o ciclo de vida das mensagens não processadas da sua aplicação.

*Para obter mais informações, consulte [Configurar uma fila de mensagens sem saída usando o console do Amazon SQS no Amazon SQS Developer](https://docs.aws.amazon.com//AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-configure-dead-letter-queue.html) Guide.*