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.
Eventquellen-Mappings mit dauerhaften Funktionen
Dauerhafte Funktionen funktionieren mit allen Lambda-Ereignisquellenzuordnungen. Konfigurieren Sie Ereignisquellenzuordnungen für dauerhafte Funktionen auf dieselbe Weise, wie Sie sie für Standardfunktionen konfigurieren. Eventquellen-Mappings fragen automatisch Eventquellen wie Amazon SQS, Kinesis und DynamoDB Streams ab und rufen Ihre Funktion mit Batches von Datensätzen auf.
Zuordnungen von Ereignisquellen eignen sich für langlebige Funktionen, die Streams oder Warteschlangen mit komplexen, mehrstufigen Workflows verarbeiten. Sie können beispielsweise eine dauerhafte Funktion erstellen, die Amazon SQS-Nachrichten mit Wiederholungsversuchen, externen API-Aufrufen und menschlichen Genehmigungen verarbeitet.
Wie Zuordnungen von Ereignisquellen dauerhafte Funktionen aufrufen
Ereignisquellenzuordnungen rufen synchron dauerhafte Funktionen auf und warten, bis die vollständige dauerhafte Ausführung abgeschlossen ist, bevor der nächste Batch verarbeitet oder Datensätze als verarbeitet markiert werden. Wenn die gesamte dauerhafte Ausführungszeit 15 Minuten überschreitet, wird das Zeitlimit überschritten und die Ausführung schlägt fehl. Die Ereignisquellenzuordnung erhält eine Timeout-Ausnahme und behandelt sie entsprechend ihrer Wiederholungskonfiguration.
Ausführungslimit von 15 Minuten
Wenn dauerhafte Funktionen durch Zuordnungen von Ereignisquellen aufgerufen werden, darf die Gesamtdauer der dauerhaften Ausführung 15 Minuten nicht überschreiten. Dieses Limit gilt für die gesamte dauerhafte Ausführung von Anfang bis Ende, nicht nur für einzelne Funktionsaufrufen.
Dieses 15-Minuten-Limit ist unabhängig vom Timeout der Lambda-Funktion (ebenfalls maximal 15 Minuten). Das Funktions-Timeout steuert, wie lange jeder einzelne Aufruf ausgeführt werden kann, während das dauerhafte Ausführungs-Timeout die gesamte verstrichene Zeit vom Beginn bis zum Abschluss der Ausführung steuert.
Beispielszenarien:
-
Gültig: Eine dauerhafte Funktion verarbeitet eine Amazon SQS-Nachricht in drei Schritten, die jeweils 2 Minuten dauern, und wartet dann 5 Minuten, bevor ein letzter Schritt abgeschlossen wird. Gesamtausführungszeit: 11 Minuten. Das funktioniert, weil die Gesamtdauer unter 15 Minuten liegt.
-
Ungültig: Eine dauerhafte Funktion verarbeitet eine Amazon SQS-Nachricht, schließt die erste Verarbeitung in 2 Minuten ab und wartet dann 20 Minuten auf einen externen Rückruf, bevor der Vorgang abgeschlossen wird. Gesamtausführungszeit: 22 Minuten. Dies überschreitet das 15-Minuten-Limit und schlägt fehl.
-
Ungültig: Eine dauerhafte Funktion verarbeitet einen Kinesis-Datensatz mit mehreren Wartevorgängen, die insgesamt 30 Minuten zwischen den Schritten liegen. Obwohl jeder einzelne Aufruf schnell abgeschlossen wird, beträgt die Gesamtausführungszeit mehr als 15 Minuten.
Wichtig
Konfigurieren Sie Ihr dauerhaftes Ausführungstimeout auf 15 Minuten oder weniger, wenn Sie Ereignisquellenzuordnungen verwenden. Andernfalls schlägt die Erstellung der Ereignisquellenzuordnung fehl. Wenn Ihr Workflow längere Ausführungszeiten erfordert, verwenden Sie das unten beschriebene Zwischenfunktionsmuster.
Konfiguration der Zuordnungen von Ereignisquellen
Konfigurieren Sie Ereignisquellenzuordnungen für dauerhafte Funktionen mithilfe der Lambda-Konsole oder der SDKs. AWS CLI AWS Alle Standardeigenschaften für die Zuordnung von Ereignisquellen gelten für dauerhafte Funktionen:
aws lambda create-event-source-mapping \ --function-name arn:aws:lambda:us-east-1:123456789012:function:my-durable-function:1 \ --event-source-arn arn:aws:sqs:us-east-1:123456789012:my-queue \ --batch-size 10 \ --maximum-batching-window-in-seconds 5
Denken Sie daran, einen qualifizierten ARN (mit Versionsnummer oder Alias) zu verwenden, wenn Sie Ereignisquellenzuordnungen für langlebige Funktionen konfigurieren.
Fehlerbehandlung bei Zuordnungen von Ereignisquellen
Ereignisquellenzuordnungen bieten eine integrierte Fehlerbehandlung, die mit dauerhaften Funktionen funktioniert:
-
Verhalten bei Wiederholungen: Schlägt der erste Aufruf fehl, versucht es die Ereignisquellenzuordnung gemäß ihrer Wiederholungskonfiguration erneut. Konfigurieren Sie die maximale Anzahl von Wiederholungsversuchen und Wiederholungsintervallen entsprechend Ihren Anforderungen.
-
Dead-letter Warteschlangen: Konfigurieren Sie eine Warteschlange, in der keine Nachrichten mehr angezeigt werden, um Datensätze zu erfassen, die nach allen Wiederholungsversuchen fehlschlagen. Dies verhindert den Verlust von Nachrichten und ermöglicht die manuelle Überprüfung fehlgeschlagener Datensätze.
-
Teilweise Stapelfehler: Verwenden Sie für Amazon SQS und Kinesis die Meldung von partiellen Batch-Fehlern, um Datensätze einzeln zu verarbeiten und nur fehlgeschlagene Datensätze erneut zu versuchen.
-
Bei Fehler halbieren: Aktivieren Sie für Kinesis- und DynamoDB-Streams die Option „Bei Fehlern halbieren“, um fehlgeschlagene Batches aufzuteilen und problematische Datensätze zu isolieren.
Anmerkung
Dauerhafte Funktionen unterstützen Dead-Letter Queues (DLQs) für die Fehlerbehandlung, aber keine Lambda-Destinationen. Konfigurieren Sie einen DLQ, um Datensätze aus fehlgeschlagenen Aufrufen zu erfassen.
Vollständige Informationen zur Fehlerbehandlung bei der Zuordnung von Ereignisquellen finden Sie unter Zuordnungen von Ereignisquellen.
Verwendung einer Zwischenfunktion für Workflows mit langer Laufzeit
Wenn Ihr Workflow mehr als 15 Minuten benötigt, verwenden Sie eine Lambda-Standardfunktion als Zwischenfunktion zwischen der Ereignisquellenzuordnung und Ihrer dauerhaften Funktion. Die Zwischenfunktion empfängt Ereignisse aus dem Eventquell-Mapping und ruft die dauerhafte Funktion asynchron auf, wodurch das Ausführungslimit von 15 Minuten aufgehoben wird.
Dieses Muster entkoppelt das synchrone Aufrufmodell des Eventquellen-Mappings vom langlebigen Ausführungsmodell der dauerhaften Funktion. Das Eventquellen-Mapping ruft die Zwischenfunktion auf, die nach dem Start der dauerhaften Ausführung schnell wieder zurückkehrt. Die dauerhafte Funktion wird dann so lange wie nötig unabhängig ausgeführt (bis zu 1 Jahr).
Architektur
Das Zwischenfunktionsmuster besteht aus drei Komponenten:
-
Zuordnung der Ereignisquelle: Ruft die Ereignisquelle (Amazon SQS, Kinesis, DynamoDB Streams) ab und ruft die Zwischenfunktion synchron mit Datensatzstapeln auf.
-
Zwischenfunktion: Eine Standard-Lambda-Funktion, die Ereignisse aus dem Eventquellen-Mapping empfängt, die Daten bei Bedarf validiert und transformiert und die dauerhafte Funktion asynchron aufruft. Diese Funktion wird schnell abgeschlossen (in der Regel in weniger als 1 Sekunde) und gibt die Steuerung an das Eventquellen-Mapping zurück.
-
Dauerhafte Funktion: Verarbeitet das Ereignis mit einer komplexen, mehrstufigen Logik, die über einen längeren Zeitraum ausgeführt werden kann. Wird asynchron aufgerufen, sodass es nicht durch das 15-Minuten-Limit eingeschränkt ist.
Implementierung
Die Zwischenfunktion empfängt das gesamte Ereignis aus der Ereignisquellenzuordnung und ruft die dauerhafte Funktion asynchron auf. Verwenden Sie den Parameter für den Ausführungsnamen, um sicherzustellen, dass die idempotente Ausführung beginnt, und verhindern Sie so eine doppelte Verarbeitung, wenn die Ereignisquellenzuordnung einen erneuten Versuch unternimmt:
Um die Idempotenz in der Zwischenfunktion selbst zu erreichen, verwenden Sie Powertools für, um doppelte Aufrufe der dauerhaften Funktion AWS Lambda zu verhindern, falls das Eventquellen-Mapping die Zwischenfunktion erneut versucht.
Die langlebige Funktion empfängt die Nutzlast mit dem Ausführungsnamen und verarbeitet alle Datensätze mit einer Logik, die lange läuft:
Wesentliche Überlegungen
Dieses Muster entfernt das 15-Minuten-Ausführungslimit, indem es die Zuordnung der Ereignisquelle von der dauerhaften Ausführung entkoppelt. Die Zwischenfunktion kehrt sofort nach dem Start der dauerhaften Ausführung zurück, sodass das Eventquellen-Mapping die Verarbeitung fortsetzen kann. Die dauerhafte Funktion wird dann so lange wie nötig unabhängig ausgeführt.
Die Zwischenfunktion ist erfolgreich, wenn sie die dauerhafte Funktion aufruft, nicht, wenn die dauerhafte Ausführung abgeschlossen ist. Schlägt die dauerhafte Ausführung später fehl, versucht die Ereignisquellenzuordnung den Vorgang nicht erneut, da der Batch bereits erfolgreich verarbeitet wurde. Implementieren Sie die Fehlerbehandlung in der Durable-Funktion und konfigurieren Sie Warteschlangen, in denen keine Nachrichten mehr angezeigt werden, für fehlgeschlagene Ausführungen.
Verwenden Sie den Parameter für den Ausführungsnamen, um sicherzustellen, dass die idempotente Ausführung beginnt. Wenn die Ereignisquellenzuordnung die Zwischenfunktion erneut versucht, startet die Durable-Funktion keine doppelte Ausführung, da der Ausführungsname bereits vorhanden ist.
Unterstützte Ereignisquellen
Dauerhafte Funktionen unterstützen alle Lambda-Ereignisquellen, die Ereignisquellenzuordnungen verwenden:
Amazon SQS-Warteschlangen (Standard und FIFO)
Kinesis-Streams
DynamoDB Streams
Amazon Managed Streaming for Apache Kafka (Amazon MSK)
Self-managed Apache Kafka
Amazon MQ (ActiveMQ und RabbitMQ)
Amazon DocumentDB ändert Streams
Für alle Arten von Ereignisquellen gilt beim Aufrufen dauerhafter Funktionen eine maximale Ausführungsdauer von 15 Minuten.