Direkt zum Inhalt

Wie verwende ich CloudWatch Logs, um festzustellen, ob bei meiner Lambda-Funktion ein Timeout aufgetreten ist?

Lesedauer: 2 Minute
0

Bei meiner AWS Lambda-Funktion traten zeitweise Fehler auf, und ich möchte Amazon CloudWatch Logs verwenden, um festzustellen, ob bei meiner Funktion ein Timeout aufgetreten ist.

Lösung

Wenn ein Lambda-Funktionsaufruf das Zeitlimit überschreitet, wird in den CloudWatch-Protokollen des fehlgeschlagenen Aufrufs die Fehlermeldung Aufgaben-Timeout und nicht die Meldung. Fehler angezeigt. Wenn du die CloudWatch-Protokollgruppe der Lambda-Funktion überprüfst, suche nach „Aufgaben-Timeout“. Wenn du die Protokolle nur nach der Meldung Fehler durchsuchst, gibt die Suche nur codebezogene Laufzeitfehler zurück, keine Timeout-Fehler beim Aufrufen. Weitere Informationen findest du unter Überwachung von AWS Lambda-Fehler mithilfe von Amazon CloudWatch.

Verwende die Anforderungs-IDs der zugehörigen Timeout-Aufrufe, um die vollständigen Protokolle für jedes Aufruf-Timeout abzurufen.

Bevor du beginnst, stelle sicher, dass die Lambda-Funktion über die erforderlichen AWS Identity and Access Management (IAM)-Berechtigungen verfügt, um Protokolle in CloudWatch Logs hochzuladen.

Anforderungs-IDs für Timeout-Aufrufe abrufen

Führe die folgenden Schritte aus:

  1. Öffne die Lambda-Konsole.
  2. Wähle im Navigationsbereich Funktionen.
  3. Wähle die Lambda-Funktion aus und wähle dann die Registerkarte Überwachen.
  4. Wähle CloudWatch-Protokolle anzeigen, um die Seite mit den Protokollgruppendetails der Funktion auf der CloudWatch-Konsole zu öffnen.
  5. Wähle In Logs Insights anzeigen.
  6. Gib in das Abfragetextfeld Logs Insights die folgende Abfrage ein und wähle dann Abfrage ausführen:
    fields @timestamp, @requestId, @message, @logStream| filter @message like "Task timed out"
    | sort @timestamp desc
    | limit 100

Die Antwort gibt eine Liste von Anforderungs-IDs in der Aufgaben-Timeout-Ausgabe für die Aufrufe zurück, bei denen das Zeitlimit überschritten wurde.

Weitere Informationen findest du unter Analyse von Protokolldaten mit CloudWatch Logs Insights.

Hinweis: Füge bei großen Protokollgruppen der Logs Insights-Abfrage eine datetime-Funktion hinzu, um den Umfang der Suche einzuschränken. Weitere Informationen findest du unter Sprache der CloudWatch Logs Insights-Abfragesyntax.

CloudWatch Logs Insights-Abfragen für die Anforderungs-IDs ausführen

Hinweis: Für CloudWatch Logs Insights-Abfragen fallen Gebühren an, die auf der von dir abgefragten Datenmenge basieren. Weitere Informationen findest du unter Amazon CloudWatch-Preise.

Verwende dann die Anforderungs-IDs der Timeout-Aufrufe, um die vollständigen Protokolle für jedes Aufruf-Timeout abzurufen. Du kannst eine Abfrage erstellen, um nach allen Protokollen für die spezifischen Anforderungs-IDs zu suchen. Weitere Informationen findest du unter Parsing von Protokollen und strukturierte Protokollierung.

Informationen zur Behebung von Timeout-Fehlern, die du identifizierst, findest du unter Wie behebe ich Timeout-Fehler beim Aufrufen von Lambda-Funktionen?