AWS Lambda
Guia do desenvolvedor

Objeto de contexto do AWS Lambda no Go

Quando o Lambda executa sua função, ele transmite um objeto de contexto para o handler. Esse objeto fornece métodos e propriedades com informações sobre a invocação, a função e o ambiente de execução.

A biblioteca de contexto do Lambda fornece as seguintes variáveis globais, métodos e propriedades.

Variáveis globais

  • FunctionName – O nome da função do Lambda.

  • FunctionVersion – A versão da função.

  • MemoryLimitInMB – A quantidade de memória que é alocada para a função.

  • LogGroupName – O grupo de logs para a função.

  • LogStreamName – O fluxo de log para a instância da função.

Métodos de contexto

  • Deadline – Retorna a data em que a execução expira, em milissegundos no tempo do Unix.

Propriedades de contexto

  • InvokedFunctionArn – O nome de recurso da Amazon (ARN) usado para invocar a função. Indica se o invocador especificou um alias ou número de versão.

  • AwsRequestID – O identificador da solicitação de invocação.

  • Identity – (aplicativos móveis) Informações sobre a identidade do Amazon Cognito que autorizou a solicitação.

  • ClientContext – (aplicativos móveis) Contexto do cliente fornecido ao Lambda pelo aplicativo cliente.

Acessar informações do contexto de invocação

As funções do Lambda têm acesso aos metadados sobre seu ambiente e a solicitação da invocação. Isso pode ser acessado no Contexto do pacote. Se o manipulador incluir context.Context como um parâmetro, o Lambda inserirá informações sobre sua função na propriedade Value do contexto. Observe que você precisa importar a biblioteca lambdacontext para acessar o conteúdo do objeto context.Context.

package main import ( "context" "log" "github.com/aws/aws-lambda-go/lambda" "github.com/aws/aws-lambda-go/lambdacontext" ) func CognitoHandler(ctx context.Context) { lc, _ := lambdacontext.FromContext(ctx) log.Print(lc.Identity.CognitoIdentityPoolID) } func main() { lambda.Start(CognitoHandler) }

No exemplo acima, lc é a variável usada para consumir as informações que o objeto de contexto capturou, e log.Print(lc.Identity.CognitoIdentityPoolID) imprime essas informações, neste caso, o CognitoIdentityPoolID.

Monitorar o tempo de execução de uma função

O exemplo a seguir mostra como usar o objeto de contexto para monitorar o tempo necessário para executar a função do Lambda. Isso permite que você analise as expectativas de desempenho e ajuste seu código de função de maneira correspondente, se necessário.

package main import ( "context" "log" "time" "github.com/aws/aws-lambda-go/lambda" ) func LongRunningHandler(ctx context.Context) (string, error) { deadline, _ := ctx.Deadline() deadline = deadline.Add(-100 * time.Millisecond) timeoutChannel := time.After(time.Until(deadline)) for { select { case <- timeoutChannel: return "Finished before timing out.", nil default: log.Print("hello!") time.Sleep(50 * time.Millisecond) } } } func main() { lambda.Start(LongRunningHandler) }