Utilisation de l'objet de contexte Lambda pour récupérer les informations de la fonction Go - AWS Lambda

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Utilisation de l'objet de contexte Lambda pour récupérer les informations de la fonction Go

Lorsque Lambda exécute votre fonction, il transmet un objet contexte au gestionnaire. Cet objet fournit des méthodes et des propriétés avec des informations sur l'appel, la fonction et l'environnement d'exécution.

La bibliothèque de contexte Lambda fournit les variables globales, méthodes et propriétés suivantes.

Variables globales
  • FunctionName – Nom de la fonction Lambda.

  • FunctionVersionVersion de la fonction.

  • MemoryLimitInMB – Quantité de mémoire allouée à la fonction.

  • LogGroupName – Groupe de journaux pour la fonction.

  • LogStreamName – Flux de journal de l'instance de fonction.

Méthodes de contexte
  • Deadline – Retourne la date d'expiration de l'exécution, exprimée en millisecondes au format horaire Unix.

Propriétés du contexte
  • InvokedFunctionArn— Le nom de ressource Amazon (ARN) utilisé pour appeler la fonction. Indique si l'appelant a spécifié un numéro de version ou un alias.

  • AwsRequestID – Identifiant de la demande d'appel.

  • Identity – (applications mobiles) Informations sur l'identité Amazon Cognito qui a autorisé la demande.

  • ClientContext – (applications mobiles) Contexte client fourni à Lambda par l'application client.

Accès aux informations du contexte d'appel

Les fonctions Lambda ont accès aux métadonnées sur leur environnement et la demande d'appel. Elles sont accessibles à l'adresse du contexte du package. Si votre gestionnaire inclut context.Context en tant que paramètre, Lambda insère les informations sur votre fonction dans la propriété Value du contexte. Notez que vous devez importer la bibliothèque lambdacontext pour accéder au contenu de l'objet 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) }

Dans l'exemple ci-dessus, lc c'est la variable utilisée pour consommer les informations capturées par l'objet de contexte et log.Print(lc.Identity.CognitoIdentityPoolID) imprimer ces informations, dans ce cas, l' CognitoIdentityPoolID.

L'exemple suivant présente la façon d'utiliser l'objet contexte pour surveiller le temps nécessaire à l'exécution de votre fonction Lambda. Cela vous permet d'analyser les attentes de performance et d'ajuster le code de votre fonction en conséquence, si nécessaire.

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