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á.
Usando CloudWatch registros da Amazon com AWS Lambda
O AWS Lambda monitora automaticamente as funções do Lambda em seu nome para ajudar a solucionar falhas nas funções. Desde que a função de execução da sua função tenha as permissões necessárias, o Lambda captura os registros de todas as solicitações tratadas pela sua função e os envia para o Amazon Logs. CloudWatch
Você pode inserir instruções de registro em log no seu código para ajudá-lo a validar se o seu código está funcionando conforme o esperado. O Lambda se integra automaticamente aos CloudWatch Logs e envia todos os registros do seu código para um grupo de CloudWatch registros associado a uma função Lambda.
Por padrão, o Lambda envia logs a um grupo de logs denominado /aws/lambda/<function name>
. Caso queira que a função envie logs para outro grupo, você precisará configurar isso usando o console do Lambda, a AWS Command Line Interface (AWS CLI) ou a API do Lambda. Para saber mais, consulte Configurando grupos de CloudWatch registros.
Você pode visualizar os registros das funções do Lambda usando o console Lambda, o CloudWatch console, o AWS Command Line Interface (AWS CLI) ou a API. CloudWatch
nota
Pode levar de 5 a 10 minutos para que os logs apareçam após uma invocação de função.
Seção
Pré-requisitos
Sua função de execução precisa de permissão para fazer upload de registros no CloudWatch Logs. Você pode adicionar permissões de CloudWatch registros usando a política AWSLambdaBasicExecutionRole
AWS gerenciada fornecida pelo Lambda. Para adicionar essa política à sua função, execute o seguinte comando:
aws iam attach-role-policy --role-name your-role
--policy-arn arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole
Para ter mais informações, consulte Políticas gerenciadas da AWS para recursos do Lambda.
Definição de preço
Não há cobrança adicional pelo uso de registros Lambda; no entanto, cobranças de CloudWatch registros padrão se aplicam. Para obter mais informações, consulte CloudWatch os preços.
Configurar controles avançados de registro em log para a função do Lambda
Para dar mais controle sobre como os logs das funções são capturados, processados e consumidos, o Lambda oferece as seguintes opções de configuração de log:
-
Formato do log: selecione entre texto simples e formato JSON estruturado para os logs da sua função.
-
Nível de registro - para registros estruturados em JSON, escolha o nível de detalhe dos registros CloudWatch para os quais o Lambda envia, como ERROR, DEBUG ou INFO
-
Grupo de registros - escolha o grupo de CloudWatch registros para o qual sua função envia registros
Configurar logs em formato de texto simples e JSON
Capturar as saídas de log como pares de valores-chave JSON facilita a pesquisa e a filtragem ao depurar suas funções. Com os logs em formato JSON, você também pode adicionar tags e informações contextuais aos logs. Esse recurso ajuda a realizar análises automatizadas de grandes volumes de dados de log. A menos que o fluxo de trabalho de desenvolvimento dependa de ferramentas existentes que consumam logs do Lambda em texto simples, recomendamos que você selecione JSON para o formato de log.
Para todos os tempos de execução gerenciados pelo Lambda, você pode escolher se os registros do sistema da sua função são enviados para CloudWatch os Logs em texto simples não estruturado ou formato JSON. Os logs do sistema são os logs que o Lambda gera e, às vezes, são conhecidos como logs de eventos da plataforma.
Para runtimes compatíveis, quando você usa um dos métodos de registro em log integrado compatível, o Lambda também pode gerar os logs de aplicações da função (os logs gerados pelo código da função) no formato JSON estruturado. Quando você configura o formato de log da função para esses runtimes, a configuração escolhida se aplica aos logs do sistema e de aplicações.
Para runtimes compatíveis, se a função usar uma biblioteca ou um método de registro em log compatível, você não precisa fazer nenhuma alteração no código existente para que o Lambda capture registros em JSON estruturado.
nota
O uso de log no formato JSON adiciona metadados e codifica mensagens de log como objetos JSON contendo uma série de pares de valores-chave. Por causa disso, o tamanho das mensagens de log da função pode aumentar.
Runtimes e métodos de registro em log compatíveis
Atualmente, o Lambda é compatível com a opção de gerar logs de aplicações em JSON estruturado para os runtimes a seguir.
Runtime | Versões compatíveis |
---|---|
Java | Todos os runtimes do Java, exceto Java 8 no Amazon Linux 1 |
Node.js | Node.js 16 e posterior |
Python | Python 3.7 e posterior |
Para que o Lambda envie os registros do aplicativo da sua função para o CloudWatch formato JSON estruturado, sua função deve usar as seguintes ferramentas de registro integradas para gerar registros:
-
Java: o logger
LambdaLogger
ou Log4j2. -
Node.js: os métodos do console
console.trace
,console.debug
,console.log
,console.info
,console.error
econsole.warn
. -
Python: a biblioteca
logging
padrão do Python
Para obter mais informações sobre o uso de controles avançados de registro em log com runtimes compatíveis, consulte Registro em log da função do AWS Lambda em Java, Registro em log da função do AWS Lambda em Node.js e Registro em log da função do AWS Lambda em Python.
Para outros runtimes gerenciados do Lambda, ele atualmente só tem compatibilidade nativa com a captura de logs do sistema no formato JSON estruturado. No entanto, você ainda pode capturar logs de aplicações no formato JSON estruturado em qualquer runtime usando ferramentas de registro em log, como o Powertools para AWS Lambda, que gera logs no formato JSON.
Formatos de log padrão
Atualmente, o formato de log padrão para todos os runtimes do Lambda é texto simples.
Se você já usa bibliotecas de registro em log, como o Powertools para AWS Lambda, para gerar logs de funções no formato JSON estruturado, não precisará alterar o código se selecionar log no formato JSON. O Lambda não codifica duas vezes nenhum log que já esteja codificado em JSON. Então, os logs de aplicações da função continuarão sendo capturados como antes.
Formato JSON para logs do sistema
Quando você configura o formato de log da função como JSON, cada item de log do sistema (evento de plataforma) é capturado como um objeto JSON que contém pares de valores-chave com as seguintes chaves:
-
"time"
: o horário em que a mensagem de log foi gerada. -
"type"
: o tipo de evento que está sendo registrado em log -
"record"
: o conteúdo do log gerado
O formato do valor "record"
varia de acordo com o tipo de evento que está sendo registrado em log. Para obter mais informações, consulte Tipos de objeto Event da API de telemetria. Para obter mais informações sobre os níveis de log atribuídos aos eventos de log do sistema, consulte Mapeamento de eventos no nível de log do sistema.
Para comparação, os dois exemplos a seguir mostram a mesma saída de log nos formatos de texto simples e JSON estruturado. Observe que, na maioria dos casos, os eventos de log do sistema contêm mais informações quando enviados no formato JSON do que quando enviados em texto simples.
exemplo texto simples:
2023-03-13 18:56:24.046000 fbe8c1 INIT_START Runtime Version: python:3.9.v18 Runtime Version ARN: arn:aws:lambda:eu-west-1::runtime:edb5a058bfa782cb9cedc6d534ac8b8c193bc28e9a9879d9f5ebaaf619cd0fc0
exemplo JSON estruturado:
{
"time": "2023-03-13T18:56:24.046Z",
"type": "platform.initStart",
"record": {
"initializationType": "on-demand",
"phase": "init",
"runtimeVersion": "python:3.9.v18",
"runtimeVersionArn": "arn:aws:lambda:eu-west-1::runtime:edb5a058bfa782cb9cedc6d534ac8b8c193bc28e9a9879d9f5ebaaf619cd0fc0"
}
}
nota
API de Telemetria do Lambda sempre emite eventos de plataforma, como START
e REPORT
no formato JSON. Configurar o formato dos registros do sistema CloudWatch para os quais o Lambda envia não afeta o comportamento da API de telemetria do Lambda.
Formato JSON para logs de aplicações
Quando você configura o formato de log da função como JSON, as saídas de logs de aplicações gravadas usando bibliotecas e métodos de registro em log compatíveis são capturadas como um objeto JSON que contém pares de valores de chave com as chaves a seguir.
-
"timestamp"
: o horário em que a mensagem de log foi gerada. -
"level"
: o nível de log atribuído à mensagem. -
"message"
: o conteúdo da mensagem de log. -
"requestId"
(Python e Node.js) ou"AWSrequestId"
(Java): o ID de solicitação exclusivo para a invocação da função
Dependendo do runtime e do método de registro em log que a função usa, esse objeto JSON também pode conter pares de chaves adicionais. Por exemplo, em Node.js, se a função usa métodos do console
para registrar em log objetos de erro usando vários argumentos, o objeto JSON conterá pares adicionais de valores de chave com as chaves errorMessage
, errorType
e stackTrace
. Para saber mais sobre logs formatados em JSON em diferentes runtimes do Lambda, consulte Registro em log da função do AWS Lambda em Python, Registro em log da função do AWS Lambda em Node.js e Registro em log da função do AWS Lambda em Java.
nota
A chave usada pelo Lambda para o valor do carimbo de data/hora é diferente para logs do sistema e de aplicações. Para logs do sistema, o Lambda usa a chave "time"
para manter a consistência com a API de telemetria. Para logs de aplicações, o Lambda segue as convenções dos runtimes compatíveis e usa "timestamp"
.
Para comparação, os dois exemplos a seguir mostram a mesma saída de log nos formatos de texto simples e JSON estruturado.
exemplo texto simples:
2023-10-27T19:17:45.586Z 79b4f56e-95b1-4643-9700-2807f4e68189 INFO some log message
exemplo JSON estruturado:
{
"timestamp":"2023-10-27T19:17:45.586Z",
"level":"INFO",
"message":"some log message",
"requestId":"79b4f56e-95b1-4643-9700-2807f4e68189"
}
Configurar o formato de log da função
Para configurar o formato de log da função, você pode usar o console do Lambda ou a AWS Command Line Interface (AWS CLI). Você também pode configurar o formato de log de uma função usando os comandos CreateFunctione os comandos UpdateFunctionConfigurationda API Lambda, o AWS::Serverless::Functionrecurso AWS Serverless Application Model (AWS SAM) e o AWS CloudFormation AWS::Lambda::Functionrecurso.
Alterar o formato de registro da sua função não afeta os registros existentes armazenados em CloudWatch Registros. Somente os novos logs usarão o formato atualizado.
Se você alterar o formato de log da função para JSON e não definir o nível do log, o Lambda definirá automaticamente o nível do log da aplicação e do sistema da função como INFO. Isso significa que o Lambda envia somente saídas de log de nível INFO e inferior para Logs. CloudWatch Para saber mais sobre a filtragem em nível de log da aplicação e do sistema, consulte Filtragem em nível de log
nota
Em runtimes do Python, quando o formato de log da função é definido como texto sem formatação, a configuração padrão de nível de log é WARN. Isso significa que o Lambda envia apenas saídas de log de nível WARN e inferior para Logs. CloudWatch Alterar o formato de log da função para JSON altera esse comportamento padrão. Para saber mais sobre registro em log no Python, consulte Registro em log da função do AWS Lambda em Python.
Para funções do Node.js que emitem registros de formato métrico incorporado (EMF), alterar o formato de registro da função para JSON pode CloudWatch resultar na incapacidade de reconhecer suas métricas.
Importante
Se sua função usa Powertools for AWS Lambda (TypeScript) ou as bibliotecas cliente EMF de código aberto para emitir registros EMF, atualize suas bibliotecas Powertools
Configurar o formato em log da função (console)
Abra a página Funções
do console do Lambda. -
Escolha uma função.
-
Na página de configuração da função, escolha Ferramentas de monitoramento e operações.
-
No painel Configuração de registro em log, escolha Editar.
-
Em Conteúdo do log, em Formato do log, selecione Texto ou JSON.
-
Escolha Salvar.
Alterar o formato de log de uma função existente (AWS CLI)
-
Para alterar o formato de log de uma função existente, use o comando
update-function-configuration
. Defina a opçãoLogFormat
emLoggingConfig
comoJSON
ouText
.aws lambda update-function-configuration \ --function-name myFunction --logging-config LogFormat=JSON
Definir o formato do log ao criar uma função (AWS CLI)
-
Para configurar o formato do log ao criar uma nova função, use a opção
--logging-config
no comandocreate-function
. DefinaLogFormat
comoJSON
ouText
. O exemplo de comando a seguir cria uma função usando o runtime do Node.js 18, que gera logs em JSON estruturado.Se você não especificar um formato de log ao criar uma função, o Lambda usará o formato de log padrão para a versão de runtime selecionada. Para obter informações sobre o formato do log, consulte Formatos de log padrão.
aws lambda create-function --function-name myFunction --runtime nodejs18.x \ --handler index.handler --zip-file fileb://function.zip \ --role arn:aws:iam::123456789012:role/LambdaRole --logging-config LogFormat=JSON
Filtragem em nível de log
O Lambda pode filtrar os registros da sua função para que somente registros de um determinado nível de detalhe ou inferior sejam enviados para CloudWatch o Logs. Você pode configurar a filtragem em nível de logs separadamente para os logs do sistema da função (logs gerados pelo Lambda) e os logs de aplicações (logs gerados pelo código da função).
Para Runtimes e métodos de registro em log compatíveis, você não precisa fazer nenhuma alteração no código da função do Lambda para filtrar logs de aplicações da função.
Para todos os outros runtimes e métodos de registro em log, o código da função deve gerar eventos de log para stdout
ou stderr
como objetos formatados em JSON que contenham um par de valores-chave com a chave "level"
. Por exemplo, o Lambda interpreta a saída a seguir stdout
como um log de nível DEBUG.
print('{"level": "debug", "msg": "my debug log", "timestamp": "2023-11-02T16:51:31.587199Z"}')
Se o campo de valor "level"
for inválido ou estiver ausente, o Lambda atribuirá à saída do log o nível INFO. Para que o Lambda use o campo de carimbo de data/hora, você precisa especificar a hora em um formato RFC 3339
Ao denominar a chave de carimbo de data/hora, siga as convenções do runtime que estiver usando. O Lambda é compatível com as convenções de nomenclatura mais comuns usadas pelos runtimes gerenciados. Por exemplo, em funções que usam o runtime do.NET, o Lambda reconhece a chave "Timestamp"
.
nota
Para usar a filtragem em nível de log, sua função precisar estar configurada para usar logs em formato JSON. O formato de log padrão para todos os runtimes gerenciados pelo Lambda atualmente é texto simples. Para saber como configurar logs em formato JSON para a função, consulte Configurar o formato de log da função.
Para logs de aplicações (logs gerados pelo código da função), você pode escolher entre os níveis de log a seguir.
Nível de log | Uso padrão |
---|---|
TRACE (mais detalhes) | As informações mais detalhadas usadas para rastrear o caminho da execução do código |
DEBUG | Informações detalhadas para depuração do sistema |
INFO | Mensagens que registram a operação normal da função |
WARN | Mensagens sobre possíveis erros que podem levar a um comportamento inesperado se não forem corrigidos |
ERRO | Mensagens sobre problemas que impedem que o código funcione conforme o esperado |
FATAL (menos detalhes) | Mensagens sobre erros graves que fazem a aplicação parar de funcionar |
Quando você seleciona um nível de registro, o Lambda envia registros desse nível e inferiores para CloudWatch Logs. Por exemplo, se você definir o nível de log de aplicações de uma função como WARN, o Lambda não enviará saídas de log nos níveis INFO e DEBUG. O nível padrão de logs de aplicações para a filtragem de logs é INFO.
Quando o Lambda filtra os logs de aplicações da função, as mensagens de log sem nível receberão o nível INFO.
Para logs do sistema (logs gerados pelo serviço Lambda), você pode escolher entre os níveis de log a seguir.
Nível de log | Uso |
---|---|
DEBUG (mais detalhes) | Informações detalhadas para depuração do sistema |
INFO | Mensagens que registram a operação normal da função |
WARN (menos detalhes) | Mensagens sobre possíveis erros que podem levar a um comportamento inesperado se não forem corrigidos |
Quando você seleciona um nível de log, o Lambda envia logs desse nível, e de níveis inferiores. Por exemplo, se você definir o nível de log do sistema de uma função como INFO, o Lambda não enviará saídas de log no nível DEBUG.
Por padrão, o Lambda define o nível de log do sistema como INFO. Com essa configuração, o Lambda envia "start"
e "report"
registra mensagens automaticamente para o. CloudWatch Para receber logs do sistema mais ou menos detalhados, altere o nível de log para DEBUG ou WARN. Para ver uma lista dos níveis de log para os quais o Lambda mapeia diferentes eventos de log do sistema, consulte Mapeamento de eventos no nível de log do sistema.
Configurar a filtragem em nível de log
Para configurar a filtragem em nível de log de aplicações e do sistema para a função, você pode usar o console do Lambda ou a AWS Command Line Interface (AWS CLI). Você também pode configurar o nível de log de uma função usando os comandos CreateFunctione os comandos UpdateFunctionConfigurationda API Lambda, o AWS::Serverless::Functionrecurso AWS Serverless Application Model (AWS SAM) e o AWS CloudFormation AWS::Lambda::Functionrecurso.
Observe que, se você definir o nível de log da função no código, essa definição terá precedência sobre qualquer outra configuração de nível de log que você definir. Por exemplo, se você usar o método logging
setLevel()
do Python para definir o nível de registro em log da sua função como INFO, essa definição terá precedência sobre uma configuração de WARN que você definir usando o console do Lambda.
Configurar o nível de log de aplicações ou do sistema de uma função existente (console)
Abra a página Funções
do console do Lambda. -
Escolha uma função.
-
Na página de configuração da função, escolha Ferramentas de monitoramento e operações.
-
No painel Configuração de registro em log, escolha Editar.
-
Em Conteúdo do log, em Formato do log, certifique-se de que a opção JSON esteja selecionada.
-
Use os botões de opção para selecionar o Nível de log da aplicação e o Nível de log do sistema desejados para a função.
-
Escolha Salvar.
Configurar o nível de logs de aplicações ou do sistema de uma função existente (AWS CLI)
-
Para alterar o nível de logs de aplicações ou do sistema de uma função existente, use o comando
update-function-configuration
. Defina--system-log-level
comoDEBUG
,INFO
ouWARN
. Defina--application-log-level
comoDEBUG
,INFO
,WARN
,ERROR
ouFATAL
.aws lambda update-function-configuration \ --function-name myFunction --system-log-level WARN \ --application-log-level ERROR
Configurar a filtragem em nível de log ao criar uma função
-
Para configurar a filtragem em nível de log ao criar uma nova função, use as opções
--system-log-level
e--application-log-level
no comando create-function. Defina--system-log-level
comoDEBUG
,INFO
ouWARN
. Defina--application-log-level
comoDEBUG
,INFO
,WARN
,WARN
ouFATAL
.aws lambda create-function --function-name myFunction --runtime nodejs18.x \ --handler index.handler --zip-file fileb://function.zip \ --role arn:aws:iam::123456789012:role/LambdaRole --system-log-level WARN \ --application-log-level ERROR
Mapeamento de eventos no nível de log do sistema
Para eventos de log no nível do sistema gerados pelo Lambda, a tabela a seguir define o nível de log atribuído a cada evento. Para saber mais sobre os eventos listados na tabela, consulte Referência de esquema para Event da API de Telemetria do Lambda.
Nome do evento | Condição | Nível de log atribuído |
---|---|---|
initStart | runtimeVersion está definida | INFO |
initStart | runtimeVersion não está definida | DEBUG |
initRuntimeDone | status=success | DEBUG |
initRuntimeDone | status!=success | WARN |
initReport | initializationType=snapstart | INFO |
initReport | initializationType!=snapstart | DEBUG |
initReport | status!=success | WARN |
restoreStart | runtimeVersion está definida | INFO |
restoreStart | runtimeVersion não está definida | DEBUG |
restoreRuntimeDone | status=success | DEBUG |
restoreRuntimeDone | status!=success | WARN |
restoreReport | status=success | INFO |
restoreReport | status!=success | WARN |
rápido | - | INFO |
runtimeDone | status=success | DEBUG |
runtimeDone | status!=success | WARN |
relatório | status=success | INFO |
relatório | status!=success | WARN |
extensão | state=success | INFO |
extensão | state!=success | WARN |
logSubscription | - | INFO |
telemetrySubscription | - | INFO |
logsDropped | - | WARN |
nota
API de Telemetria do Lambda sempre emite o conjunto completo de eventos da plataforma. Configurar o nível dos registros do sistema CloudWatch para os quais o Lambda envia não afeta o comportamento da API de telemetria do Lambda.
Filtragem em nível de log de aplicações com runtimes personalizados
Quando você configura a filtragem em nível de log de aplicações para a função, o Lambda define o nível de log de aplicações em segundo plano no runtime usando a variável de ambiente AWS_LAMBDA_LOG_LEVEL
. O Lambda também define o formato de log da função usando a variável de ambiente AWS_LAMBDA_LOG_FORMAT
. Você pode usar essas variáveis para integrar os controles avançados de registro em log do Lambda em um runtime personalizado.
Para definir as configurações de registro em log de uma função usando um runtime personalizado com o console, a AWS CLI e as APIs do Lambda, configure o runtime personalizado para verificar o valor dessas variáveis de ambiente. Depois disso, você pode configurar os loggers do runtime de acordo com o formato e os níveis de log selecionados.
Configurando grupos de CloudWatch registros
Por padrão, cria CloudWatch automaticamente um grupo de registros com o nome /aws/lambda/<function name>
de sua função quando ela é invocada pela primeira vez. Para configurar a função para enviar logs a um grupo de logs existente ou para criar um novo grupo de logs para a função, você pode usar a AWS CLI ou o console do Lambda. Você também pode configurar grupos de registros personalizados usando os comandos UpdateFunctionConfigurationda API Lambda CreateFunctione o recurso AWS Serverless Application Model (AWS SAM) AWS: :Serverless: :Function.
Você pode configurar várias funções do Lambda para enviar registros para o mesmo grupo de CloudWatch registros. Por exemplo, é possível usar um único grupo de logs para armazenar os logs de todas as funções do Lambda que fizerem parte de uma aplicação específica. Quando você usa um grupo de logs personalizado para uma função do Lambda, os fluxos de log criados pelo Lambda incluem o nome e a versão da função. Isso garante que o mapeamento entre mensagens de log e funções seja preservado, mesmo se você usar o mesmo grupo de logs para várias funções.
O formato de nomenclatura do fluxo de log para grupos de registros personalizados segue esta convenção:
YYYY/MM/DD/<function_name>[<function_version>][<execution_environment_GUID>]
Observe que, ao configurar um grupo de registros personalizado, o nome selecionado para seu grupo de registros deve seguir as regras de nomenclatura de CloudWatch registros. Além disso, nomes de grupos de logs personalizados não devem começar com a string aws/
. Se você criar um grupo de logs personalizado começando com aws/
, o Lambda não conseguirá criar o grupo de logs. Como resultado disso, os registros da sua função não serão enviados para CloudWatch.
Alterar o grupo de logs de uma função (console)
-
Abra a página Funções
do console do Lambda. -
Escolha uma função.
-
Na página de configuração da função, escolha Ferramentas de monitoramento e operações.
-
No painel Configuração de registro em log, escolha Editar.
-
No painel Grupo de registros, em Grupo de CloudWatch registros, escolha Personalizado.
-
Em Grupo de registros personalizados, insira o nome do grupo de CloudWatch registros para o qual você deseja que sua função envie registros. Se você inserir o nome de um grupo de logs existente, sua função usará esse grupo. Se não existir nenhum grupo de logs com o nome inserido, o Lambda criará um novo grupo de logs para a função com esse nome.
Alterar o grupo de logs de uma função (AWS CLI)
-
Para alterar o grupo de logs de uma função existente, use o comando
update-function-configuration
. Se você especificar o nome de um grupo de logs existente, sua função usará esse grupo. Se não existir nenhum grupo de logs com o nome especificado, o Lambda criará um novo grupo de logs para a função com esse nome.aws lambda update-function-configuration \ --function-name myFunction --log-group myLogGroup
Especificar um grupo de logs personalizado ao criar uma função (AWS CLI)
-
Para especificar um grupo de logs personalizado ao criar uma nova função do Lambda usando a AWS CLI, use a opção
--log-group
. Se você especificar o nome de um grupo de logs existente, sua função usará esse grupo. Se não existir nenhum grupo de logs com o nome especificado, o Lambda criará um novo grupo de logs para a função com esse nome.O comando de exemplo a seguir cria uma função do Lambda para Node.js que envia logs para um grupo de logs denominado
myLogGroup
.aws lambda create-function --function-name myFunction --runtime nodejs18.x \ --handler index.handler --zip-file fileb://function.zip \ --role arn:aws:iam::123456789012:role/LambdaRole --log-group myLogGroup
Permissões da função de execução
Para que sua função envie registros para o CloudWatch Logs, ela precisa ter a logs:PutLogEvents
permissão. Quando você configura o grupo de logs da função usando o console do Lambda, se a função não tiver essa permissão, o Lambda a adiciona por padrão ao perfil de execução da função. Quando o Lambda adiciona essa permissão, ele concede à função permissão para enviar registros para qualquer grupo de registros de CloudWatch registros.
Para evitar que o Lambda atualize automaticamente o perfil de execução da função e o edite manualmente, expanda Permissões e desmarque Adicionar permissões necessárias.
Quando você configura o grupo de logs da função usando a AWS CLI, o Lambda não adiciona automaticamente a permissão logs:PutLogEvents
. Adicione a permissão ao perfil de execução da função, caso isso ainda não tenha sido feito. Essa permissão está incluída na política AWSLambdaBasicExecutionRole
Acesso a logs com o console do Lambda
Para visualizar os logs usando o console do Lambda
Abra a página Funções
do console do Lambda. -
Escolha uma função.
-
Escolha Monitor.
-
Escolha Exibir logins CloudWatch.
Acesso a logs com a AWS CLI
O AWS CLI é uma ferramenta de código aberto que permite interagir com os serviços do AWS usando comandos no shell da linha de comando. Para executar as etapas desta seção, você deve ter o seguinte:
Você pode usar a AWS CLI para recuperar logs de uma invocação usando a opção de comando --log-type
. A resposta contém um campo LogResult
com até 4 KB de logs codificados em base64 obtidos da invocação.
exemplo recuperar um ID de log
O exemplo a seguir mostra como recuperar um ID de log do campo LogResult
para uma função chamada my-function
.
aws lambda invoke --function-name my-function out --log-type Tail
A seguinte saída deverá ser mostrada:
{ "StatusCode": 200, "LogResult": "U1RBUlQgUmVxdWVzdElkOiA4N2QwNDRiOC1mMTU0LTExZTgtOGNkYS0yOTc0YzVlNGZiMjEgVmVyc2lvb...", "ExecutedVersion": "$LATEST" }
exemplo decodificar os logs
No mesmo prompt de comando, use o utilitário base64
para decodificar os logs. O exemplo a seguir mostra como recuperar logs codificados em base64 de my-function
.
aws lambda invoke --function-name my-function out --log-type Tail \ --query 'LogResult' --output text --cli-binary-format raw-in-base64-out | base64 --decode
A opção cli-binary-format será necessária se você estiver usando a AWS CLI versão 2. Para que essa seja a configuração padrão, execute aws configure set cli-binary-format raw-in-base64-out
. Para obter mais informações, consulte A AWS CLI comporta opções de linha de comando globais no Guia do usuário da AWS Command Line Interface versão 2.
A seguinte saída deverá ser mostrada:
START RequestId: 57f231fb-1730-4395-85cb-4f71bd2b87b8 Version: $LATEST "AWS_SESSION_TOKEN": "AgoJb3JpZ2luX2VjELj...", "_X_AMZN_TRACE_ID": "Root=1-5d02e5ca-f5792818b6fe8368e5b51d50;Parent=191db58857df8395;Sampled=0"",ask/lib:/opt/lib", END RequestId: 57f231fb-1730-4395-85cb-4f71bd2b87b8 REPORT RequestId: 57f231fb-1730-4395-85cb-4f71bd2b87b8 Duration: 79.67 ms Billed Duration: 80 ms Memory Size: 128 MB Max Memory Used: 73 MB
O utilitário base64
está disponível no Linux, macOS e Ubuntu no Windowsbase64 -D
.
exemplo get-logs.sh script
No mesmo prompt de comando, use o script a seguir para fazer download dos últimos cinco eventos de log. O script usa sed
para remover as aspas do arquivo de saída e fica inativo por 15 segundos para que os logs tenham tempo de ficar disponíveis. A saída inclui a resposta do Lambda, e a saída do comando get-log-events
.
Copie o conteúdo do exemplo de código a seguir e salve no diretório de seu projeto do Lambda como get-logs.sh
.
A opção cli-binary-format será necessária se você estiver usando a AWS CLI versão 2. Para que essa seja a configuração padrão, execute aws configure set cli-binary-format raw-in-base64-out
. Para obter mais informações, consulte A AWS CLI comporta opções de linha de comando globais no Guia do usuário da AWS Command Line Interface versão 2.
#!/bin/bash aws lambda invoke --function-name my-function --cli-binary-format raw-in-base64-out --payload '{"key": "value"}' out sed -i'' -e 's/"//g' out sleep 15 aws logs get-log-events --log-group-name /aws/lambda/
my-function
--log-stream-namestream1
--limit 5
exemplo macOS e Linux (somente)
No mesmo prompt de comando, os usuários do macOS e do Linux podem precisar executar o comando a seguir para garantir que o script seja executável.
chmod -R 755 get-logs.sh
exemplo recuperar os últimos cinco eventos de log
No mesmo prompt de comando, execute o script a seguir para obter os últimos cinco eventos de log.
./get-logs.sh
A seguinte saída deverá ser mostrada:
{ "StatusCode": 200, "ExecutedVersion": "$LATEST" } { "events": [ { "timestamp": 1559763003171, "message": "START RequestId: 4ce9340a-b765-490f-ad8a-02ab3415e2bf Version: $LATEST\n", "ingestionTime": 1559763003309 }, { "timestamp": 1559763003173, "message": "2019-06-05T19:30:03.173Z\t4ce9340a-b765-490f-ad8a-02ab3415e2bf\tINFO\tENVIRONMENT VARIABLES\r{\r \"AWS_LAMBDA_FUNCTION_VERSION\": \"$LATEST\",\r ...", "ingestionTime": 1559763018353 }, { "timestamp": 1559763003173, "message": "2019-06-05T19:30:03.173Z\t4ce9340a-b765-490f-ad8a-02ab3415e2bf\tINFO\tEVENT\r{\r \"key\": \"value\"\r}\n", "ingestionTime": 1559763018353 }, { "timestamp": 1559763003218, "message": "END RequestId: 4ce9340a-b765-490f-ad8a-02ab3415e2bf\n", "ingestionTime": 1559763018353 }, { "timestamp": 1559763003218, "message": "REPORT RequestId: 4ce9340a-b765-490f-ad8a-02ab3415e2bf\tDuration: 26.73 ms\tBilled Duration: 27 ms \tMemory Size: 128 MB\tMax Memory Used: 75 MB\t\n", "ingestionTime": 1559763018353 } ], "nextForwardToken": "f/34783877304859518393868359594929986069206639495374241795", "nextBackwardToken": "b/34783877303811383369537420289090800615709599058929582080" }
Registro em log da função de runtime
Para depurar e validar que seu código está funcionando conforme o esperado, é possível gerar logs com a funcionalidade de registro em log padrão para sua linguagem de programação. O tempo de execução do Lambda carrega a saída de log da sua função para Logs. CloudWatch Para obter instruções específicas de linguagem, consulte os tópicos a seguir:
Próximas etapas
-
Saiba mais sobre grupos de log e como acessá-los por meio do CloudWatch console em Sistema de monitoramento, aplicativo e arquivos de log personalizados no Guia CloudWatch do usuário da Amazon.