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
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 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.
-
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à FunctionResponseTypeslista 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
-
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 no AWS Lambda Guia do desenvolvedor.
Powertools for AWS Lambda Batch Processing Utility
Idempotência
-
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 maxReceiveCountvalor na fila de origem. RedrivePolicy Para obter mais informações, consulte SetQueueAttributesa Amazon SQS API Reference. Além disso, consulte Introdução ao redirecionamento de filas sem saída do Amazon Simple Queue Service para
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 ReportBatchItemFailuresem seu mapeamento de origem de eventos. Para obter mais informações, consulte Implementação de respostas parciais em lote no Guia do AWS Lambda desenvolvedor e Como posso evitar que uma mensagem do Amazon SQS invoque minha função Lambda
mais de uma vez?
Ferramentas elétricas para utilidade de AWS Lambda idempotência
Métricas
-
Para incorporar métricas de negócios em sua função para rastrear detalhes do trabalho e trabalhos reprovados, considere usar aws-embedded-metricso Powertools for AWS Lambda Metrics Utility, que emite métricas operacionais e comerciais ao processar eventos SQS em formato métrico incorporado.
Powertools for AWS Lambda Metrics Utility
-
Se você usar uma fila First-In-First-Out (FIFO), 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
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. 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 Guide.