Utilizzo dell'oggetto contesto Lambda per recuperare informazioni sulla funzione C# - AWS Lambda

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Utilizzo dell'oggetto contesto Lambda per recuperare informazioni sulla funzione C#

Quando Lambda esegue la funzione, passa un oggetto Context al gestore. Questo oggetto fornisce proprietà con informazioni sulla chiamata, sulla funzione e sull'ambiente di esecuzione.

Proprietà del contesto
  • FunctionName: il nome della funzione Lambda.

  • FunctionVersion: la versione della funzione.

  • InvokedFunctionArn— L'Amazon Resource Name (ARN) utilizzato per richiamare la funzione. Indica se l'invoker ha specificato un numero di versione o un alias.

  • MemoryLimitInMB: la quantità di memoria allocata per la funzione.

  • AwsRequestId: l'identificatore della richiesta di invocazione.

  • LogGroupName: il gruppo di log per la funzione.

  • LogStreamName: il flusso di log per l'istanza della funzione.

  • RemainingTime (TimeSpan): il numero di millisecondi rimasti prima del timeout dell'esecuzione.

  • Identity: (app per dispositivi mobili) Informazioni relative all'identità Amazon Cognito che ha autorizzato la richiesta.

  • ClientContext: (app per dispositivi mobili) Contesto client fornito a Lambda dall'applicazione client.

  • Logger L'oggetto logger per la funzione.

Puoi utilizzare le informazioni riportate nell'oggetto ILambdaContext per generare informazioni sull'invocazione della funzione a scopo di monitoraggio. Il seguente codice fornisce un esempio di come aggiungere informazioni di contesto a un framework di registrazione strutturato. In questo esempio, la funzione aggiunge AwsRequestId agli output di log. La funzione utilizza anche la proprietà RemainingTime per annullare un'attività in transito se il timeout della funzione Lambda sta per essere raggiunto.

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