Por que os logs do Lambda@Edge CloudTrail não estão sendo entregues?

4 minuto de leitura
0

Associei uma função do AWS Lambda@Edge a uma distribuição do Amazon CloudFront como um acionador. Não consigo encontrar os logs de execução da função Lambda@Edge no Amazon CloudWatch preenchidos no fluxo de logs do AWS CloudTrail. Como posso solucionar o motivo de eles estarem ausentes?

Os logs do Lambda@Edge não serão preenchidos se o perfil do AWS Identity and Access Management (IAM) associado à função Lambda@Edge não tiver a permissão necessária. Os logs também poderão parecer ausentes se você estiver verificando a região incorreta no console.

Resolução

Verifique a permissão para o perfil do IAM associado à função Lambda@Edge

Verifique se o perfil de execução da função tem as permissões necessárias para criar grupos e fluxos de logs e atribuir eventos de logs em qualquer região da AWS. A entrega de log falhará se o perfil de execução associado à função Lambda não tiver as permissões necessárias.

Um exemplo de política do IAM anexado ao perfil de execução do Lambda@Edge:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "logs:CreateLogGroup",
        "logs:CreateLogStream",
        "logs:PutLogEvents"
      ],
      "Resource": [
        "arn:aws:logs:*:*:*"
      ]
    }
  ]
}

Para obter mais informações sobre as permissões necessárias para enviar dados aos logs do CloudWatch, consulte Definição das permissões e funções do IAM para o Lambda@Edge.

Verifique os logs na região em que a função Lambda foi ativada

Quando a função Lambda@Edge é ativada, o Lambda cria fluxos de logs do CloudWatch na região da AWS mais próxima do local em que a função é ativada. O nome do grupo de logs é formatado como /aws/lambda/us-east-1.function-name, em que function-name é o nome da função Lambda.

Para localizar os logs de função Lambda@Edge, você deve determinar em quais regiões a função está sendo invocada e, em seguida, visualizar os logs.

Para encontrar a região onde a função foi invocada:

  1. Faça login no Console de Gerenciamento da AWS e abra o console do CloudFront.
  2. Escolha Monitoring (Monitoramento) na categoria Telemetry (Telemetria).
  3. Selecione a guia Lambda@Edge.
  4. Selecione a função Lambda@Edge e escolha View function metrics (Exibir métricas da função).

Na página de monitoramento, agora podemos ver em quais regiões nossas funções de réplica estão sendo invocadas durante um período de tempo específico. Aqui, podemos encontrar os logs do CloudWatch para nossa função em cada região. Para fazer isso, selecione View function logs (Exibir logs de função) e clique na região onde a função está sendo invocada.

Observação: se você vir erros em uma região específica, escolha a região que mostra os erros no gráfico. Para saber mais, consulte Determinar a região do Lambda@Edge.

Ou, para determinar o local da borda para onde a solicitação foi roteada, verifique o valor do cabeçalho de resposta x-amz-cf-pop. Em seguida, verifique a região correspondente no CloudWatch para ver os arquivos de log. Por exemplo, se x-amz-cf-pop estiver definido como IAD89-P1, isso indica que a solicitação foi atendida na região us-east-1, onde IAD é o código do aeroporto.

Quando o Lambda retorna uma resposta não inválida ao CloudFront, o CloudFront envia as mensagens de erro gravadas nos arquivos de log. Em seguida, o CloudFront envia para a região do CloudWatch na qual a função Lambda foi executada. Os grupos de logs têm o seguinte formato: /aws/cloudfront/LambdaEdge/DistributionId, em que DistributionId é o ID da distribuição. Para encontrar a região em que o arquivo de log do CloudWatch está localizado, consulte Determinar a região do Lambda@Edge.


Informações relacionadas

Definição das permissões e funções do IAM para o Lambda@Edge

Métricas e logs do CloudWatch para funções do Lambda@Edge

Determinação se sua conta envia logs ao CloudWatch

AWS OFICIAL
AWS OFICIALAtualizada há 2 anos