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.
Grundkonzepte
Das AWS Durable Execution SDK ist die Grundlage für die Erstellung dauerhafter Funktionen und bietet die Primitive, die Sie benötigen, um den Fortschritt zu überprüfen, Wiederholungsversuche zu verarbeiten und den Ausführungsablauf zu verwalten. Das SDK ist für Python JavaScript/TypeScript und Java verfügbar. Eine vollständige SDK-Dokumentation einschließlich API-Referenz, Schnellstart-Tutorials und sprachspezifischen Anleitungen finden Sie im AWS Durable Execution SDK Developer Guide.
Dauerhafte Ausführung
Eine dauerhafte Ausführung stellt den gesamten Lebenszyklus einer dauerhaften Lambda-Funktion dar und verwendet einen Checkpoint- und Replay-Mechanismus, um den Fortschritt der Geschäftslogik zu verfolgen, die Ausführung zu unterbrechen und nach Ausfällen eine Wiederherstellung durchzuführen. Wenn Funktionen nach einer Unterbrechung oder Unterbrechung wieder aufgenommen werden, werden zuvor abgeschlossene Checkpoints erneut abgespielt und die Funktion setzt die Ausführung fort.
Der Lebenszyklus kann mehrere Aufrufe einer Lambda-Funktion umfassen, um die Ausführung abzuschließen, insbesondere nach Unterbrechungen oder einer Wiederherstellung nach einem Ausfall. Mit diesem Ansatz kann Ihre Funktion über einen längeren Zeitraum (bis zu einem Jahr) ausgeführt werden, während trotz Unterbrechungen ein zuverlässiger Ablauf gewährleistet ist.
Wie funktioniert die Wiederholung
Lambda führt ein laufendes Protokoll aller dauerhaften Operationen (Schritte, Wartezeiten und andere Operationen), während Ihre Funktion ausgeführt wird. Wenn Ihre Funktion unterbrochen werden muss oder auf eine Unterbrechung stößt, speichert Lambda dieses Checkpoint-Log und stoppt die Ausführung. Wenn es Zeit ist, die Funktion fortzusetzen, ruft Lambda Ihre Funktion erneut von Anfang an auf und spielt das Checkpoint-Log erneut ab, wobei abgeschlossene Operationen durch gespeicherte Werte ersetzt werden. Das bedeutet, dass Ihr Code erneut ausgeführt wird, zuvor abgeschlossene Schritte jedoch nicht erneut ausgeführt werden. Ihre gespeicherten Ergebnisse werden stattdessen verwendet.
Dieser Wiedergabemechanismus ist grundlegend für das Verständnis dauerhafter Funktionen. Ihr Code muss während der Wiedergabe deterministisch sein, was bedeutet, dass er bei gleichen Eingaben dieselben Ergebnisse liefert. Vermeiden Sie Operationen mit Nebeneffekten (wie das Generieren von Zufallszahlen oder das Abrufen der aktuellen Uhrzeit) außerhalb von Schritten, da diese beim Abspielen unterschiedliche Werte erzeugen und zu nicht deterministischem Verhalten führen können.
DurableContext
DurableContextist das Kontextobjekt, das Ihre langlebige Funktion empfängt. Es bietet Methoden für dauerhafte Operationen wie Schritte und Wartezeiten, mit denen Checkpoints erstellt und der Ausführungsablauf verwaltet wird.
Ihre langlebige Funktion erhält DurableContext anstelle des standardmäßigen Lambda-Kontexts einen:
Dadurch DurableContext hat Ihre Funktion Zugriff auf dauerhafte Operationen, die den Fortschritt überprüfen und die Arbeit koordinieren:
Bei Steps wird eine Geschäftslogik mit integrierten Wiederholungsversuchen und automatischem Checkpointing ausgeführt. Jeder Schritt speichert sein Ergebnis, sodass Ihre Funktion nach einer Unterbrechung ab dem letzten abgeschlossenen Schritt wieder aufgenommen wird.
Wartezeiten sind geplante Pausen, in denen Ihre Funktion nicht mehr läuft und der Ladevorgang unterbrochen wird, bis es Zeit ist, fortzufahren. Verwenden Sie sie für Zeiträume, externe Rückrufe oder zum Abfragen einer Bedingung.
Invoke ruft andere Lambda-Funktionen auf und überprüft das Ergebnis. Die aufgerufene Funktion kann eine Standardfunktion oder eine dauerhafte Funktion sein. Cross-account Aufrufe werden nicht unterstützt.
Die vollständige Sprachreferenz zu allen verfügbaren dauerhaften Operationen finden Sie unter SDK-Referenz im AWS Durable Execution SDK Developer Guide.
Dauerhafte Funktionskonfiguration
Dauerhafte Funktionen verfügen über spezifische Konfigurationseinstellungen, die das Ausführungsverhalten und die Datenspeicherung steuern. Diese Einstellungen sind von der standardmäßigen Lambda-Funktionskonfiguration getrennt und gelten für den gesamten dauerhaften Ausführungslebenszyklus.
Das DurableConfig Objekt definiert die Konfiguration für dauerhafte Funktionen:
{ "ExecutionTimeout": Integer, "RetentionPeriodInDays": Integer }
Ausführungstimeout
Das Ausführungs-Timeout steuert, wie lange eine dauerhafte Ausführung vom Start bis zum Abschluss ausgeführt werden kann. Dies unterscheidet sich vom Timeout der Lambda-Funktion, der steuert, wie lange ein einzelner Funktionsaufruf ausgeführt werden kann.
Eine dauerhafte Ausführung kann sich über mehrere Aufrufe der Lambda-Funktion erstrecken, während sie Checkpoints, Wartezeiten und Wiederholungen durchläuft. Das Ausführungs-Timeout bezieht sich auf die gesamte verstrichene Zeit der dauerhaften Ausführung, nicht auf einzelne Funktionsaufrufen.
Den Unterschied verstehen
Das Timeout der Lambda-Funktion (maximal 15 Minuten) begrenzt jeden einzelnen Aufruf Ihrer Funktion. Das dauerhafte Ausführungstimeout (maximal 1 Jahr) begrenzt die Gesamtzeit vom Beginn der Ausführung bis zum Abschluss, Fehlschlagen oder Timeout. Während dieses Zeitraums wird Ihre Funktion möglicherweise mehrfach aufgerufen, da sie Schritte verarbeitet, wartet und Fehler wiederherstellt.
Wenn Sie beispielsweise ein dauerhaftes Ausführungs-Timeout von 24 Stunden und ein Timeout für die Lambda-Funktion von 5 Minuten festlegen:
Jeder Funktionsaufruf muss innerhalb von 5 Minuten abgeschlossen sein
Die gesamte dauerhafte Ausführung kann bis zu 24 Stunden dauern
Ihre Funktion kann während dieser 24 Stunden viele Male aufgerufen werden
Wartevorgänge werden nicht auf den Timeout der Lambda-Funktion angerechnet, wohl aber auf den Timeout für die Ausführung
Sie können das Ausführungs-Timeout konfigurieren, wenn Sie eine dauerhafte Funktion mithilfe der Lambda-Konsole erstellen, oder. AWS CLI AWS SAM Wählen Sie in der Lambda-Konsole Ihre Funktion und dann Konfiguration, Dauerhafte Ausführung aus. Stellen Sie den Timeout-Wert für die Ausführung in Sekunden ein (Standard: 86400 Sekunden/24 Stunden, Minimum: 60 Sekunden, Maximum: 31536000 Sekunden/1 Jahr).
Anmerkung
Das Ausführungs-Timeout und das Timeout der Lambda-Funktion sind unterschiedliche Einstellungen. Der Timeout der Lambda-Funktion steuert, wie lange jeder einzelne Aufruf ausgeführt werden kann (maximal 15 Minuten). Das Ausführungs-Timeout steuert die gesamte verstrichene Zeit für die gesamte dauerhafte Ausführung (maximal 1 Jahr).
Aufbewahrungszeitraum
Die Aufbewahrungsfrist steuert, wie lange Lambda den Ausführungsverlauf und die Checkpoint-Daten nach Abschluss einer dauerhaften Ausführung aufbewahrt. Zu diesen Daten gehören die Schrittergebnisse, der Ausführungsstatus und das vollständige Checkpoint-Protokoll.
Nach Ablauf der Aufbewahrungsfrist löscht Lambda den Ausführungsverlauf und die Checkpoint-Daten. Sie können keine Ausführungsdetails mehr abrufen oder die Ausführung wiederholen. Die Aufbewahrungsfrist beginnt, wenn die Ausführung einen Endzustand erreicht (SUCCEEDED, FAILED, STOPPED oder TIMED_OUT).
Sie können den Aufbewahrungszeitraum konfigurieren, wenn Sie eine dauerhafte Funktion mithilfe der Lambda-Konsole erstellen, AWS CLI oder. AWS SAM Wählen Sie in der Lambda-Konsole Ihre Funktion und dann Konfiguration, Dauerhafte Ausführung aus. Legen Sie den Wert für die Aufbewahrungsdauer in Tagen fest (Standard: 14 Tage, Minimum: 1 Tag, Maximum: 90 Tage).
Wählen Sie einen Aufbewahrungszeitraum, der auf Ihren Compliance-Anforderungen, Debugging-Anforderungen und Kostenüberlegungen basiert. Längere Aufbewahrungsfristen bieten mehr Zeit für Debugging und Audits, erhöhen jedoch die Speicherkosten.
Weitere Informationen finden Sie auch unter
AWS Durable Execution SDK Developer Guide — Vollständige SDK-Referenz, Schnellstart-Tutorials, Testframework und sprachspezifische Anleitungen.
Dauerhafte Funktionen oder Step Functions — Vergleichen Sie langlebige Funktionen mit Step Functions, um herauszufinden, wann jeder Ansatz am effektivsten ist.