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.
Idempotenz
Dauerhafte Funktionen bieten eine eingebaute Idempotenz für Ausführungsstarts anhand von Ausführungsnamen. Wenn Sie einen Ausführungsnamen angeben, verwendet Lambda ihn, um doppelte Ausführungen zu verhindern und sichere Wiederholungsversuche von Aufrufanforderungen zu ermöglichen. Schritte haben standardmäßig eine Semantik für die Ausführung mindestens einmal. Während der Wiedergabe gibt das SDK Checkpoint-Ergebnisse zurück, ohne dass abgeschlossene Schritte erneut ausgeführt werden. Ihre Geschäftslogik muss jedoch idempotent sein, um potenzielle Wiederholungen vor Abschluss zu bewältigen.
Anmerkung
Lambda-Ereignisquellenzuordnungen (ESM) unterstützen beim Start keine Idempotenz. Daher startet jeder Aufruf (einschließlich Wiederholungen) eine neue dauerhafte Ausführung. Um eine idempotente Ausführung mit Zuordnungen von Ereignisquellen sicherzustellen, implementieren Sie entweder eine Idempotenzlogik in Ihren Funktionscode, z. B. mit Powertools for, AWS Lambda oder verwenden Sie eine reguläre Lambda-Funktion als Proxy (Dispatcher), um eine dauerhafte Funktion mit einem Idempotenzschlüssel (Ausführungsnamenparameter) aufzurufen.
Namen der Ausführung
Sie können einen Ausführungsnamen angeben, wenn Sie eine dauerhafte Funktion aufrufen. Der Ausführungsname fungiert als Idempotenzschlüssel, sodass Sie Aufrufanforderungen sicher wiederholen können, ohne dass es zu doppelten Ausführungen kommt. Wenn Sie keinen Namen angeben, generiert Lambda automatisch eine eindeutige Ausführungs-ID.
Die Namen der Ausführung müssen innerhalb Ihres Kontos und Ihrer Region eindeutig sein. Wenn Sie eine Funktion mit einem bereits vorhandenen Ausführungsnamen aufrufen, hängt das Lambda-Verhalten vom Status der vorhandenen Ausführung ab und davon, ob die Nutzlast übereinstimmt.
Verhalten bei Idempotenz
In der folgenden Tabelle wird beschrieben, wie Lambda Aufrufanforderungen behandelt, je nachdem, ob Sie einen Ausführungsnamen angeben, welchen Ausführungsstatus Sie haben und ob die Nutzlast übereinstimmt:
| Szenario | Name angegeben? | Bestehender Ausführungsstatus | Ist die Nutzlast identisch? | Behavior |
|---|---|---|---|---|
| 1 | Nein | N/A | N/A | Neue Ausführung gestartet: Lambda generiert eine eindeutige Ausführungs-ID und startet eine neue Ausführung |
| 2 | Ja | Existierte nie oder die Aufbewahrung ist abgelaufen | N/A | Neue Ausführung gestartet: Lambda startet eine neue Ausführung mit dem angegebenen Namen |
| 3 | Ja | In Ausführung | Ja | Idempotenter Start: Lambda gibt die vorhandenen Ausführungsinformationen zurück, ohne ein Duplikat zu starten. Bei synchronen Aufrufen dient dies als erneutes Anhängen an die laufende Ausführung |
| 4 | Ja | In Ausführung | Nein | Fehler: Lambda gibt einen DurableExecutionAlreadyStartedException Fehler zurück, da eine Ausführung mit diesem Namen bereits mit einer anderen Nutzlast ausgeführt wird |
| 5 | Ja | Geschlossen (erfolgreich, fehlgeschlagen, gestoppt oder Zeitlimit überschritten) | Ja | Idempotenter Start: Lambda gibt die vorhandenen Ausführungsinformationen zurück, ohne eine neue Ausführung zu starten. Das Ergebnis der geschlossenen Ausführung wird zurückgegeben |
| 6 | Ja | Geschlossen (erfolgreich, fehlgeschlagen, gestoppt oder Zeitlimit überschritten) | Nein | Fehler: Lambda gibt einen DurableExecutionAlreadyStartedException Fehler zurück, da eine Ausführung mit diesem Namen bereits mit einer anderen Nutzlast abgeschlossen wurde |
Hinweis
Die Szenarien 3 und 5 zeigen ein idempotentes Verhalten, bei dem Lambda doppelte Aufrufanforderungen sicher behandelt, indem es vorhandene Ausführungsinformationen zurückgibt, anstatt Duplikate zu erstellen.
Schritt: Idempotenz
Schritte haben standardmäßig eine Semantik, die mindestens einmal ausgeführt wird. Wenn Ihre Funktion nach einer Wartezeit, einem Rückruf oder einem Fehler erneut ausgeführt wird, vergleicht das SDK jeden Schritt mit dem Checkpoint-Log. Für Schritte, die bereits abgeschlossen wurden, gibt das SDK das Checkpoint-Ergebnis zurück, ohne die Schrittlogik erneut auszuführen. Wenn jedoch ein Schritt fehlschlägt oder die Funktion unterbrochen wird, bevor der Schritt abgeschlossen ist, kann der Schritt mehrmals ausgeführt werden.
Die Geschäftslogik in Ihren Schritten muss idempotent sein, um potenzielle Wiederholungsversuche zu bewältigen. Verwenden Sie Idempotenz-Schlüssel, um sicherzustellen, dass Operationen wie Zahlungen oder Datenbankschreibvorgänge nur einmal ausgeführt werden, auch wenn der Schritt erneut versucht wird. Einzelheiten zum Programmieren für Idempotenz finden Sie unter Idempotenz und Wiederholungen im AWS Durable Execution SDK Developer Guide.