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á.
Objeto de contexto do AWS Lambda em Go
Quando o Lambda executa a função, ele transmite um objeto de contexto para o manipulador. 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 alocada para a função. -
LogGroupName
: o grupo de logs da função. -
LogStreamName
: a transmissão de log para a instância da função.
Métodos de contexto
-
Deadline
— Retorna a data em que a execução expira o tempo em milissegundos do Unix.
Propriedades de contexto
-
InvokedFunctionArn
: o nome do 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 pela aplicação 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 pacotecontext.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)
imprimir essas informações, nesse caso, o CognitoIdentityPool ID.
O exemplo a seguir mostra como usar o objeto de contexto para monitorar o tempo necessário para concluir a função do Lambda. Isso permite que você analise as expectativas de performance 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) }