Lidar com erros e novas tentativas automáticas no AWS Lambda - AWS Lambda

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á.

Lidar com erros e novas tentativas automáticas no AWS Lambda

Dois tipos de erro podem ocorrer quando você invoca uma função. Os erros de invocação ocorrem quando a solicitação de invocação for rejeitada antes da função recebê-la. Erros de função ocorrem quando o código ou o tempo de execução de sua função retornarem um erro. O comportamento de novas tentativas e a estratégia de gerenciamento de erros varia de acordo com o tipo de erro, o tipo de chamada e o cliente ou serviço que chama a função.

Problemas com a solicitação, o chamador e a conta podem causar erros de invocação. Os erros de invocação incluem um tipo de erro e um código de status na resposta que indicam a causa do erro.

Erros de invocação comuns
  • Request (Solicitação): o evento de solicitação é muito grande ou não é um JSON válido, a função não existe ou um valor de parâmetro é do tipo errado.

  • Caller (Chamador): o usuário ou o serviço não tem permissão para invocar a função.

  • Account (Conta): o número máximo de instâncias de função já está em execução, ou as solicitações estão sendo feitas muito rápido.

Clientes como a AWS CLI e o AWS SDK fazem novas tentativas em casos de tempo limite atingido, erros de controle de utilização (429) e outros erros não ocasionados por solicitações inválidas. Para obter uma lista completa de erros de invocação, consulte Invoke.

Erros de função ocorrem quando seu código de função ou o tempo de execução que ele usa retornarem um erro.

Erros de função comuns
  • Function (Função): o código de sua função abre uma exceção ou retorna um erro.

  • Runtime (Tempo de execução): o tempo de execução encerrou sua função porque detectou um erro de sintaxe, falhou em ordenar o objeto de resposta no JSON ou o limite de tempo foi atingido. A função foi encerrada com um código de erro.

Ao contrário dos erros de chamada, erros de função não fazem o Lambda retornar erros de status das séries 400 ou 500. Se a função retorna um erro, o Lambda indica isso ao incluir um cabeçalho chamado X-Amz-Function-Error e uma resposta em JSON com a mensagem de erro e outros detalhes. Para ver exemplos de erros de função em cada linguagem, consulte os tópicos a seguir.

Ao invocar um função diretamente, você determinará a estratégia para manipular erros relacionados ao código da função. O Lambda não repete automaticamente esses tipos de erros por você. Para tentar novamente, você pode invocar a função manualmente mais uma vez, enviar o evento com falha para uma fila de depuração ou ignorá-lo. O código de sua função pode ter sido executado completa ou parcialmente, ou nem ter sido executado. Se você tentar novamente, certifique-se de que o código de sua função pode lidar com o mesmo evento várias vezes sem duplicar transações nem ter efeitos colaterais indesejados.

Ao invocar um função indiretamente, você deve estar ciente do comportamento de novas tentativas do invocador e dos serviços que podem interagir com a solicitação no processo. Isso inclui as seguintes situações.

  • Asynchronous Invocation (Chamada assíncrona): o Lambda faz duas novas tentativas de erros de função. Se a função não tiver capacidade suficiente para lidar com todas as solicitações em andamento, os eventos poderão ter de aguardar na fila por horas ou dias até serem enviados para a função. Você pode configurar uma fila de mensagens mortas na função para registrar eventos que não foram processadas com êxito. Para ter mais informações, consulte Invocação assíncrona.

  • Event source mappings (Mapeamento da fonte do evento): mapeamentos da fonte do evento que leem das transmissões repetem todo o lote de itens. Os erros repetidos bloqueiam o processamento do estilhaço afetado até o erro ser resolvido ou os itens expirarem. Para detectar estilhaços interrompidos, é possível monitorar a métrica Iterator Age (Idade do iterador).

    Para mapeamentos da fonte do evento que leem de uma fila, você mesmo determina o intervalo de tempo entre repetições e o destino de eventos falhos. Para fazer isso, configure o tempo limite de visibilidade e a política de redirecionamento na fila de origem. Para obter mais informações, consulte Mapeamentos de fonte de eventos do Lambda e os tópicos específicos do serviço em Usar o AWS Lambda com outros serviços.

  • Serviços da AWS: os serviços da AWS podem chamar uma função de maneira síncrona ou assíncrona. Para chamada síncrona, o serviço decide se deve tentar novamente. Por exemplo, as operações em lote do Amazon S3 tentam novamente a operação se a função Lambda retornar um código de resposta TemporaryFailure. Os serviços que usam proxy em solicitações de um usuário ou cliente de upstream podem ter uma estratégia de repetição ou retransmitir a resposta de erro de volta para o solicitante. Por exemplo, o API Gateway sempre retransmite a resposta de erro de volta para o solicitante.

    Para invocação assíncrona, o comportamento é o mesmo de quando você invoca a função de maneira síncrona. Para obter mais informações, consulte os tópicos específicos do serviço em Usar o AWS Lambda com outros serviços e a documentação do serviço de invocação.

  • Other Accounts and Clients (Outras contas e clientes): ao conceder acesso a outras contas, você pode usar as políticas baseadas em recursos para restringir os serviços ou recursos que eles podem configurar para chamar sua função. Para evitar que a função fique sobrecarregada, considere colocar uma camada de API na frente da função com o Amazon API Gateway.

Para ajudá-lo a lidar com erros em aplicativos Lambda, o Lambda se integra a serviços como Amazon e. CloudWatch AWS X-Ray Você pode usar um conjunto de logs, métricas, alarmes e rastreamento do para detectar e identificar rapidamente os problemas no código da função, na API ou em outros recursos compatíveis com sua aplicação. Para ter mais informações, consulte Monitoramento e solução de problemas de funções do Lambda.

Para ver um aplicativo de amostra que usa uma assinatura de CloudWatch Logs, rastreamento de X-Ray e uma função Lambda para detectar e processar erros, consulte. Aplicativo de exemplo de processador de erros para o AWS Lambda