AWS Lambda
Guia do desenvolvedor

Registro da função do AWS Lambda no Python

Sua função do Lambda pode conter instruções de registro e o AWS Lambda, por sua vez, grava esses logs no CloudWatch. Se você usar o console do Lambda, para invocar a função do Lambda, o console exibirá os mesmos logs.

As seguintes instruções do Python geram entradas de log:

  • Instruções print.

  • Funções de Logger no módulo logging (por exemplo, logging.Logger.info e logging.Logger.error).

As duas funções de print e logging.* gravam logs no CloudWatch Logs, mas as funções de logging.* gravam informações adicionais para cada entrada de log, como time stamp e nível de log.

Por exemplo, considere o exemplo de código em Python a seguir.

import logging logger = logging.getLogger() logger.setLevel(logging.INFO) def my_logging_handler(event, context): logger.info('got event{}'.format(event)) logger.error('something went wrong') return 'Hello from Lambda!'

Como o exemplo de código usa o módulo logging para gravar mensagem para os logs, você também obtém algumas informações adicionais no registro, como time stamp e níveis de log. O nível de log identifica o tipo de log, como [INFO], [ERROR]e [DEBUG].

Você também pode encontrar esses logs no CloudWatch. Para obter mais informações, consulte Acessar os logs do Amazon CloudWatch para o AWS Lambda.

Em vez de usar o módulo logging, você pode usar as instruções de print no seu código, conforme mostrado no seguinte exemplo em Python:

from __future__ import print_function def lambda_handler(event, context): print('this will also show up in cloud watch')  return 'Hello World!'

Nesse caso, somente o texto passado para o método de impressão é enviado para o CloudWatch. As entradas de log não terão informações adicionais que a função logging.* retornará. A instrução from __future__ permite que você escreva código compatível com o Python 2 ou 3.

O console usa o tipo de invocação RequestResponse (invocação síncrona) ao invocar a função. E, portanto, ele obtém o valor de retorno ("Hello world!") de volta do AWS Lambda que o console exibe.

Para testar o código em Python anterior (console)

  1. No console, crie uma função do Lambda usando o esquema hello-world-python. Em runtime, escolha Python 2.7. Em Handler, substitua lambda_function.lambda_handler por lambda_function.my_other_logging_handler e em Role, escolha Basic execution role. Você também pode substituir o código fornecido pelo esquema, pelo código nesta seção. Para obter instruções detalhadas para criar uma função do Lambda usando o console, consulte Criar uma função do Lambda com o console.

  2. Substitua o código do modelo com o código fornecido nesta seção.

  3. Teste a função do Lambda usando Sample event template chamado Hello World fornecido no console do Lambda.

Localização de logs

Você pode encontrar os logs gravados pela função Lambda da seguinte forma:

  • No console do AWS Lambda – A seção Log output no console do AWS Lambda mostra os logs.

  • No cabeçalho de resposta, quando você invocar uma função Lambda de forma programática – Se você invocar uma função Lambda de forma programática, será possível adicionar o parâmetro LogType para recuperar os últimos 4 KB de dados de log gravados no CloudWatch Logs. O AWS Lambda retornará essas informações de log no cabeçalho x-amz-log-results dentro da resposta. Para obter mais informações, consulte Invoke.

    Se você usar a CLI da AWS para invocar a função, poderá especificar o --log-type parameter com o valor Tail para recuperar as mesmas informações.

  • No CloudWatch Logs – Para encontrar os logs no CloudWatch, é necessário saber o nome do grupo de logs e o nome do fluxo de logs. Use as propriedades context.log_group_name e context.log_stream_name em seu código para obter essas informações. Quando você executar a função Lambda, os logs resultantes no console ou na CLI mostrarão o nome do grupo de logs e o nome do fluxo de logs.

Nesta página: