AWS LambdaErros da função do em Node.js - AWS Lambda

AWS LambdaErros da função do em Node.js

Quando o código gera um erro, o Lambda gera uma representação JSON do erro. Esse documento de erro aparece no log de invocação e, para invocações síncronas, na saída.

Esta página descreve como exibir erros de invocação de função do Lambda para o tempo de execução do Node.js usando o console do Lambda e a AWS CLI.

Syntax

exemplo Arquivo index.js: erro de referência

exports.handler = async function() { return x + 10 }

Esse código resulta em um erro de referência. O Lambda detecta o erro e gera um documento JSON com os campos para a mensagem de erro, o tipo e o rastreamento da pilha.

{ "errorType": "ReferenceError", "errorMessage": "x is not defined", "trace": [ "ReferenceError: x is not defined", " at Runtime.exports.handler (/var/task/index.js:2:3)", " at Runtime.handleOnce (/var/runtime/Runtime.js:63:25)", " at process._tickCallback (internal/process/next_tick.js:68:7)" ] }

Como funcionam

Ao invocar uma função do Lambda, o Lambda recebe a solicitação de invocação e valida as permissões de sua função de execução, verifica se o documento do evento é um documento JSON válido e verifica valores de parâmetros.

Se a solicitação for validada, o Lambda a envia para uma instância da função. O ambiente de tempo de execução do Lambda converte o documento do evento em um objeto e o transmite ao handler da função.

Se o Lambda encontra um erro, ele retorna um tipo de exceção, uma mensagem e o código HTTP do status que indica a causa do erro. O cliente ou o serviço que invocou a função do Lambda pode processar o erro de maneira programática ou transmiti-lo a um usuário final. O comportamento correto de tratamento de erros depende do tipo de aplicativo, do público e da origem do erro.

A lista a seguir descreve o intervalo de códigos de status que você pode receber do Lambda.

2xx

Um erro da série 2xx com um cabeçalho X-Amz-Function-Error na resposta indica um erro de tempo de execução ou de função do Lambda. Um código de status da série 2xx indica que o Lambda aceitou a solicitação, mas em vez de um código de erro, o Lambda indica o erro incluindo o cabeçalho X-Amz-Function-Error na resposta.

4xx

Um erro da série 4xx indica um erro que o cliente ou serviço que fez a invocação pode corrigir modificando a solicitação, solicitando permissão ou tentando a solicitação novamente. Os erros da série 4xx diferentes de 429 geralmente indicam um erro na solicitação.

5xx

Um erro da série 5xx indica um problema com o Lambda ou com a configuração/recursos da função. Os erros da série 5xx podem indicar uma condição temporária que pode ser resolvida sem nenhuma ação do usuário. O cliente ou serviço que fez a invocação não podem solucionar esses problemas, mas o proprietário de uma função do Lambda pode ser capaz de corrigi-los.

Para obter uma lista completa de erros de invocação, consulte Erros de InvokeFunction.

Usar o console do Lambda

Você pode invocar sua função no console do Lambda configurando um evento de teste e visualizando a saída. A saída é capturada pelos logs de execução da função e, quando o rastreamento ativo está habilitado, pelo AWS X-Ray.

Para invocar uma função no console do Lambda

  1. Abra a página Functions (Funções) no console do Lambda.

  2. Escolha a função a ser testada e escolhaTeste.

  3. UnderEvento de teste, selecioneNovo evento.

  4. Selecione um Template (Modelo).

  5. Em Name (Nome), insira um nome para o teste. Na caixa de entrada de texto, insira o evento de teste JSON.

  6. Selecione Save changes.

  7. Escolha Test (Testar).

O console do Lambda invoca sua função de forma síncrona e exibe o resultado. Para ver a resposta, os logs e outras informações, expanda a seção Details (Detalhes).

Usar a AWS Command Line Interface (AWS CLI)

O AWS CLI é uma ferramenta de código aberto que permite interagir com os serviços do AWS usando comandos no shell da linha de comando. Para executar as etapas desta seção, você deve ter o seguinte:

Quando você invoca uma função do Lambda na AWS CLI, a AWS CLI divide a resposta em dois documentos. A resposta da AWS CLI é exibida no prompt de comando. Se ocorreu um erro, a resposta contem um campo FunctionError. A resposta ou o erro de invocação retornado pela função é gravado no arquivo de saída. Por exemplo, o output.json ou o output.txt.

O exemplo de comando invoke a seguir demonstra como invocar uma função e escrever a resposta de invocação em um arquivo output.txt.

aws lambda invoke \ --function-name my-function \ --cli-binary-format raw-in-base64-out \ --payload '{"key1": "value1", "key2": "value2", "key3": "value3"}' output.txt

O comando cli-binary-format é necessário se você estiver usando a AWS CLI versão 2. Também é possível configurar essa opção no arquivo de configuração da AWS CLI.

Você deve ver a resposta da AWS CLI em seu prompt de comando:

{ "StatusCode": 200, "FunctionError": "Unhandled", "ExecutedVersion": "$LATEST" }

Você deve ver a resposta de invocação de função no arquivo output.txt. Também é possível visualizar a saída no mesmo prompt de comando usando:

cat output.txt

Você deve ver a resposta de invocação no prompt de comando.

{"errorType":"ReferenceError","errorMessage":"x is not defined","trace":["ReferenceError: x is not defined"," at Runtime.exports.handler (/var/task/index.js:2:3)"," at Runtime.handleOnce (/var/runtime/Runtime.js:63:25)"," at process._tickCallback (internal/process/next_tick.js:68:7)"]}

O Lambda também grava até 256 KB do objeto de erro nos logs de função. Para obter mais informações, consulte . AWS LambdaRegistro em log da função do em Node.js.

Tratamento de erros em outros serviços da AWS

Quando outro serviço da AWS invoca sua função, o serviço escolhe o tipo de invocação e o comportamento de repetição. Os serviços da AWS podem invocar sua função em um agendamento, em resposta a um evento de ciclo de vida em um recurso ou para atender a uma solicitação de um usuário. Alguns serviços invocam funções de forma assíncrona e permitem que o Lambda trate erros, enquanto outros fazem novas tentativas ou transmitem os erros de volta ao usuário.

Por exemplo, o API Gateway trata todos os erros de invocação e função como erros internos. Se a API do Lambda rejeitar a solicitação de invocação, o API Gateway retornará um código de erro 500. Se a função é executada, mas retorna um erro ou retorna uma resposta no formato errado, o API Gateway retorna um código de erro 502. Para personalizar a resposta de erro, é necessário detectar erros no código e formatar uma resposta no formato necessário.

Recomendamos usar AWS X-Ray para determinar a fonte de um erro e a respectiva causa. O X-Ray permite localizar qual componente encontrou um erro e ver detalhes sobre os erros. O exemplo a seguir mostra um erro de função que resultou em uma resposta 502 do API Gateway.


          Mapa de rastreamento para um erro de função com o API Gateway.

Para obter mais informações, consulte . Instrumentação do código Node.js no AWS Lambda.

Próximas etapas