Wie kann ich fehlende CloudWatch-Protokolle für API-Gateway-REST-APIs beheben?

Letzte Aktualisierung: 30.08.2022

Ich habe die Amazon CloudWatch-Protokollierung für Amazon API Gateway aktiviert, konnte aber keine Protokolle finden. Wie erhalte ich die CloudWatch-Protokolle zur Fehlerbehebung bei API-Gateway-REST-APIs?

Kurzbeschreibung

Sie können die CloudWatch-Protokollierung verwenden, um Probleme im Zusammenhang mit der Anforderungsausführung oder dem Clientzugriff auf Ihre API zu debuggen. Die CloudWatch-Protokollierung umfasst Ausführungs- und Zugriffsprotokollierung.

Für die Ausführungsprotokollierung verwaltet API Gateway die CloudWatch-Protokolle, einschließlich der Erstellung von Protokollgruppen und Protokollstreams. Für die Zugriffsprotokollierung können Sie Ihre eigenen Protokollgruppen erstellen oder vorhandene Protokollgruppen auswählen.

Nicht alle vom API Gateway abgelehnten clientseitigen Fehler werden in Ausführungsprotokollen protokolliert. Beispielsweise gibt ein Client, der eine API-Anforderung an einen falschen Ressourcenpfad Ihrer REST-API stellt, eine 403 „Missing Authentication Token“-Antwort zurück. Diese Art von Antwort wird nicht in Ausführungsprotokollen angemeldet. Verwenden Sie die CloudWatch-Zugriffsprotokollierung, um clientseitige Fehler zu beheben.

Weitere Informationen finden Sie unter CloudWatch-Protokollformate für API Gateway.

API Gateway generiert möglicherweise keine Protokolle für:

  • 413 Fehler „Request Entity Too Large“.
  • Übermäßige 429 Fehler „Too Many Requests“.
  • Fehler der Serie 400 aus Anfragen, die an eine benutzerdefinierte Domäne ohne API-Zuordnung gesendet wurden.
  • Fehler der Serie 500, die durch interne Fehler verursacht wurden.

Weitere Informationen finden Sie unter Überwachen von REST-APIs.

Lösung

Überprüfen Sie die API-Gateway-Berechtigungen für die CloudWatch-Protokollierung

Um CloudWatch Logs zu aktivieren, müssen Sie API Gateway die Berechtigung erteilen, Protokolle für Ihr Konto in CloudWatch zu lesen und zu schreiben. Die verwaltete AmazonAPIGatewayPushToCloudWatchLogs-Richtlinie verfügt über die erforderlichen Berechtigungen.

Erstellen Sie eine AWS Identity and Access Management (IAM)-Rolle mit apigateway.amazonaws.com als vertrauenswürdiger Entität. Fügen Sie dann die folgende Richtlinie an die IAM-Rolle an und legen Sie den ARN der IAM-Rolle in der Eigenschaft cloudWatchRoleArn für Ihr AWS-Konto fest:

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

Stellen Sie sicher, dass:

  • Der AWS Security Token Service (AWS STS) für Ihre AWS-Region aktiviert ist. Weitere Informationen finden Sie unter AWS STS in einer AWS-Region verwalten.
  • Die IAM-Rolle ist für alle AWS-Regionen aktiviert, in denen Sie CloudWatch-Protokolle aktivieren möchten.

Weitere Informationen finden Sie unter Berechtigungen für die CloudWatch-Protokollierung.

API-Gateway-Protokollierungseinstellungen

Stellen Sie sicher, dass die CloudWatch-Ausführungs- oder Zugriffsprotokollierungseinstellungen für API Gateway aktiviert sind.

Hinweis: Sie können die Ausführungsprotokollierung und die Zugriffsprotokollierung unabhängig voneinander aktivieren.

1.    Öffnen Sie die API-Gateway-Konsole.

2.    Wählen Sie im Navigationsbereich APIs aus.

3.    Wählen Sie Ihre API und dann Phasen.

4.    Wählen Sie unter Phasen Ihre Phase aus und wählen Sie dann die Registerkarte Protokolle/Nachverfolgung.

5.    Überprüfen Sie in den CloudWatch-Einstellungen Folgendes:
       CloudWatch Logs aktivieren ist ausgewählt.
      Die Protokollebene ist auf INFO gesetzt.
Hinweis:
Wenn Protokollebene auf ERROR gesetzt ist, werden nur Anforderungen für Fehler im API Gateway protokolliert. Erfolgreiche API-Anfragen werden nicht aufgezeichnet.
      Vollständige Anforderungs-/Antwortdaten protokollieren und Detaillierte CloudWatch-Metriken aktivieren sind für zusätzliche Protokolldaten ausgewählt.
Hinweis:
Es ist eine bewährte Methode, Vollständige Anforderungen/Antwortdaten für Produktions-APIs nicht zu aktivieren, da dies zur Protokollierung sensibler Daten führen kann.

6.    Stellen Sie sicher, dass unter Benutzerdefinierte Zugriffsprotokollierung die Option Zugriffsprotokollierung aktivieren ausgewählt ist.

Protokollierungsmethode überprüfen und gegebenenfalls überschreiben

Standardmäßig verwenden alle API-Ressourcen dieselben Konfigurationen wie ihre Phase. Diese Einstellung kann überschrieben werden, um für jede Methode unterschiedliche Konfigurationen zu verwenden, wenn Sie diese nicht von der Phase übernehmen möchten.

1.    Öffnen Sie die API-Gateway-Konsole.

2.    Wählen Sie im Navigationsbereich APIs aus.

3.    Wählen Sie Ihre API und dann Phasen.

4.    Erweitern Sie unter Phasen Ihren Phasennamen und wählen Sie dann Ihre HTTP-Methode aus. Beispielsweise GET.

5.    Wählen Sie unter Einstellungen die Option Überschreiben für diese Methode aus.

6.    Nehmen Sie in den CloudWatch-Einstellungen bei Bedarf zusätzliche Protokolländerungen für Ihren Anwendungsfall vor und wählen Sie dann Änderungen speichern.

Weitere Informationen finden Sie unter Einrichten der CloudWatch-Protokollierung für eine REST-API in API Gateway.