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.
Wiederholungen für langlebige Lambda-Funktionen
Dauerhafte Funktionen bieten automatische Wiederholungsfunktionen, die Ihre Anwendungen widerstandsfähig gegen vorübergehende Ausfälle machen. Das SDK verarbeitet Wiederholungen auf zwei Ebenen: schrittweise Wiederholungen bei Ausfällen der Geschäftslogik und Backend-Wiederholungen bei Infrastrukturausfällen.
Schrittweise Wiederholungen
Wenn innerhalb eines Schritts eine nicht abgefangene Ausnahme auftritt, wiederholt das SDK den Schritt automatisch auf der Grundlage der konfigurierten Wiederholungsstrategie. Wiederholungen von Schritten sind Operationen, bei denen das SDK die Ausführung unterbrechen und später fortsetzen kann, ohne dass der Fortschritt verloren geht.
Verhalten bei schrittweisen Wiederholungen
In der folgenden Tabelle wird beschrieben, wie das SDK Ausnahmen in Schritten behandelt:
| Szenario | Was passiert | Messung der Auswirkungen |
|---|---|---|
| Ausnahme im Gleichschritt mit den verbleibenden Wiederholungsversuchen | Das SDK erstellt einen Checkpoint für den erneuten Versuch und unterbricht die Funktion. Beim nächsten Aufruf wiederholt sich der Schritt mit der konfigurierten Backoff-Verzögerung. | 1 Vorgang + Fehler, Payload-Größe |
| Ausnahme im Schritt ohne verbleibende Wiederholungsversuche | Der Schritt schlägt fehl und löst eine Ausnahme aus. Wenn Ihr Handler-Code diese Ausnahme nicht catch, schlägt die gesamte Ausführung fehl. | 1 Vorgang + Fehler, Größe der Nutzlast |
Wenn ein Schritt erneut versucht werden muss, überprüft das SDK den Wiederholungsstatus und beendet den Lambda-Aufruf, wenn keine andere Arbeit ausgeführt wird. Auf diese Weise kann das SDK Backoff-Verzögerungen implementieren, ohne Rechenressourcen zu verbrauchen. Die Funktion wird nach Ablauf der Backoff-Periode automatisch wieder aufgenommen.
Konfiguration von Strategien zur schrittweisen Wiederholung
Konfigurieren Sie Wiederholungsstrategien, um zu steuern, wie Schritte mit Fehlern umgehen. Sie können maximale Versuche, Backoff-Intervalle und Bedingungen für Wiederholungsversuche angeben.
Exponentieller Backoff mit maximaler Anzahl von Versuchen:
Backoff mit festem Intervall:
Bedingter Wiederholungsversuch (nur bei bestimmten Fehlern wiederholen):
Wiederholungen deaktivieren:
Wenn die Wiederholungsstrategie zurückkehrtshouldRetry: false, schlägt der Schritt ohne erneute Versuche sofort fehl. Verwenden Sie diese Option für Operationen, die nicht wiederholt werden sollten, z. B. Idempotenzprüfungen oder Operationen mit Nebenwirkungen, die nicht sicher wiederholt werden können.
Ausnahmen außerhalb von Schritten
Wenn in Ihrem Handlercode, aber außerhalb eines Schritts eine nicht abgefangene Ausnahme auftritt, markiert das SDK die Ausführung als fehlgeschlagen. Dadurch wird sichergestellt, dass Fehler in Ihrer Anwendungslogik ordnungsgemäß erfasst und gemeldet werden.
| Szenario | Was passiert | Messung der Auswirkungen |
|---|---|---|
| Ausnahme im Handler-Code außerhalb eines beliebigen Schritts | Das SDK markiert die Ausführung als FEHLGESCHLAGEN und gibt den Fehler zurück. Die Ausnahme wird nicht automatisch wiederholt. | Fehler bei der Größe der Payload |
Um die automatische Wiederholung von fehleranfälligem Code zu aktivieren, schließen Sie den Vorgang in einem Schritt mit einer Wiederholungsstrategie ab. Schritte bieten automatische Wiederholungsversuche mit konfigurierbarem Backoff, während Code außerhalb von Schritten sofort fehlschlägt.
Der Aufruf wird erneut versucht
Wiederholungen auf Aufrufebene werden unterschiedlich behandelt, je nachdem, wie versucht wird, die dauerhafte Lambda-Funktion aufzurufen. In der folgenden Tabelle wird beschrieben, wie sich die verschiedenen Aufruftypen auf die Wiederholungsversuche auf Aufrufebene auswirken können.
| Aufruftyp | Was passiert |
|---|---|
| Synchroner Aufruf | Lambda wiederholt den Aufruf bei einem Fehler bei der Ausführung dauerhafter Funktionen nicht automatisch. Wiederholungsversuche bei fehlgeschlagenen Aufrufen hängen von der Quelle des synchronen Aufrufs ab. Beispielsweise mithilfe des AWS SDK. Standardmäßig ThrottlingException werden sie InternalFailure automatisch wiederholt. |
| Asynchroner Aufruf | Wenn die Ausführung einer dauerhaften Funktion fehlschlägt (z. B. wenn sie in den Status FAILED, STOPPED oder TIMED_OUT übergeht), wiederholt Lambda die Ausführung nicht erneut. Dies unterscheidet sich von Standard-Lambda-Funktionen, bei denen Lambda die Funktion bei asynchronen Aufruffehlern erneut versucht. Die MaximumRetryAttempts Einstellung für asynchrone Aufrufe gilt nicht für dauerhafte Ausführungen. Wenn Sie eine Dead-Letter-Warteschlange (DLQ) für die Funktion konfigurieren, sendet Lambda das auslösende Ereignis an die DLQ. |
| ESM (Zuordnung der Ereignisquellen) | Lambda versucht standardmäßig den gesamten Stapel erneut, bis er erfolgreich ist. Für Stream-Quellen (DynamoDB und Kinesis) können Sie die maximale Anzahl von Wiederholungsversuchen von Lambda konfigurieren, wenn Ihre Funktion einen Fehler zurückgibt. Siehe Batching von Ereignisquellenzuordnungen. Für Amazon SQS ESM können Sie maximale Wiederholungsversuche über eine DLQ in der ursprünglichen Amazon SQS SQS-Warteschlange konfigurieren. Siehe Amazon SQS ESM konfigurieren. Alternativ können Sie einen DLQ auf Funktionsebene in Betracht ziehen und Lambda sendet das fehlgeschlagene auslösende Ereignis an den DLQ. Siehe Funktion DLQ. Wenn Sie eine Aufzeichnung von Ereignissen erhalten möchten, bei denen alle Verarbeitungsversuche fehlgeschlagen sind, oder von Ereignissen für erfolgreiche Verarbeitungsversuche, können Sie Ziele für ESM konfigurieren. Siehe Asynchrone Aufrufsziele. |
| Direkter Trigger | Das hängt vom „Trigger“ ab. Lambda verarbeitet beispielsweise Funktionen, die durch Amazon S3 S3-Ereignisbenachrichtigungen ausgelöst werden, asynchron. Siehe Verarbeiten von Amazon SQS SQS-Ereignisbenachrichtigungen mit Lambda. Lambda verarbeitet Funktionen, die durch Amazon SNS SNS-Ereignisbenachrichtigungen ausgelöst werden, asynchron. Weitere Informationen finden Sie unter Aufrufen von Lambda-Funktionen mit Amazon SNS SNS-Benachrichtigungen. Das Verhalten beim erneuten Versuch eines asynchronen Aufrufs ist weiter oben im Tabelleneintrag „Asynchroner Aufruf“ beschrieben. Wenn Amazon SNS Lambda nicht erreichen kann, oder die Nachricht abgelehnt wird, wiederholt Amazon SNS den Vorgang in zunehmenden Intervallen über mehrere Stunden. Einzelheiten finden Sie unter Zuverlässigkeit |
Wiederholungen im Backend
Backend-Wiederholungen treten auf, wenn Lambda auf Infrastrukturausfälle oder Laufzeitfehler stößt oder wenn das SDK nicht mit dem Durable Execution Service kommunizieren kann. Lambda versucht diese Fehler automatisch erneut, damit Ihre dauerhaften Funktionen nach vorübergehenden Infrastrukturproblemen wieder hergestellt werden können.
Szenarien für Wiederholungsversuche im Backend
Lambda versucht automatisch, Ihre Funktion erneut auszuführen, wenn sie auf die folgenden Szenarien trifft:
-
Interne Dienstfehler — Wenn Lambda oder der Durable Execution Service einen 5xx-Fehler zurückgibt, was auf ein vorübergehendes Serviceproblem hinweist.
-
Drosselung — Wenn Ihre Funktion aufgrund von Parallelitätsbeschränkungen oder Servicekontingenten gedrosselt wird.
-
Timeouts — Wenn das SDK den Durable Execution Service innerhalb des Timeout-Zeitraums nicht erreichen kann.
-
Sandbox-Initialisierungsfehler — Wenn Lambda die Ausführungsumgebung nicht initialisieren kann.
-
Laufzeitfehler — Wenn die Lambda-Laufzeit auf Fehler außerhalb Ihres Funktionscodes stößt, z. B. out-of-memory Fehler oder Prozessabstürze.
-
Ungültige Checkpoint-Token-Fehler — Wenn das Checkpoint-Token nicht mehr gültig ist, was in der Regel auf dienstseitige Statusänderungen zurückzuführen ist.
In der folgenden Tabelle wird beschrieben, wie das SDK mit diesen Szenarien umgeht:
| Szenario | Was passiert | Messung der Auswirkungen |
|---|---|---|
| Laufzeitfehler außerhalb des Durable-Handlers (OOM, Timeout, Absturz) | Lambda versucht den Aufruf automatisch erneut. Das SDK wiederholt die Wiedergabe ab dem letzten Checkpoint, wobei abgeschlossene Schritte übersprungen werden. | Fehler: Payload-Größe + 1 Vorgang pro Wiederholung |
Dienstfehler (5xx) oder Timeout beim Aufrufen/CheckpointDurableExecutionGetDurableExecutionState APIs |
Lambda versucht den Aufruf automatisch erneut. Das SDK wiederholt die Wiedergabe ab dem letzten Checkpoint. | Fehler: Payload-Größe + 1 Vorgang pro Wiederholungsversuch |
Drosselung (429) oder ungültiges Checkpoint-Token beim Aufrufen von/CheckpointDurableExecutionGetDurableExecutionState APIs |
Lambda wiederholt den Aufruf automatisch mit exponentiellem Backoff. Das SDK wiederholt die Wiedergabe ab dem letzten Checkpoint. | Fehler: Payload-Größe + 1 Vorgang pro Wiederholungsversuch |
Client-Fehler (4xx, außer 429 und ungültigem Token) wenn/CheckpointDurableExecutionGetDurableExecutionState APIs |
Das SDK markiert die Ausführung als FEHLGESCHLAGEN. Es erfolgt kein automatischer Wiederholungsversuch, da der Fehler auf ein permanentes Problem hinweist. | Fehler bei der Größe der Payload |
Backend-Wiederholungen verwenden exponentielles Backoff und werden fortgesetzt, bis die Funktion erfolgreich ist oder das Ausführungstimeout erreicht ist. Während der Wiedergabe überspringt das SDK abgeschlossene Prüfpunkte und setzt die Ausführung ab dem letzten erfolgreichen Vorgang fort, um sicherzustellen, dass Ihre Funktion abgeschlossene Arbeit nicht erneut ausführt.
Versuchen Sie es erneut mit bewährten Methoden
Beachten Sie bei der Konfiguration von Wiederholungsstrategien die folgenden bewährten Methoden:
-
Konfigurieren Sie explizite Wiederholungsstrategien — Verlassen Sie sich nicht auf das standardmäßige Wiederholungsverhalten in der Produktion. Konfigurieren Sie Strategien für explizite Wiederholungen mit einer für Ihren Anwendungsfall angemessenen maximalen Anzahl von Versuchen und Backoff-Intervallen.
-
Verwenden Sie bedingte Wiederholungen — Implementieren Sie
shouldRetryLogik, um nur vorübergehende Fehler (Ratenbegrenzungen, Timeouts) zu wiederholen und bei dauerhaften Fehlern (Validierungsfehler, nicht gefunden) schnell fehlzuschlagen. -
Legen Sie eine angemessene maximale Anzahl von Versuchen fest — ein Gleichgewicht zwischen Belastbarkeit und Ausführungszeit. Zu viele Wiederholungen können die Fehlererkennung verzögern, während zu wenige Versuche zu unnötigen Fehlern führen können.
-
Exponentielles Backoff verwenden — Exponentielles Backoff reduziert die Belastung nachgeschalteter Dienste und erhöht die Wahrscheinlichkeit einer Wiederherstellung nach vorübergehenden Ausfällen.
-
Fehleranfälligen Code schrittweise zusammenfassen — Code außerhalb von Schritten kann nicht automatisch wiederholt werden. Integrieren Sie externe API-Aufrufe, Datenbankabfragen und andere fehleranfällige Operationen schrittweise mit Wiederholungsstrategien.
-
Überwachen Sie Wiederholungsmetriken — Verfolgen Sie schrittweise Wiederholungsvorgänge und Ausführungsfehler in Amazon CloudWatch , um Muster zu identifizieren und Wiederholungsstrategien zu optimieren.