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.
Orchestrierung von Lambda-Funktionen mit Step Functions
Lambda-Funktionen, die mehrere Aufgaben verwalten, Wiederholungslogik implementieren oder Verzweigungslogik enthalten, sind Anti-Pattern. Stattdessen empfehlen wir, Lambda-Funktionen zu schreiben, die einzelne Aufgaben ausführen, und diese AWS Step Functions zur Orchestrierung Ihrer Anwendungsworkflows zu verwenden.
Beispielsweise kann die Bearbeitung einer Bestellung die Bestätigung der Bestelldetails, die Überprüfung der Lagerbestände, die Bearbeitung der Zahlung und die Generierung einer Rechnung erfordern. Schreiben Sie separate Lambda-Funktionen für jede Aufgabe und verwenden Sie Step Functions, um den Workflow zu verwalten. Step Functions koordiniert den Datenfluss zwischen Ihren Funktionen und behandelt Fehler bei jedem Schritt. Diese Trennung macht es einfacher, Ihre Workflows zu visualisieren, zu ändern und zu verwalten, wenn sie immer komplexer werden.
Wann sollten Step Functions mit Lambda verwendet werden?
Die folgenden Szenarien sind gute Beispiele dafür, wann Step Functions zur Orchestrierung von Lambda-basierten Anwendungen verwendet werden sollte.
Sequentielle Verarbeitung
Bei sequentieller Verarbeitung muss eine Aufgabe abgeschlossen sein, bevor die nächste Aufgabe beginnen kann. In einem Auftragsverarbeitungssystem kann die Zahlungsabwicklung beispielsweise erst beginnen, wenn die Auftragsvalidierung abgeschlossen ist, und die Rechnungsstellung muss auf die Zahlungsbestätigung warten. Schreiben Sie separate Lambda-Funktionen für jede Aufgabe und verwenden Sie Step Functions, um die Sequenz und den Datenfluss zwischen Funktionen zu verwalten.
Eine einzige Lambda-Funktion verwaltet den gesamten Auftragsabwicklungsablauf durch:
Nacheinander andere Lambda-Funktionen aufrufen
Analysieren und Validieren der Antworten aus jeder Funktion
Implementierung der Fehlerbehandlungs- und Wiederherstellungslogik
Verwaltung des Datenflusses zwischen Funktionen
Verwenden Sie zwei Lambda-Funktionen: eine zur Bestätigung der Bestellung und eine zur Zahlungsabwicklung. Step Functions koordiniert diese Funktionen durch:
Aufgaben in der richtigen Reihenfolge ausführen
Weitergabe von Daten zwischen Funktionen
Implementierung der Fehlerbehandlung bei jedem Schritt
Verwenden Sie Choice States, um sicherzustellen, dass nur gültige Bestellungen zur Zahlung weitergeleitet werden
Beispiel Workflow-Diagramm

Behandlung komplexer Fehler
Während Lambda Wiederholungsfunktionen für asynchrone Aufrufe und Zuordnungen von Ereignisquellen bietet, bietet Step Functions eine ausgefeiltere Fehlerbehandlung für komplexe Workflows. Sie können automatische Wiederholungsversuche mit exponentiellem Backoff konfigurieren und unterschiedliche Wiederholungsrichtlinien für verschiedene Fehlertypen festlegen. Wenn die Wiederholungsversuche erschöpft sind, verwenden Sie diese Option, um Fehler in Catch
einen Fallback-Status weiterzuleiten. Dies ist besonders nützlich, wenn Sie eine Fehlerbehandlung auf Workflow-Ebene benötigen, die mehrere Funktionen und Dienste koordiniert.
Weitere Informationen zur Behandlung von Lambda-Funktionsfehlern in einer Zustandsmaschine finden Sie unter Behandlung von Fehlern
Eine einzige Lambda-Funktion behandelt alle folgenden Aufgaben:
-
Versuche, einen Zahlungsabwicklungsdienst aufzurufen
-
Wenn der Zahlungsdienst nicht verfügbar ist, wartet die Funktion und versucht es später erneut.
-
Implementiert einen benutzerdefinierten exponentiellen Backoff für die Wartezeit
-
Wenn alle Versuche fehlschlagen, catch Sie den Fehler ab und wählen Sie einen anderen Flow
Verwenden Sie eine einzige Lambda-Funktion, die sich ausschließlich auf die Zahlungsabwicklung konzentriert. Step Functions verwaltet die Fehlerbehandlung durch:
Automatische Wiederholung fehlgeschlagener Aufgaben mit konfigurierbaren Back-Off-Perioden
Je nach Fehlertyp werden unterschiedliche Wiederholungsrichtlinien angewendet
Weiterleitung verschiedener Fehlertypen an entsprechende Ausweichstatus
Beibehaltung des Status und des Verlaufs der Fehlerbehandlung
Beispiel Workflow-Diagramm

Bedingte Arbeitsabläufe und menschliche Genehmigungen
Verwenden Sie den Status Step Functions Choice, um Workflows auf der Grundlage der Funktionsausgabe weiterzuleiten, und das waitForTaskToken-Suffix, um Workflows für menschliche Entscheidungen anzuhalten. Um beispielsweise eine Anfrage zur Erhöhung des Kreditlimits zu bearbeiten, verwenden Sie eine Lambda-Funktion, um Risikofaktoren zu bewerten. Verwenden Sie dann Step Functions, um Anfragen mit hohem Risiko an die manuelle Genehmigung und Anfragen mit geringem Risiko an die automatische Genehmigung weiterzuleiten.
Einen Beispiel-Workflow, der ein Integrationsmuster für Callback-Task-Tokens verwendet, finden Sie unter Callback with Task Token
Eine einzige Lambda-Funktion verwaltet einen komplexen Genehmigungsworkflow durch:
Implementierung einer verschachtelten bedingten Logik zur Bewertung von Kreditanfragen
Aufrufen verschiedener Genehmigungsfunktionen auf der Grundlage der Anzahl der Anfragen
Verwaltung mehrerer Genehmigungspfade und Entscheidungspunkte
Nachverfolgung des Status ausstehender Genehmigungen
Implementierung einer Timeout- und Benachrichtigungslogik für Genehmigungen
Verwenden Sie drei Lambda-Funktionen: eine, um das Risiko jeder Anfrage zu bewerten, eine, um Anfragen mit geringem Risiko zu genehmigen, und eine, um Anfragen mit hohem Risiko zur Überprüfung an einen Manager weiterzuleiten. Step Functions verwaltet den Workflow wie folgt:
Verwendung von Choice-Status zur Weiterleitung von Anfragen auf der Grundlage von Betrag und Risikostufe
Die Ausführung wird angehalten, während auf die Genehmigung durch einen Mitarbeiter gewartet wird
Verwaltung von Timeouts für ausstehende Genehmigungen
Bereitstellung von Transparenz über den aktuellen Status jeder Anfrage
Beispiel Workflow-Diagramm

Parallele Verarbeitung
Step Functions bietet drei Möglichkeiten, die Parallelverarbeitung zu handhaben:
-
Im Status Parallel werden mehrere Zweige Ihres Workflows gleichzeitig ausgeführt. Verwenden Sie diese Option, wenn Sie verschiedene Funktionen parallel ausführen müssen, z. B. das Generieren von Miniaturansichten beim Extrahieren von Bildmetadaten.
-
Der Inline Map-Status verarbeitet Datenarrays mit bis zu 40 gleichzeitigen Iterationen. Verwenden Sie dies für kleine bis mittlere Datensätze, bei denen Sie für jedes Element dieselbe Operation ausführen müssen.
-
Der Distributed Map-Status verarbeitet umfangreiche Parallelverarbeitung mit bis zu 10.000 gleichzeitigen Ausführungen und unterstützt sowohl JSON-Arrays als auch Amazon Simple Storage Service (Amazon S3) -Datenquellen. Verwenden Sie diese Option, wenn Sie große Datensätze verarbeiten oder wenn Sie eine höhere Parallelität benötigen.
Eine einzelne Lambda-Funktion versucht, die Parallelverarbeitung wie folgt zu verwalten:
Gleichzeitiges Aufrufen mehrerer Bildverarbeitungsfunktionen
Implementierung einer benutzerdefinierten Logik für die parallel Ausführung
Verwaltung von Timeouts und Fehlerbehandlung für jede parallel Aufgabe
Sammeln und Aggregieren von Ergebnissen aus allen Funktionen
Verwenden Sie drei Lambda-Funktionen: eine zum Erstellen eines Miniaturbilds, eine zum Hinzufügen eines Wasserzeichens und eine zum Extrahieren der Metadaten. Step Functions verwaltet diese Funktionen durch:
Gleichzeitiges Ausführen aller Funktionen im Parallel-Status
Sammeln der Ergebnisse jeder Funktion in einem geordneten Array
Verwaltung von Timeouts und Fehlerbehandlung bei allen parallel Ausführungen
Erst fortfahren, wenn alle parallel Zweige abgeschlossen sind
Beispiel Workflow-Diagramm

Wann Sie Step Functions nicht mit Lambda verwenden sollten
Nicht alle Lambda-basierten Anwendungen profitieren von der Verwendung von Step Functions. Berücksichtigen Sie diese Szenarien bei der Auswahl Ihrer Anwendungsarchitektur.
Einfache Anwendungen
Bei Anwendungen, die keine komplexe Orchestrierung erfordern, kann die Verwendung von Step Functions zu unnötiger Komplexität führen. Wenn Sie beispielsweise einfach Nachrichten aus einer Amazon SQS SQS-Warteschlange verarbeiten oder auf EventBridge Amazon-Ereignisse reagieren, können Sie diese Dienste so konfigurieren, dass sie Ihre Lambda-Funktionen direkt aufrufen. Wenn Ihre Anwendung nur aus einer oder zwei Lambda-Funktionen mit einfacher Fehlerbehandlung besteht, sind direkte Lambda-Aufrufe oder ereignisgesteuerte Architekturen möglicherweise einfacher bereitzustellen und zu verwalten.
Komplexe Datenverarbeitung
Sie können den Status Step Functions Distributed Map verwenden, um große Amazon S3 S3-Datensätze gleichzeitig mit Lambda-Funktionen zu verarbeiten. Dies ist für viele umfangreiche parallel Workloads effektiv, einschließlich der Verarbeitung halbstrukturierter Daten wie JSON- oder CSV-Dateien. Für komplexere Datentransformationen oder erweiterte Analysen sollten Sie jedoch die folgenden Alternativen in Betracht ziehen:
-
Pipelines zur Datentransformation: Wird AWS Glue für ETL-Jobs verwendet, die strukturierte oder halbstrukturierte Daten aus mehreren Quellen verarbeiten. AWS Glue ist besonders nützlich, wenn Sie integrierte Datenkatalog- und Schemaverwaltungsfunktionen benötigen.
-
Datenanalyse: Verwenden Sie Amazon EMR für Datenanalysen im Petabyte-Bereich, insbesondere bei Bedarf Apache Hadoop Ökosystem-Tools oder für Workloads für maschinelles Lernen, die die Speichergrenzen von Lambda überschreiten.
CPU-intensive Workloads
Step Functions können zwar CPU-intensive Aufgaben orchestrieren, Lambda-Funktionen sind jedoch aufgrund ihrer begrenzten CPU-Ressourcen möglicherweise nicht für diese Workloads geeignet. Für rechenintensive Operationen innerhalb Ihrer Workflows sollten Sie die folgenden Alternativen in Betracht ziehen:
-
Container-Orchestrierung: Verwenden Sie Step Functions zur Verwaltung von Amazon Elastic Container Service (Amazon ECS) -Aufgaben für konsistentere und skalierbarere Rechenressourcen.
-
Stapelverarbeitung: Integrieren Sie AWS Batch Step Functions für die Verwaltung rechenintensiver Batch-Jobs, die eine kontinuierliche CPU-Auslastung erfordern.