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 C#
Lorsque Lambda exécute votre fonction, il transmet un objet de contexte au gestionnaire. Cet objet fournit les propriétés avec des informations sur l'appel, la fonction et l'environnement d'exécution.
Propriétés du contexte
-
FunctionName
– Nom de la fonction Lambda. -
FunctionVersion
– Version de la fonction. -
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. -
MemoryLimitInMB
– Quantité de mémoire allouée à la fonction. -
AwsRequestId
– Identifiant de la demande d'invocation. -
LogGroupName
– Groupe de journaux pour la fonction. -
LogStreamName
– Flux de journal de l'instance de fonction. -
RemainingTime
(TimeSpan
) – Nombre de millisecondes restant avant l'expiration de l'exécution. -
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. -
Logger
L'objet enregistreur d'événements pour la fonction.
Vous pouvez utiliser les informations contenues dans l'objet ILambdaContext
pour générer des informations sur l'invocation de votre fonction à des fins de contrôle. Le code suivant montre comment ajouter des informations contextuelles à un cadre de journalisation structuré. Dans cet exemple, la fonction ajoute AwsRequestId
aux sorties du journal. La fonction utilise également la propriété RemainingTime
pour annuler une tâche en vol si le délai d'attente de la fonction Lambda est sur le point d'être atteint.
[assembly: LambdaSerializer(typeof(Amazon.Lambda.Serialization.SystemTextJson.DefaultLambdaJsonSerializer))] namespace GetProductHandler; public class Function { private readonly IDatabaseRepository _repo; public Function() { this._repo = new DatabaseRepository(); } public async Task<APIGatewayProxyResponse> FunctionHandler(APIGatewayProxyRequest request, ILambdaContext context) { Logger.AppendKey("AwsRequestId", context.AwsRequestId); var id = request.PathParameters["id"]; using var cts = new CancellationTokenSource(); try { cts.CancelAfter(context.RemainingTime.Add(TimeSpan.FromSeconds(-1))); var databaseRecord = await this._repo.GetById(id, cts.Token); return new APIGatewayProxyResponse { StatusCode = (int)HttpStatusCode.OK, Body = JsonSerializer.Serialize(databaseRecord) }; } finally { cts.Cancel(); return new APIGatewayProxyResponse { StatusCode = (int)HttpStatusCode.InternalServerError, Body = JsonSerializer.Serialize(databaseRecord) }; } } }