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

Lesedauer: 4 Minute
0

Ich habe die Amazon CloudWatch-Protokollierung für Amazon API Gateway aktiviert, konnte aber keine Protokolle finden.

Kurzbeschreibung

Du kannst die CloudWatch-Protokollierung verwenden, um Probleme im Zusammenhang mit der Ausführung von Anforderungen oder dem Client-Zugriff auf deine API zu debuggen. Die CloudWatch-Protokollierung umfasst die Ausführungsprotokollierung und die Zugriffsprotokollierung.

Für die Ausführungsprotokollierung verwaltet API Gateway die CloudWatch-Protokolle, einschließlich der Erstellung von Protokollgruppen und Protokollstreams. Für die Zugriffsprotokollierung kannst du deine eigenen Protokollgruppen erstellen oder vorhandene Protokollgruppen auswählen.

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

Weitere Informationen findest du unter CloudWatch-Protokollformate für API Gateway.

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

  • Fehler „413 Request Entity Too Large“.
  • Übermäßig viele Fehler „429 Too Many Requests“.
  • Fehler der Serie 400 aufgrund von Anforderungen, die an eine benutzerdefinierte Domain ohne API-Zuordnung gesendet wurden.
  • Fehler der Serie 500, die durch interne Fehler verursacht wurden.

Weitere Informationen findest du unter Überwachen von REST-APIs.

Lösung

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

Um CloudWatch-Protokolle zu aktivieren, musst du API Gateway die Erlaubnis erteilen, Protokolle für das Konto in CloudWatch zu lesen und zu schreiben. Die verwaltete Richtlinie AmazonAPIGatewayPushToCloudWatchLogs verfügt über die erforderlichen Berechtigungen.

Erstelle eine AWS Identity and Access Management (IAM, Identitäts- und Zugriffsmanagement)-Rolle mit apigateway.amazonaws.com als vertrauenswürdiger Entität. Füge dann die folgende Richtlinie an die IAM-Rolle an und lege den IAM-Rollen-ARN in der Eigenschaft cloudWatchRoleArn für dein 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": "*"
    }
  ]
}

Stelle Folgendes sicher:

  • AWS Security Token Service (AWS STS) ist für deine AWS-Region aktiviert. Weitere Informationen findest du unter Verwaltung von AWS STS in einer AWS-Region.
  • Die IAM-Rolle ist für alle AWS-Regionen aktiviert, in denen du CloudWatch-Protokolle aktivieren möchtest.

Weitere Informationen findest du unter Berechtigungen für die CloudWatch-Protokollierung.

Überprüfung der API Gateway-Protokollierungseinstellungen

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

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

  1. Öffne die API Gateway-Konsole.
  2. Wähle im Navigationsbereich APIs.
  3. Wähle die API und dann Stufen aus.
  4. Wähle unter Stufen deine Stufe aus und wähle dann die Registerkarte Protokolle/Ablaufverfolgung.
  5. Überprüfe in den CloudWatch-Einstellungen Folgendes:
    CloudWatch-Protokolle aktivieren ist ausgewählt.
    Protokollstufe ist auf INFO gesetzt.  Hinweis: Wenn Protokollstufe auf ERROR gesetzt ist, werden nur Anforderungen für Fehler im API Gateway protokolliert. Erfolgreiche API-Anforderungen werden nicht protokolliert.
    Umfassende Anforderungs-/Antwortdaten protokollieren und Detaillierte CloudWatch-Metriken aktivieren sind für zusätzliche Protokolldaten ausgewählt.
    Hinweis: Es hat sich bewährt, die Option Umfassende Anforderungs-/Antwortdaten protokollieren für Produktions-APIs nicht zu aktivieren, da dies zur Protokollierung sensibler Daten führen kann.
  6. Vergewissere dich, dass unter Benutzerdefinierte Zugriffsprotokollierung die Option Zugriffsprotokollierung aktivieren ausgewählt ist.

Protokollierungsmethode überprüfen und bei Bedarf überschreiben

Standardmäßig verwenden alle API-Ressourcen dieselben Konfigurationen wie deine Stufe. Diese Einstellung kann überschrieben werden, um für jede Methode unterschiedliche Konfigurationen zu haben, wenn du sie nicht von der Stufe erben möchtest.

  1. Öffne die API Gateway-Konsole.
  2. Wähle im Navigationsbereich APIs.
  3. Wähle die API und dann Stufen aus.
  4. Erweitere in Stufen den Stufennamen. Wähle dann die HTTP-Methode. Zum Beispiel GET.
  5. Wähle in Einstellungen Für diese Methode überschreiben aus.
  6. Nimm in den CloudWatch-Einstellungen bei Bedarf zusätzliche Protokolländerungen für den Anwendungsfall vor und wähle dann Änderungen speichern.

Weitere Informationen findest du unter CloudWatch-Protokollierung für eine REST-API in API Gateway einrichten.

Ähnliche Informationen

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

Wie kann ich die Zugriffsprotokollierung für API Gateway einrichten?

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

AWS OFFICIAL
AWS OFFICIALAktualisiert vor 2000 Jahren