AWS Lambda
Guia do desenvolvedor

Erros da função do AWS Lambda no Node.js

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

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)" ] }

Quando você invoca a função a partir da linha de comando, a AWS CLI divide a resposta em dois documentos. Para indicar que ocorreu um erro de função, a resposta exibida no terminal inclui um campo FunctionError. A resposta ou o erro retornado pela função é gravado no arquivo de saída.

$ aws lambda invoke --function-name my-function out { "StatusCode": 200, "FunctionError": "Unhandled", "ExecutedVersion": "$LATEST" }

Visualize o arquivo de saída para ver o documento de erro.

$ cat out {"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)"]}

nota

O código de status 200 (sucesso) na resposta do Lambda indica que não houve um erro na solicitação enviada para o Lambda. Para problemas que resultam em um código de status de erro, consulte Errors.

O Lambda também grava até 256 KB do objeto de erro nos logs de função. Para visualizar logs quando você invoca a função na linha de comando, use a opção --log-type e decodifique a string base64 na resposta.

$ aws lambda invoke --function-name my-function out --log-type Tail \ --query 'LogResult' --output text | base64 -d START RequestId: 8bbbfb91-a3ff-4502-b1b7-cb8f6658de64 Version: $LATEST 2019-06-05T22:11:27.082Z 8bbbfb91-a3ff-4502-b1b7-cb8f6658de64 ERROR Invoke Error {"errorType":"ReferenceError","errorMessage":"x is not defined","stack":["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)"]} END RequestId: 8bbbfb91-a3ff-4502-b1b7-cb8f6658de64 REPORT RequestId: 8bbbfb91-a3ff-4502-b1b7-cb8f6658de64 Duration: 76.85 ms Billed Duration: 100 ms Memory Size: 128 MB Max Memory Used: 74 MB

Para obter mais informações sobre logs, consulte Registro em log da função do AWS Lambda no Node.js.

Dependendo da origem do evento, o AWS Lambda pode executar novamente a função Lambda que falhou. Por exemplo, se o Kinesis for a origem do evento, o AWS Lambda tentará executar novamente a invocação da função do Lambda com falha até que ela seja bem-sucedida ou que os registros do fluxo expirem. Para mais informações sobre novas tentativas, consulte Lidar com erros e novas tentativas automáticas no AWS Lambda.