Erros da função do AWS Lambda em Go - 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á.

Erros da função do AWS Lambda em Go

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 runtime do Go usando o console do Lambda e a AWS CLI.

Criar uma função que retorna exceções

O exemplo de código a seguir demonstra o tratamento de erros personalizado que gera uma exceção diretamente de uma função do Lambda e a manipula de maneira direta. Observe que os erros personalizados no Go devem importar o módulo errors.

package main import ( "errors" "github.com/aws/aws-lambda-go/lambda" ) func OnlyErrors() error { return errors.New("something went wrong!") } func main() { lambda.Start(OnlyErrors) }

O que retorna o seguinte:

{ "errorMessage": "something went wrong!", "errorType": "errorString" }

Como funciona

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 runtime 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 runtime 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 dos erros de invocação, consulte InvokeFunction erros.

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 Funções do 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. Escolha Salvar alterações.

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

A opção cli-binary-format será necessária se você estiver usando a AWS CLI versão 2. Para que essa seja a configuração padrão, execute aws configure set cli-binary-format raw-in-base64-out. Para obter mais informações, consulte A AWS CLI comporta opções de linha de comando globais no Guia do usuário da AWS Command Line Interface versão 2.

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.

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 ter mais informações, consulte Instrumentação do código Go no AWS Lambda.

Próximas etapas