Direkt zum Inhalt

Wie behebe ich das Problem mit fehlenden CloudWatch-Protokollen für API Gateway-REST-APIs?

Lesedauer: 4 Minute
0

Ich möchte wissen, warum ich keine Protokolle finden kann, wenn ich Amazon CloudWatch Logs für Amazon API Gateway aktiviere.

Kurzbeschreibung

Wenn du die CloudWatch-Protokollierung für REST-APIs in API Gateway einrichtest, kannst du die Ausführungsprotokollierung und die Zugriffsprotokollierung verwenden. API Gateway protokolliert nicht alle clientseitigen Fehler, die es ablehnt, in Ausführungsprotokollen. Wenn beispielsweise ein Client eine API-Anfrage an einen falschen Ressourcenpfad der REST-API stellt, erhält der Client die folgende Antwort: "403 Missing Authentication Token". API Gateway protokolliert diese Art von Antwort nicht in Ausführungsprotokollen. Um clientseitige Fehler zu beheben, verwende die CloudWatch-Zugriffsprotokollierung.

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

  • Fehler "413 Request Entity Too Large"
  • Fehler "431 Request Header Fields Too Large"
  • Fehler "Excessive 429 Too Many Requests"
  • Fehler der Serie 400, die auftreten, weil der Client Anfragen an eine benutzerdefinierte Domain ohne API-Zuordnung gesendet hat
  • Fehler der Serie 500, die aufgrund interner Fehler auftreten

Weitere Informationen findest du unter REST APIs in API Gateway überwachen.

Lösung

Überprüfung von API Gateway-Berechtigungen für CloudWatch Logs

Um CloudWatch-Protokolle zu aktivieren, musst du API Gateway die Erlaubnis erteilen, Protokolle für das AWS-Konto in CloudWatch zu lesen und zu schreiben.

Zuallererst, erstelle eine AWS Identity and Access Management (IAM)-Rolle mit apigateway.amazonaws.com als die vertrauenswürdige Entität. Hänge dann die von verwaltete AWS-Richtlinie AmazonAPIGatewayPushToCloudWatchLogs an die Rolle an. Stelle die Rolle Amazon Resource Name (ARN) auf cloudwatchRoleArn für das Konto ein.

Beispiel für eine Richtlinie:

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

Hinweis: Stelle sicher, dass du den AWS Security Token Service (AWS STS) für die AWS-Region aktivierst. Vergewissere sich außerdem, dass du die IAM-Rolle für alle Regionen aktiviert hast, in denen du CloudWatch Logs aktivieren möchtest.

Weitere Informationen findest du unter Aktivieren und Deaktivieren von AWS STS in einer AWS-Region und Berechtigungen für die CloudWatch-Protokollierung.

Überprüfung der API Gateway-Protokollierungseinstellungen

Stelle sicher, dass du die CloudWatch-Ausführungs- oder Zugriffsprotokollierungseinstellungen für API Gateway korrekt eingerichtet hast.

Hinweis: Du kannst die Ausführungsprotokollierung und die Zugriffsprotokollierung unabhängig voneinander aktivieren.

Führe die folgenden Schritte aus:

  1. Öffne die API Gateway-Konsole.
  2. Wähle im Navigationsbereich APIs aus.
  3. Wähle die API und dann Stufen aus.
  4. Wähle deine Stufe und wähle dann die Registerkarte Protokolle/Ablaufverfolgung aus.
  5. Wähle in den CloudWatch-Einstellungen die Option CloudWatch Logs aktivieren aus.
  6. Stelle Protokollstufe auf FEHLER und INFO ein.
    Hinweis: Wenn du Protokollstufe auf FEHLER setzt, protokolliert API Gateway nur Anforderungsfehler und keine erfolgreichen API-Anfragen.
  7. Wähle Ablaufverfolgung von Daten aus, um die Ablaufverfolgungsprotokollierung von Daten für die Phase zu aktivieren.
    Hinweis: Es hat sich bewährt, die Ablaufverfolgung von Daten für Produktions-APIs nicht zu aktivieren, da API Gateway möglicherweise vertrauliche Daten protokolliert.
  8. Wähle für Benutzerdefinierte Zugriffsprotokollierung die Option Zugriffsprotokollierung aktivieren aus.

Protokollierungsmethode verifizieren

Standardmäßig verwenden alle API-Ressourcen dieselbe Konfiguration wie die API-Ressourcenstufe. Wenn du die Stufe nicht übernehmen möchtest, überschreibe die Einstellung und lege andere Konfigurationen fest.

Gehe wie folgt vor, um die Protokollierungsmethode zu überprüfen:

  1. Öffne die API Gateway-Konsole.
  2. Wähle im Navigationsbereich APIs aus.
  3. Wähle die API und dann Stufen aus.
  4. Erweitere in Stufen den Stufennamen. Wähle dann die HTTP-Methode, zum Beispiel GET aus.
  5. Wähle in Einstellungen Für diese Methode überschreiben aus.
    Hinweis: Um weitere Protokolländerungen vorzunehmen, aktualisiere die erforderlichen Einstellungen im Abschnitt CloudWatch-Einstellungen.
  6. Klicke auf Änderungen speichern.

Ähnliche Informationen

Wie finde ich API Gateway-REST-API-Fehler in meinen CloudWatch-Protokollen?

Wie richte ich die Zugriffsprotokollierung für API Gateway ein?

Wie aktiviere ich CloudWatch Logs zur Problembehebung meiner API-Gateway-REST-API oder WebSocket-API?