AWS Lambda
Guia do desenvolvedor

Registro em log da função do AWS Lambda no C#

Sua função do Lambda vem com um grupo de logs do CloudWatch Logs, com um fluxo de logs para cada instância de sua função. O tempo de execução envia detalhes sobre cada invocação para o fluxo de logs e retransmite os logs e outras saídas do código da função.

Para gerar os logs do código de função, você pode usar métodos na classe Console ou qualquer biblioteca de logs que grave no stdout ou no stderr. Os exemplos a seguir registram o ID de uma invocação.

public class ProductService { public async Task<Product> DescribeProduct(DescribeProductRequest request) { Console.WriteLine("DescribeProduct invoked with Id " + request.Id); return await catalogService.DescribeProduct(request.Id); } }

O Lambda também fornece uma classe do registrador na biblioteca do Amazon.Lambda.Core . Use o método Log na classe Amazon.Lambda.Core.LambdaLogger para gravas os logs.

using Amazon.Lambda.Core; public class ProductService { public async Task<Product> DescribeProduct(DescribeProductRequest request) { LambdaLogger.Log("DescribeProduct invoked with Id " + request.Id); return await catalogService.DescribeProduct(request.Id); } }

Uma instância dessa classe também está disponível no objeto de contexto.

public class ProductService { public async Task<Product> DescribeProduct(DescribeProductRequest request, ILambdaContext context) { context.Logger.Log("DescribeProduct invoked with Id " + request.Id); return await catalogService.DescribeProduct(request.Id); } }

O console do Lambda mostra a saída de log quando você testa uma função na página de configuração da função. Para visualizar log para todas as invocações, use o console do CloudWatch Logs.

Para visualizar os logs da função doLambda

  1. Abra a página Logs do console do CloudWatch.

  2. Escolha o nome do grupo de logs para a sua função (/aws/lambda/function-name).

  3. Escolha o primeiro fluxo da lista.

Cada fluxo de log corresponde a uma instância da sua função. Novos fluxos aparecem quando você atualiza a função e quando instâncias adicionais são criadas para processar várias invocações simultâneas. Para encontrar logs para invocações específicas, você pode instrumentar a função com o X-Ray e registrar detalhes sobre a solicitação e o fluxo de log no rastreamento. Para obter um exemplo de aplicativo que correlaciona logs e rastreamentos com o X-Ray, consulte Aplicativo de amostra de processador de erros para o AWS Lambda.

Para obter logs para uma invocação a partir da linha de comando, use a opção --log-type. A resposta inclui um campo LogResult que contém até 4 KB de logs codificados em base64 da invocação.

$ aws lambda invoke --function-name my-function out --log-type Tail { "StatusCode": 200, "LogResult": "U1RBUlQgUmVxdWVzdElkOiA4N2QwNDRiOC1mMTU0LTExZTgtOGNkYS0yOTc0YzVlNGZiMjEgVmVyc2lvb...", "ExecutedVersion": "$LATEST" }

Você pode usar o utilitário base64 para decodificar os logs.

$ aws lambda invoke --function-name my-function out --log-type Tail \ --query 'LogResult' --output text | base64 -d START RequestId: 8e827ab1-f155-11e8-b06d-018ab046158d Version: $LATEST Processing event... END RequestId: 8e827ab1-f155-11e8-b06d-018ab046158d REPORT RequestId: 8e827ab1-f155-11e8-b06d-018ab046158d Duration: 29.40 ms Billed Duration: 100 ms Memory Size: 128 MB Max Memory Used: 19 MB

base64 está disponível no Linux, macOS e Ubuntu no Windows. Para macOS, o comando é base64 -D.

Os grupos de log não são excluídos automaticamente quando você exclui uma função. Para evitar armazenar logs de maneira indefinida, exclua o grupo de logs ou configure um período de retenção após o qual os logs serão excluídos automaticamente.