Direkt zum Inhalt

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

Lesedauer: 3 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 bei einem Aufruf der Lambda-Funktion eine Zeitüberschreitung auftritt, wird in den CloudWatch-Protokollen des fehlgeschlagenen Aufrufs die Fehlermeldung Status: timeout angezeigt, und keine Meldung Error. Wenn du die CloudWatch-Protokollgruppe deiner Lambda-Funktion überprüfst, suche nach „Status: timeout“. Wenn du die Protokolle nur nach der Meldung Error durchsuchst, gibt die Suche nur codebezogene Laufzeitfehler zurück, keine Timeout-Fehler beim Aufrufen. Weitere Informationen findest du unter Monitoring AWS Lambda errors using Amazon CloudWatch (Ü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 Functions (Funktionen) aus.
  3. Wähle die Lambda-Funktion und dann die Registerkarte Monitor (Überwachen) aus.
  4. Wähle View CloudWatch logs (CloudWatch-Protokolle anzeigen) aus, um die Seite Log group details (Protokollgruppendetails) der Funktion in der CloudWatch-Konsole zu öffnen.
  5. Wähle View in Logs Insights (In Logs Insights anzeigen) aus.
  6. Gib in das Abfragetextfeld Logs Insights die folgende Abfrage ein und wähle dann Run query (Abfrage ausführen) aus:
    fields @timestamp, @requestId, @message, @logStream| filter @message like "Status: timeout"
    | sort @timestamp desc
    | limit 100

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

Weitere Informationen findest du unter Logdaten mit CloudWatch Logs Insights analysieren.

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

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

Hinweis: Für CloudWatch Logs Insights-Abfragen fallen Gebühren basierend auf der von dir abgefragten Datenmenge an. 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?