Bei meiner AWS-Lambda-Funktion treten zeitweise Fehler auf und der Grund hierfür ist nicht klar ersichtlich, wenn ich die Amazon-CloudWatch-Metriken der Funktion überprüfe. Könnte die erhöhte Fehlerrate meiner Lambda-Funktion durch Zeitüberschreitungs-Probleme verursacht werden? Wenn ja, wie kann ich feststellen, ob meine Lambda-Funktion eine Zeitüberschreitung erreicht hat?
Kurzbeschreibung
Suchen Sie bei der Überprüfung der CloudWatch-Protokollgruppe Ihrer Lambda-Funktion nach dem Ausdruck Zeitüberschreitung der Aufgabe. Verwenden Sie dann die Anforderungs-IDs der zugehörigen Zeitüberschreitungs-Aufrufe, um die vollständigen Protokolle für jede Aufruf-Zeitüberschreitung abzurufen.
Informationen zur Behebung von Zeitüberschreitungsfehlern, die Ihnen auffallen, finden Sie unter Wie behebe ich Zeitüberschreitungsfehler beim Aufrufen von Lambda-Funktionen?
Hinweis: Wenn bei einem Lambda-Funktionsaufruf eine Zeitüberschreitung auftritt, wird in den CloudWatch-Protokollen des fehlgeschlagenen Aufrufs die Fehlermeldung Zeitüberschreitung der Aufgabe angezeigt, keine Fehlermeldung. Wenn Sie die CloudWatch-Protokolle Ihrer Funktion nur nach Fehlermeldungen durchsuchen, gibt die Suche nur Code-bezogene Laufzeitfehler zurück, keine Aufrufzeitüberschreitungsfehler. Weitere Informationen finden Sie unter Überwachen von AWS-Lambda-Fehlern mithilfe von Amazon CloudWatch.
Auflösung
Voraussetzungen
Falls Sie das noch nicht getan haben, erteilen Sie CloudWatch Protokollierungs-Berechtigungen für Ihre Lambda-Funktion. Weitere Informationen finden Sie unter Von AWS verwaltete Richtlinien für Lambda-Funktionen .
Rufen Sie die Anforderungs-IDs aller Zeitüberschreitungs-Aufrufe ab, indem Sie in der CloudWatch-Protokollgruppe der Funktion nach dem Ausdruck „Task timed out“ (Zeitüberschreitung der Aufgabe) suchen
Hinweis: Bei CloudWatch-Logs-Insights-Abfragen fallen Gebühren an, die auf der Menge der abgefragten Daten basieren. Weitere Informationen hierzu finden Sie unter Preise für Amazon CloudWatch.
1. Öffnen Sie die Seite Funktionen in der Lambda-Konsole.
2. Wählen Sie eine Funktion.
3. Wählen Sie Überwachen.
4. Wählen Sie Protokolle in CloudWatch anzeigen. Die Seite mit den Protokollgruppendetails der Funktion wird in der CloudWatch-Konsole geöffnet.
5. Wählen Sie In Logs Insights anzeigen.
6. Geben Sie im Textfeld Logs-Insights-Abfrage die folgende Abfrage ein und wählen Sie dann Abfrage ausführen aus:
fields @timestamp, @requestId, @message, @logStream
| filter @message like "Task timed out"
| sort @timestamp desc
| limit 100
Die Antwort gibt eine Liste von Anforderungs-IDs für die Zeitüberschreitungs-Aufrufe zurück.
Weitere Informationen finden Sie unter Analysieren von Protokolldaten mit CloudWatch Logs Insights.
Hinweis: Bei großen Protokollgruppen sollten Sie den Umfang der Suche einschränken, indem Sie der Insights-Abfrage eine Datetime-Funktion hinzufügen. Weitere Informationen finden Sie unter Abfragesyntax von CloudWatch Logs Insights.
Verwenden von Anforderungs-IDs der Zeitüberschreitungst-Aufrufe, um die vollständigen Protokolle für jede Aufruf-Zeitüberschreitung abzurufen
Geben Sie Protokolle mithilfe der standardmäßigen Protokollierungsfunktion für die von Ihnen verwendete Programmiersprache aus. Sprachspezifische Anweisungen finden Sie im Abschnitt Verwenden der AWS CLI von Zugriff auf Amazon CloudWatch Logs für AWS Lambda.