AWS Lambda
Guia do desenvolvedor

Erros da função do AWS Lambda no Go

Você pode criar um tratamento de erros personalizado para gerar uma exceção diretamente de sua função do Lambda e tratá-lo diretamente.

O exemplo de código a seguir demonstra como fazer isso. 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" }

Tratamento de erros de funções

Você pode criar um tratamento de erros personalizado para gerar uma exceção diretamente de sua função do Lambda e lidar com ela diretamente (tentar novamente ou capturar) em uma máquina de estado do AWS Step Functions. Para obter mais informações, consulte Tratamento de condições de erro usando uma máquina de estado.

Considere o estado CreateAccount como uma tarefa que grava os detalhes de um cliente no banco de dados usando uma função do Lambda.

  • Se a tarefa for bem-sucedida, uma conta será criada e um e-mail de boas-vindas será enviado.

  • Se um usuário tenta criar uma conta com um nome de usuário que já existe, a função do Lambda gera um erro, fazendo com que a máquina de estado sugira um nome de usuário diferente e tente novamente o processo de criação da conta.

O exemplo de código a seguir demonstra como fazer isso.

package main type CustomError struct {} func (e *CustomError) Error() string { return "bad stuff happened..." } func MyHandler() (string, error) { return "", &CustomError{} }

Durante o tempo de execução, o AWS Step Functions captura o erro, mudando para o estado SuggestAccountName como especifica a transição Next.

O tratamento de erros personalizado facilita a criação de aplicativos sem servidor. Esse recurso é integrado a todas as linguagens compatíveis com o modelo de programação do Lambda, permitindo que você crie seus aplicativos nas linguagens de programação da sua escolha, misturando e combinando ao longo do processo.

Para saber mais sobre a criação de seus próprios aplicativos sem servidor usando o AWS Step Functions e o AWS Lambda, consulte AWS Step Functions.

Tratar erros inesperados

As funções do Lambda podem apresentar falha por motivos além de seu controle, como interrupções na rede. Essas são circunstâncias excepcionais. No Go, o panic aborda esses problemas. Se seu código entrar em pânico, o Lambda tentará capturar o erro e serializá-lo no formato de erro padrão do json. O Lambda também tentará inserir o valor do pânico nos logs do CloudWatch da função. Depois de retornar a resposta, o Lambda recriará a função automaticamente. Se for necessário, você pode incluir a função panic em seu código para personalizar a resposta do erro.

package main import ( "errors" "github.com/aws/aws-lambda-go/lambda" ) func handler(string) (string, error) { panic(errors.New("Something went wrong")) } func main() { lambda.Start(handler) }

O que retornará a seguinte pilha em json:

{ "errorMessage": "Something went wrong", "errorType": "errorString", "stackTrace": [ { "path": "github.com/aws/aws-lambda-go/lambda/function.go", "line": 27, "label": "(*Function).Invoke.function" }, ... ] }