Orchestrierung von Lambda-Funktionen mit Step Functions - AWS Lambda

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
Workflow-Diagramm von Step Functions, das die Auftragsvalidierung, den Auswahlstatus und die Zahlungsabwicklung mit Erfolgs- und Fehlschlagpfaden zeigt

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 in The AWS Step Functions Workshop.

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:

Beispiel Workflow-Diagramm
Workflow-Diagramm von Step Functions für die Zahlungsabwicklung mit drei Ergebnissen: Zahlung erfolgreich, Zahlung ungültig und Zahlung fehlgeschlagen

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 in The Workshop. AWS Step Functions

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
Workflow-Diagramm von Step Functions, das die Bewertung von Kreditanfragen zeigt und je nach Risiko zur automatischen Genehmigung oder Genehmigung durch den Manager übergeht

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
Workflow-Diagramm von Step Functions mit drei parallel Lambda-Funktionen: Miniaturansicht erstellen, Wasserzeichen hinzufügen und Metadaten extrahieren

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:

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.