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:
- Öffne die Lambda-Konsole.
- Wähle im Navigationsbereich Funktionen.
- Wähle die Lambda-Funktion aus und wähle dann die Registerkarte Überwachen.
- Wähle CloudWatch-Protokolle anzeigen, um die Seite mit den Protokollgruppendetails der Funktion auf der CloudWatch-Konsole zu öffnen.
- Wähle In Logs Insights anzeigen.
- 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?