Fehlerbehandlung und automatische Wiederholungen in AWS Lambda - AWS Lambda

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Fehlerbehandlung und automatische Wiederholungen in AWS Lambda

Bei dem Aufruf einer Funktion können zwei Arten von Fehlern auftreten. Aufruffehler treten auf, wenn die Aufrufanforderung abgelehnt wird, bevor sie von Ihrer Funktion empfangen wird. Funktionsfehler treten auf, wenn der Code oder die Laufzeit Ihrer Funktion einen Fehler zurückgibt. Das Wiederholungsverhalten und die Strategie für den Umgang mit Fehlern kann abhängig von der Art des Fehlers, der Art des Aufrufs und dem Client oder Service, von dem die Funktion aufgerufen wird, verschieden sein.

Probleme mit der Anforderung, dem Aufrufer oder dem Konto können Aufruffehler verursachen. Aufruffehler schließen in die Antwort einen Fehlertyp und Statuscode ein, aus denen die Fehlerursache hervorgeht.

Häufige Aufruffehler
  • Anforderung – Das Anforderungsereignis ist zu groß oder weist kein gültiges JSON-Format auf, die Funktion ist nicht vorhanden oder der Typ eines Parameterwerts ist inkorrekt.

  • Aufrufer – Der Benutzer oder Service ist nicht zum Aufrufen der Funktion berechtigt.

  • Konto – Die maximale Anzahl von Funktions-Instances wird bereits ausgeführt, oder Anforderungen werden zu schnell gemacht.

Clients, wie z. B. das AWS CLI- und das AWS SDK, starten bei Client-Zeitbeschränkungen, Drosselungsfehlern (429) und anderen Fehlern, die nicht durch eine ungültige Anforderung verursacht wurden, einen Wiederholungsversuch. Eine vollständige Liste der Aufruffehler finden Sie unter Aufrufen.

Funktionsfehler treten auf, wenn Ihr Funktionscode oder die von ihm verwendete Laufzeit einen Fehler zurückgibt.

Häufige Funktionsfehler
  • Funktion – Der Code Ihrer Funktion löst eine Ausnahme aus oder gibt ein Fehlerobjekt zurück.

  • Laufzeit – Die Laufzeit hat Ihre Funktion aufgrund einer Zeitüberschreitung, eines erkannten Syntaxfehlers oder von fehlgeschlagenem Marshalling des Antwortobjekts in das JSON-Format beendet. Die Funktion wurde mit einem Fehlercode beendet.

Im Gegensatz zu Aufruffehlern veranlassen Funktionsfehler Lamda nicht dazu, einen Statuscode der 400- oder 500-Serie zurückzugeben. Wenn die Funktion einen Fehler zurückgibt, zeigt Lambda dies durch Einschluss eines Headers mit der Bezeichnung X-Amz-Function-Error und einer JSON-formatierten Antwort mit der Fehlermeldung und anderen Details an. Beispiele für Funktionsfehler in jeder Sprache finden Sie in den folgenden Themen.

Wenn Sie eine Funktion direkt aufrufen, bestimmen Sie die Strategie für den Umgang mit Fehlern im Zusammenhang mit dem Funktionscode. Lambda wiederholt diese Art von Fehlern nicht automatisch in Ihrem Namen. Um den Vorgang zu wiederholen, können Sie die Funktion manuell erneut aufrufen, das fehlgeschlagene Ereignis zum Debuggen an eine Warteschlange senden oder den Fehler ignorieren. Der Code Ihrer Funktion wurde möglicherweise vollständig, teilweise oder überhaupt nicht ausgeführt. Wenn Sie es erneut versuchen, stellen Sie sicher, dass der Code Ihrer Funktion das gleiche Ereignis mehrmals verarbeiten kann, ohne doppelte Transaktionen oder andere unerwünschte Nebenwirkungen zu verursachen.

Wenn Sie eine Funktion indirekt aufrufen, müssen Sie sich über das Wiederholungsverhalten des Aufrufers und alle Services im Klaren sein, mit denen die Anforderung während des Vorgangs konfrontiert wird. Dies umfasst die folgenden Szenarien.

  • Asynchroner Aufruf – Lambda startet bei Funktionsfehlern zwei Wiederholungsversuche. Wenn die Kapazität der Funktion nicht für die Verarbeitung aller eingehenden Anforderungen ausreicht, verbleiben die an die Funktion zu sendenden Ereignisse möglicherweise stunden- oder tagelang in der Warteschlange. Sie können für die Funktion eine Warteschlange für unzustellbare Nachrichten konfigurieren, um nicht erfolgreich verarbeitete Ereignisse aufzufangen. Weitere Informationen finden Sie unter Asynchroner Aufruf.

  • Ereignisquellen-Mappings – Ereignisquellen-Mappings, die aus Streams lesen, führen für den gesamten Batch von Elementen einen Wiederholungsversuch durch. Wiederholte Fehlermeldungen blockieren die Verarbeitung des betroffenen Shards, bis der Fehler behoben ist oder die Elemente ablaufen. Zum Erkennen blockierter Shards können Sie die Metrik Iterator Age überwachen.

    Für Ereignisquellen-Zuweisungen, die aus einer Warteschlange lesen, bestimmen Sie die Zeitdauer zwischen Wiederholversuchen und dem Ziel für fehlgeschlagene Ereignisse, indem Sie für die Quellwarteschlange die Zeitbeschränkung für die Sichtbarkeit und die Redrive-Richtlinie konfigurieren. Weitere Informationen finden Sie unter Lambda-Ereignisquellenzuweisung und in der servicespezifischen Dokumentation unter Verwendung AWS Lambda mit anderen Diensten.

  • AWS-Services – AWS-Services können Ihre Funktion synchron oder asynchron aufrufen. Beim synchronen Aufruf entscheidet der Dienst, ob er es erneut versucht. Zum Beispiel wiederholen Amazon-S3-Batch-Operationen den Vorgang, wenn die Lambda-Funktion einen TemporaryFailure-Antwortcode zurückgibt. Dienste, die ein Proxy von einem Upstream-Benutzer oder -Kunden anfordert, haben möglicherweise eine Wiederholungsstrategie oder leiten die Fehlerantwort möglicherweise an den Anforderer weiter. Zum Beispiel gibt API Gateway die Fehlerantwort immer an den Anforderer zurück.

    Bei asynchronen Aufrufen ist das Verhalten identisch mit dem Verhalten, wenn Sie die Funktion synchron aufrufen. Weitere Informationen finden Sie in den servicespezifischen Hilfethemen Verwendung AWS Lambda mit anderen Diensten und in der Dokumentation des aufrufenden Services.

  • Andere Konten und Clients – Wenn Sie Zugriff auf andere Konten gewähren, können Sie mithilfe von ressourcenbasierten Richtlinien einschränken, welche Services und Ressourcen von ihnen zum Aufruf Ihrer Funktion konfiguriert werden können. Zum Schutz Ihrer Funktion vor einer Überlastung sollten Sie Ihrer Funktion mit Amazon API Gateway eine API-Ebene vorlagern.

Um Sie bei der Behandlung von Fehlern in Lambda-Anwendungen zu unterstützen, lässt sich Lambda in -Services wie Amazon CloudWatch und integrierenAWS X-Ray. Sie können mithilfe einer Kombination aus Protokollen, Metriken, Alarmen und Ablaufverfolgung Probleme in Funktionscode, API und anderen Ressourcen, die für Ihre Anwendung erforderlich sind, schnell erkennen und aufdecken. Weitere Informationen finden Sie unter Überwachung und Fehlerbehebung bei Lambda-Funktionen.

Eine Beispielanwendung, die ein CloudWatch Logs-Abonnement, X-Ray-Ablaufverfolgung und eine Lambda-Funktion zum Erkennen und Verarbeiten von Fehlern verwendet, finden Sie unter Fehlerverarbeitungs-Beispielanwendung für AWS Lambda.