Objeto de contexto do AWS Lambda em C# - AWS Lambda

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 C#

Quando o Lambda executa a função, ele transmite um objeto de contexto para o handler. Esse objeto fornece propriedades com informações sobre a invocação, a função e o ambiente de execução.

Propriedades de contexto
  • FunctionName: o nome da função do Lambda.

  • FunctionVersion: a versão da função.

  • 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.

  • MemoryLimitInMB: a quantidade de memória alocada para a função.

  • AwsRequestId: o identificador da solicitação de invocação.

  • LogGroupName: o grupo de logs da função.

  • LogStreamName: a transmissão de log para a instância da função.

  • RemainingTime (TimeSpan): o número de milissegundos restantes antes do tempo limite da execuçã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.

  • Logger O objeto logger para a função.

Você pode usar a informação no objeto do ILambdaContext para gerar informações sobre a invocação da função para fins de monitoramento. O código a seguir fornece um exemplo de como adicionar informações de contexto a uma estrutura de log estruturada. Neste exemplo, a função adiciona AwsRequestId às saídas do log. A função também usa a propriedade RemainingTime para cancelar uma tarefa em execução se o tempo limite da função do Lambda estiver prestes a ser atingido.

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