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
Dans Lambda, l’objet de contexte fournit aux méthodes et aux propriétés des informations sur l’invocation, la fonction et l’environnement d’exécution. Lorsque Lambda exécute votre fonction, il transmet un objet contexte au gestionnaire. Pour utiliser l’objet de contexte dans votre gestionnaire, vous pouvez éventuellement le déclarer comme paramètre d’entrée dans votre gestionnaire. L’objet de contexte est nécessaire si vous souhaitez effectuer les opérations suivantes dans votre gestionnaire :
-
Vous devez accéder à toutes les variables, méthodes ou propriétés globales proposées par l’objet de contexte. Ces méthodes et propriétés sont utiles pour des tâches telles que la détermination de l’entité qui a appelé votre fonction ou la mesure du temps d’invocation de votre fonction, comme illustré dans Accès aux informations du contexte d'appel.
-
Vous devez utiliser l’AWS SDK for Go pour effectuer des appels à d’autres services. L’objet de contexte est un paramètre d’entrée important pour la plupart de ces appels. Pour en savoir plus, consultez Utilisation du contexte dans les initialisations et les appels du client du kit SDK AWS.
Rubriques
Variables, méthodes et propriétés prises en charge par l’objet de contexte
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. -
FunctionVersion
– Version 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
– Amazon Resource Name (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 packagecontext.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
est la variable utilisée pour consommer les informations que l'objet de contexte a capturées et log.Print(lc.Identity.CognitoIdentityPoolID)
affiche ces informations, dans ce cas, le CognitoPoolID.
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) }
Utilisation du contexte dans les initialisations et les appels du client du kit SDK AWS
Si votre gestionnaire doit utiliser l’AWS SDK for Go pour appeler d’autres services, incluez l’objet de contexte en tant qu’entrée dans votre gestionnaire. Dans AWS, il est recommandé de transmettre l’objet de contexte dans la plupart des appels au kit SDK AWS. Par exemple, l’appel Amazon S3 PutObject
accepte l’objet de contexte (ctx
) comme premier argument :
// Upload an object to S3 _, err = s3Client.PutObject(ctx, &s3.PutObjectInput{ ... })
Pour initialiser correctement vos clients SDK, vous pouvez également utiliser l’objet de contexte pour charger la configuration correcte avant de transmettre cet objet de configuration au client :
// Load AWS SDK configuration using the default credential provider chain cfg, err := config.LoadDefaultConfig(ctx) ... s3Client = s3.NewFromConfig(cfg)
Si vous souhaitez initialiser vos clients SDK en dehors de votre gestionnaire principal (c’est-à-dire pendant la phase d’initialisation), vous pouvez transmettre un objet de contexte de remplacement :
func init() { // Initialize the S3 client outside of the handler, during the init phase cfg, err := config.LoadDefaultConfig(context.TODO()) ... s3Client = s3.NewFromConfig(cfg) }
Si vous initialisez vos clients de cette façon, assurez-vous de transmettre le bon objet de contexte dans les appels du SDK depuis votre gestionnaire principal.