

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
<a name="with-step-functions"></a>

AWS Step Functions bietet visuelle Workflow-Orchestrierung für die Koordination von Lambda-Funktionen mit anderen Diensten. AWS Mit systemeigenen Integrationen für über 220 AWS Dienste und einer vollständig verwalteten, wartungsfreien Infrastruktur ist Step Functions ideal, wenn Sie ein visuelles Workflow-Design und vollständig verwaltete Serviceintegrationen benötigen.

Für die Orchestrierung mithilfe von Standardprogrammiersprachen innerhalb von Lambda, bei der die Workflow-Logik neben der Geschäftslogik integriert ist, sollten Sie die dauerhaften Lambda-Funktionen in Betracht ziehen. [Langlebige Lambda-Funktionen](durable-functions.md) Hilfe bei der Auswahl zwischen diesen Optionen finden Sie unter [ Durable Functions oder Step Functions. ](durable-step-functions.md)

Beispielsweise kann die Bearbeitung eines Auftrags die Bestätigung der Auftragsdetails, die Überprüfung der Lagerbestände, die Bearbeitung der Zahlung und die Erstellung 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 sollte Step Functions mit Lambda verwendet werden?
<a name="when-to-use-step-functions"></a>

Die folgenden Szenarien sind gute Beispiele dafür, wann Step Functions sich besonders gut für die Orchestrierung von Lambda-based Anwendungen eignet.
+ [Sequenzielle Verarbeitung](#sequential-processing)
+ [Komplexe Fehlerbehandlung](#complex-error-handling)
+ [Bedingte Workflows und Genehmigungen durch Menschen](#conditional-workflows-human-approvals)
+ [Parallele Verarbeitung](#parallel-processing)

### Sequenzielle Verarbeitung
<a name="sequential-processing"></a>

Bei sequenzieller 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 für jede Aufgabe separate Lambda-Funktionen und verwenden Sie Step Functions, um die Reihenfolge zu verwalten und den Datenfluss zwischen den Funktionen zu steuern.

#### Anti-pattern Beispiel
<a name="anti-pattern-sequential"></a>

Eine einzige Lambda-Funktion verwaltet den gesamten Auftragsabwicklungsablauf durch Folgendes:
+ Sequenzielles Aufrufen anderer Lambda-Funktionen
+ Analysieren und Validieren der Antworten jeder Funktion
+ Implementierung von Fehlerbehandlungs- und Wiederherstellungslogik
+ Verwaltung des Datenflusses zwischen den Funktionen

#### Empfohlener Ansatz
<a name="recommended-sequential"></a>

Verwenden Sie zwei Lambda-Funktionen: eine zur Bestätigung des Auftrags und eine zur Zahlungsabwicklung. Step Functions koordiniert diese Funktionen durch Folgendes:
+ Ausführung von Aufgaben in der richtigen Reihenfolge
+ Weitergabe von Daten zwischen Funktionen
+ Implementierung der Fehlerbehandlung bei jedem Schritt
+ Verwendung von [Choice](https://docs.aws.amazon.com/step-functions/latest/dg/state-choice.html)-Zuständen, um sicherzustellen, dass nur gültige Aufträge zur Zahlung weitergeleitet werden

**Example Workflow-Diagramm**  

![Das Workflow-Diagramm von Step Functions zeigt die Auftragsvalidierung, den Status einer Auswahl und die Zahlungsabwicklung mit Erfolgs- und Fehlerpfaden.](http://docs.aws.amazon.com/de_de/lambda/latest/dg/images/sequential_workflow.png)


**Anmerkung**  
**Code-first Alternative: Informationen ** zur sequentiellen Verarbeitung mit codebasiertem Checkpointing und Wiederholungsversuchen finden Sie unter [ Schritte für langlebige Lambda-Funktionen. ](durable-basic-concepts.md)

### Komplexe Fehlerbehandlung
<a name="complex-error-handling"></a>

Während Lambda [Wiederholungsfunktionen für asynchrone Aufrufe und Zuordnungen von Ereignisquellen](invocation-retries.md) bietet, bietet Step Functions eine ausgefeiltere Fehlerbehandlung für komplexe Workflows. Sie können [automatische Wiederholungsversuche](https://docs.aws.amazon.com/step-functions/latest/dg/concepts-error-handling.html#error-handling-retrying-after-an-error) mit exponentiellem Backoff konfigurieren und unterschiedliche Wiederholungsrichtlinien für verschiedene Fehlertypen festlegen. Wenn alle Wiederholungsversuche ausgeschöpft sind, verwenden Sie `Catch`, um Fehler in einen [Fallback-Zustand](https://docs.aws.amazon.com/step-functions/latest/dg/concepts-error-handling.html#error-handling-fallback-states) umzuleiten. Dies ist besonders nützlich, wenn Sie eine Fehlerbehandlung auf Workflow-Ebene benötigen, die mehrere Funktionen und Services koordiniert.

Weitere Informationen zur Behandlung von Lambda-Funktionsfehlern in einer Zustandsmaschine finden Sie unter Umgang mit Fehlern in The Workshop. [https://catalog.workshops.aws/stepfunctions/handling-errors](https://catalog.workshops.aws/stepfunctions/handling-errors) * AWS Step Functions *

#### Anti-pattern Beispiel
<a name="anti-pattern-error-handling"></a>

Eine einzige Lambda-Funktion behandelt alle folgenden Aufgaben:
+ Aufrufversuche eines Zahlungsabwicklungsdienstes
+ Wenn der Zahlungsdienst nicht verfügbar ist, wartet die Funktion und versucht es später erneut.
+ Implementierung eines benutzerdefinierten exponentiellen Backoffs für die Wartezeit
+ Nachdem alle Versuche fehlgeschlagen sind, wird der Fehler abgefangen und ein anderer Ablauf gewählt.

#### Empfohlener Ansatz
<a name="recommended-error-handling"></a>

Verwenden Sie eine einzige Lambda-Funktion, die sich ausschließlich auf die Zahlungsabwicklung konzentriert. Step Functions verwaltet die Fehlerbehandlung durch Folgendes:
+ Automatische [Wiederholung fehlgeschlagener Aufgaben mit konfigurierbaren Backoff-Zeiten](https://docs.aws.amazon.com/step-functions/latest/dg/concepts-error-handling.html#error-handling-retrying-after-an-error)
+ Anwendung unterschiedlicher Wiederholungsrichtlinien je nach Fehlertyp
+ Weiterleitung verschiedener Fehlertypen an geeignete Fallback-Zustände
+ Beibehaltung des Status und des Verlaufs der Fehlerbehandlung

**Example Workflow-Diagramm**  

![Workflow-Diagramm von Step Functions für die Zahlungsabwicklung mit drei Ergebnissen: Zahlung erfolgreich, Zahlung ungültig und Zahlung fehlgeschlagen.](http://docs.aws.amazon.com/de_de/lambda/latest/dg/images/error_handling_workflow.png)


**Anmerkung**  
**Code-first Alternative: ** Stabile Funktionen ermöglichen die Behandlung von Try-Catch-Fehlern mit konfigurierbaren Wiederholungsstrategien. Siehe [ Fehlerbehandlung in dauerhaften Funktionen. ](durable-execution-sdk-retries.md)

### Bedingte Workflows und Genehmigungen durch Menschen
<a name="conditional-workflows-human-approvals"></a>

Verwenden Sie den Status Step Functions [ Choice](https://docs.aws.amazon.com/step-functions/latest/dg/state-choice.html), um Workflows auf der Grundlage der Funktionsausgabe weiterzuleiten, und verwenden [ Sie das ForTaskToken Suffix wait](https://docs.aws.amazon.com/step-functions/latest/dg/connect-to-resource.html#connect-wait-token), um Workflows aufgrund menschlicher 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.

Informationen zum Bereitstellen eines Beispiel-Workflows, der ein Integrationsmuster für Callback-Aufgabentoken verwendet, finden Sie unter [ Rückruf mit Task-Token ](https://catalog.workshops.aws/stepfunctions/integrating-services/3-callback-token) in * The Workshop. AWS Step Functions * 

#### Anti-pattern Beispiel
<a name="anti-pattern-conditional"></a>

Eine einzige Lambda-Funktion verwaltet einen komplexen Genehmigungsworkflow durch Folgendes:
+ 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

#### Empfohlener Ansatz
<a name="recommended-conditional"></a>

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 steuert den Workflow durch:
+ Verwendung von [Choice](https://docs.aws.amazon.com/step-functions/latest/dg/state-choice.html)-Zuständen zur Weiterleitung von Anfragen basierend auf Betrag und Risikostufe
+ Pausieren der Ausführung bis zur Genehmigung durch einen Menschen
+ Verwaltung von Timeouts für ausstehende Genehmigungen
+ Bereitstellung von Einblicken in den aktuellen Status jeder Anfrage

**Example Workflow-Diagramm**  

![Das Workflow-Diagramm von Step Functions zeigt, wie die Bewertung von Kreditanfragen zur automatischen oder risikobasierten Genehmigung durch den Manager übergeht.](http://docs.aws.amazon.com/de_de/lambda/latest/dg/images/conditional_workflow.png)


**Anmerkung**  
**Code-first Alternative: ** Dauerhafte Funktionen unterstützen Callbacks für Arbeitsabläufe, bei denen nur ein Mensch im Spiel ist. Siehe Callbacks in dauerhaften Funktionen[. ](durable-execution-sdk.md)

### Parallele Verarbeitung
<a name="parallel-processing"></a>

Step Functions bietet drei Möglichkeiten, die Parallelverarbeitung zu handhaben:
+ Im [parallelen Status](https://docs.aws.amazon.com/step-functions/latest/dg/state-parallel.html) 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-Zuordnungszustand](https://docs.aws.amazon.com/step-functions/latest/dg/state-map-inline.html) 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 [Zustand „Verteilte Karte“](https://docs.aws.amazon.com/step-functions/latest/dg/state-map-distributed.html) verarbeitet umfangreiche Parallelverarbeitung mit bis zu 10 000 gleichzeitigen Ausführungen und unterstützt sowohl JSON-Arrays als auch Datenquellen von Amazon Simple Storage Service (Amazon S3). Verwenden Sie diese Option, wenn Sie große Datensätze verarbeiten oder wenn Sie eine höhere Gleichzeitigkeit benötigen.

#### Anti-pattern Beispiel
<a name="anti-pattern-parallel"></a>

Eine einzelne Lambda-Funktion versucht, die Parallelverarbeitung durch Folgendes zu verwalten:
+ Gleichzeitiges Aufrufen mehrerer Bildverarbeitungsfunktionen
+ Implementierung einer benutzerdefinierten Logik für die parallel Ausführung
+ Verwaltung von Timeouts und Fehlerbehandlung für jede parallele Aufgabe
+ Sammeln und Aggregieren von Ergebnissen aus allen Funktionen

#### Empfohlener Ansatz
<a name="recommended-parallel"></a>

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 wie folgt:
+ Gleichzeitiges Ausführen aller Funktionen im [parallelen](https://docs.aws.amazon.com/step-functions/latest/dg/state-parallel.html) Status
+ Sammeln der Ergebnisse jeder Funktion in einem geordneten Array
+ Verwaltung von Timeouts und Fehlerbehandlung bei allen parallelen Ausführungen
+ Fortsetzung erst nach Abschluss aller parallelen Zweige

**Example Workflow-Diagramm**  

![Workflow-Diagramm mit Step Functions mit drei parallelen Lambda-Funktionen: Miniaturbild erstellen, Wasserzeichen hinzufügen und Metadaten extrahieren.](http://docs.aws.amazon.com/de_de/lambda/latest/dg/images/parallel_workflow.png)


**Anmerkung**  
**Code-first Alternative: ** Dauerhafte Funktionen sorgen für einen reibungslosen Betrieb`parallel()`. `map()` Siehe [ Parallele Ausführung](durable-execution-sdk.md).

## Wann sollte Step Functions mit Lambda nicht verwendet werden?
<a name="when-not-to-use"></a>

Nicht alle Lambda-based Anwendungen profitieren von der Verwendung von Step Functions. Berücksichtigen Sie diese Szenarien bei der Auswahl Ihrer Anwendungsarchitektur.
+ [Einfache Anwendungen](#simple-applications)
+ [Komplexe Datenverarbeitung](#complex-data-processing)
+ [CPU-intensive Arbeitslasten](#cpu-intensive)

### Einfache Anwendungen
<a name="simple-applications"></a>

**Anmerkung**  
Für Workflows, die kein visuelles Design oder umfangreiche Serviceintegrationen erfordern, [ könnten langlebige ](durable-functions.md) Lambda-Funktionen eine einfachere Alternative sein, bei der die Workflow-Logik im Code von Lambda beibehalten wird.

Bei Anwendungen, die keine komplexe Orchestrierung erfordern, kann die Verwendung von Step Functions zu unnötiger Komplexität führen. Wenn Sie beispielsweise lediglich Nachrichten aus einer Amazon SQS-Warteschlange verarbeiten oder auf EventBridge Amazon-Ereignisse reagieren, können Sie diese Dienste so konfigurieren, dass Ihre Lambda-Funktionen direkt aufgerufen werden. Besteht Ihre Anwendung hingegen nur aus ein oder zwei Lambda-Funktionen mit unkomplizierter Fehlerbehandlung, so sind direkte Lambda-Aufrufe oder ereignisgesteuerte Architekturen möglicherweise einfacher bereitzustellen und zu verwalten.

### Komplexe Datenverarbeitung
<a name="complex-data-processing"></a>

Mit dem Step-Functions-Zustand [Verteilte Karte](https://docs.aws.amazon.com/step-functions/latest/dg/state-map-distributed.html) können Sie große Amazon-S3-Datensätze parallel mit Lambda-Funktionen verarbeiten. Dies ist für viele umfangreiche parallele Workloads effektiv, einschließlich der Verarbeitung halbstrukturierter Daten wie JSON- oder CSV-Dateien. Für komplexere Datentransformationen oder erweiterte Analytik 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.
+ **Datenanalytik:** Verwenden Sie Amazon EMR für Datenanalytik im Petabyte-Bereich, insbesondere wenn Sie Tools des Apache Hadoop-Ökosystems benötigen oder für Machine-Learning-Workloads, die die [Speichergrenzen](configuration-memory.md) von Lambda überschreiten.

### CPU-intensive Arbeitslasten
<a name="cpu-intensive"></a>

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 Aufgaben von Amazon Elastic Container Service (Amazon ECS) für konsistentere und skalierbarere Rechenressourcen.
+ **Stapelverarbeitung: ** Integrieren Sie AWS Batch Step Functions, um rechenintensive Batch-Jobs zu verwalten, die eine anhaltende CPU-Auslastung erfordern.