Como posso solucionar problemas de logs do CloudWatch ausentes para APIs REST do API Gateway?

5 minuto de leitura
0

Ativei o registro em log do Amazon CloudWatch para o Amazon API Gateway, mas não consegui encontrar nenhum log. Como obtenho os logs do CloudWatch para solucionar problemas de APIs REST do API Gateway?

Descrição breve

O log do CloudWatch pode ser usado para ajudar a depurar problemas relacionados à execução da solicitação ou ao acesso do cliente à sua API. O registro em log do CloudWatch inclui o log de execução e o log de acesso.

Para o log de execução, o API Gateway gerencia os logs do CloudWatch, incluindo a criação de grupos de logs e fluxos de logs. Para o log de acesso, você pode criar seus próprios grupos de log ou escolher grupos de logs existentes.

Nem todos os erros no lado do cliente rejeitados pelo API Gateway são registrados nos logs de execução. Por exemplo, um cliente que faz uma solicitação de API para um caminho de recurso incorreto da sua API REST retorna uma resposta 403 "Token de autenticação ausente". Esse tipo de resposta não está conectado aos logs de execução. Use o registro de acesso do CloudWatch para solucionar erros no lado do cliente.

Para obter mais informações, consulte Formatos de log do CloudWatch para o API Gateway.

O API Gateway pode não gerar logs para:

  • Erros "413 Request Entity Too Large errors" (Entidade de solicitação grande demais).
  • Erros "429 Too Many Requests" (Excesso de solicitações) demais.
  • Erros série 400 de solicitações enviadas para um domínio personalizado que não tem mapeamento de API.
  • Erros série 500 causados por falhas internas.

Para obter mais informações, consulte Monitoring REST APIs (Monitorar APIs REST).

Resolução

Verificar as permissões do API Gateway para o registro em log do CloudWatch

Para ativar os logs do CloudWatch, é necessário conceder permissão ao API Gateway para ler e gravar logs no CloudWatch para sua conta. A política gerenciada AmazonAPIGatewayPushToCloudWatchLogs tem as permissões necessárias.

Crie um perfil do AWS Identity and Access Management (IAM) com apigateway.amazonaws.com como sua entidade confiável. Em seguida, anexe a seguinte política à função do IAM e defina o ARN do perfil do IAM na propriedade cloudWatchRoleArn para sua conta da AWS:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "logs:CreateLogGroup",
        "logs:CreateLogStream",
        "logs:DescribeLogGroups",
        "logs:DescribeLogStreams",
        "logs:PutLogEvents",
        "logs:GetLogEvents",
        "logs:FilterLogEvents"
      ],
      "Resource": "*"
    }
  ]
}

Certifique-se de que:

  • O AWS Security Token Service (AWS STS) esteja ativado para sua região da AWS. Para obter mais informações, consulte Managing AWS STS in an AWS Region (Gerenciar o AWS STS em regiões da AWS).
  • O perfil do IAM é ativado para todas as regiões da AWS em que você deseja ativar os logs do CloudWatch.

Para obter mais informações, consulte Permissions for CloudWatch logging (Permissões para os logs do CloudWatch).

Verificar as configurações de log do API Gateway

Verifique se a execução do CloudWatch ou as configurações de log de acesso estão ativadas para o API Gateway.

Observação: você pode ativar os logs de execução e acesso de forma independente um do outro.

1.    Abra o console do API Gateway.

2.    No painel de navegação, escolha APIs.

3.    Escolha a API e, em seguida, escolha Stages (Estágios).

4.    Em Stages (Estágios), escolha seu estágio e, em seguida, escolha a guia Logs/Tracing (Logs/Rastreamento).

5.    Em CloudWatch Settings (Configurações do CloudWatch), verifique o seguinte:
Se a opção Enable CloudWatch Logs (Habilitar logs do CloudWatch) está selecionada.        Se Log level (Nível de log) está definido como INFO. Observação: se o nível de log estiver definido como ERROR (ERRO), somente as solicitações de erros no API Gateway serão registradas. Solicitações de API bem-sucedidas não são registradas.
Se Log full requests/responses data (Registrar dados completos de solicitações/respostas) e Enable Detailed CloudWatch Metrics (Habilitar métricas detalhadas do CloudWatch) estão selecionadas para dados de log adicionais. Observação: é prática recomendada não habilitar Log full requests/responses data (Registrar dados completos de solicitações/respostas) para APIs de produção, pois isso poderia fazer com que dados confidenciais fossem adicionados ao log.

6.    Em Custom Access Logging (Log de acesso personalizado), verifique se a opção Enable Access Logging (Habilitar log de acesso) está selecionada.

Verifique o método de log e substitua, se necessário

Por padrão, todos os recursos da API usam as mesmas configurações que seus estágios. Essa configuração pode ser substituída para usar configurações diferentes para cada método se você não quiser herdar do palco.

1.    Abra o console do API Gateway.

2.    No painel de navegação, escolha APIs.

3.    Escolha a API e, em seguida, escolha Stages (Estágios).

4.    Em Stages (Estágios), expanda o nome do estágio e escolha o método HTTP. Por exemplo, GET.

5.    Em Settings (Configurações), escolha Override for this method (Substituir para este método).

6.    Em CloudWatch settings (Configurações do CloudWatch), faça quaisquer alterações adicionais no log conforme necessário para seu caso de uso e, em seguida, escolha Save Changes (Salvar alterações).

Para obter mais informações, consulte Setting up CloudWatch logging for a REST API in API Gateway (Configurar o log do CloudWatch para uma API REST no API Gateway).


Informações relacionadas

How do I find API Gateway REST API errors in my CloudWatch logs? (Como posso encontrar os erros de API REST do API Gateway nos logs do CloudWatch?)

How can I set up access logging for API Gateway? (Como posso configurar o log de acessos para o API Gateway?)

How do I turn on CloudWatch Logs for troubleshooting my API Gateway REST API or WebSocket API? (Como ativo os logs do CloudWatch para solucionar problemas da API REST ou da API de WebSocket no API Gateway?)