AWS Step Functions ermöglicht es Ihnen, einen Geschäftsprozess als eine Reihe von Schritten zu implementieren, die einen Workflow bilden.
Die einzelnen Schritte im Workflow können eine Lambda-Funktion oder einen Container mit Geschäftslogik aufrufen, eine Datenbank wie beispielsweise DynamoDB aktualisieren oder eine Nachricht in einer Warteschlange veröffentlichen, sobald der Schritt oder der gesamte Workflow ausgeführt wurde.

AWS Step Functions bietet zwei Workflow-Optionen – Standard und Express. Wenn Ihr Geschäftsprozess voraussichtlich länger als fünf Minuten für eine einzelne Ausführung dauert, sollten Sie Standard wählen. Einige Beispiele für einen lang laufenden Workflow sind eine ETL-Orchestrierungspipeline oder wenn ein Schritt in Ihrem Workflow auf die Antwort einer Person wartet, um zum nächsten Schritt überzugehen.

Express-Workflows eignen sich für Workflows, die weniger als fünf Minuten benötigen. Sie sind ideal, wenn Sie ein hohes Ausführungsvolumen benötigen, z. B. 100 000 Aufrufe pro Sekunde. Sie können entweder den Standard- oder den Express-Workflow getrennt verwenden oder sie so kombinieren, dass ein längerer Standard-Workflow mehrere kürzere Express-Workflows auslöst, die dann parallel ausgeführt werden.

Microservice-Orchestrierung

Kombinieren Sie Lambda-Funktionen, um eine webbasierte Anwendung zu erstellen

In diesem Beispiel eines einfachen Bankensystems wird nach der Überprüfung des Namens und der Adresse eines Kunden ein neues Bankkonto eingerichtet. Der Workflow startet mit den zwei Lambda-Funktionen CheckName und CheckAddress, die parallel als Aufgabenstatus ausgeführt werden. Sobald beide abgeschlossen sind, wird die Lambda-Funktion ApproveApplication im Workflow ausgeführt. Sie können Retry- und Catch-Klauseln definieren, um Fehler aus dem Aufgabenstatus zu behandeln. Sie können vordefinierte Systemfehler verwenden oder benutzerdefinierte Fehler behandeln, die von diesen Lambda-Funktionen in Ihrem Workflow ausgelöst werden. Weil Ihr Workflow-Code die Fehlerbehandlung übernimmt, können sich die Lambda-Funktionen auf die Geschäftslogik konzentrieren und haben weniger Code. Express-Workflows wären für dieses Beispiel besser geeignet, da die Lambda-Funktionen Aufgaben ausführen, die zusammen weniger als fünf Minuten dauern, ohne externe Abhängigkeiten. 

Kombinieren Sie Lambda-Funktionen, um eine webbasierte Anwendung zu erstellen – mit einer menschlichen Genehmigung

Manchmal muss ein Mensch einen Schritt im Geschäftsprozess überprüfen und genehmigen oder ablehnen, damit der Workflow mit dem nächsten Schritt fortfahren kann. Wir empfehlen die Verwendung von Standard-Workflows, wenn Ihr Workflow auf einen Menschen warten muss, oder für Prozesse, bei denen ein externes System möglicherweise mehr als fünf Minuten braucht, um zu reagieren. Hier erweitern wir den Prozess für die Eröffnung eines neuen Kontos um einen Zwischenschritt zur Benachrichtigung des Genehmigers. Der Workflow beginnt mit der parallelen Ausführung der Aufgabenstatus CheckName und CheckAddress. Der nächste Status ReviewRequired ist ein Auswahlstatus mit zwei möglichen Pfaden – entweder senden Sie eine SNS-Benachrichtigung per E-Mail an den Genehmigenden in der Aufgabe NotifyApprover oder Sie fahren mit dem Status ApproveApplication fort. Der Aufgabenstatus NotifyApprover sendet eine E-Mail an den Genehmigenden und wartet auf eine Antwort, bevor er zum nächsten Auswahlstatus „Approved“ (Genehmigt) weitergeht. Auf der Grundlage der Entscheidung des Genehmigers wird der Kontoantrag über Lambda-Funktionen entweder genehmigt oder abgelehnt.

Aufrufen eines Geschäftsprozesses als Reaktion auf ein Ereignis unter Verwendung von Express Workflows

In diesem Beispiel erfüllt ein Ereignis auf einem benutzerdefinierten Eventbridge-Bus eine Regel und ruft einen Step-Functions-Workflow als Ziel auf. Angenommen, Sie haben eine Kundenservice-Anwendung, die abgelaufene Kundenabonnements verwalten soll. Eine EventBridge-Regel horcht auf Ereignisse, deren Abonnement abgelaufen ist, und ruft als Antwort einen Ziel-Workflow auf. Der Workflow für abgelaufene Abonnements deaktiviert alle Ressourcen, die das abgelaufene Abonnement besitzt, ohne sie zu löschen, und benachrichtigt den Kunden per E-Mail über sein abgelaufenes Abonnement. Diese beiden Aktionen können mit Lambda-Funktionen parallel ausgeführt werden. Am Ende des Workflows wird über eine Lambda-Funktion ein neues Ereignis an den Event Bus gesendet, das anzeigt, dass der Ablauf des Abonnements verarbeitet wurde. Für dieses Beispiel empfehlen wir die Verwendung von Express-Workflows. Wenn Ihr Unternehmen wächst und Sie beginnen, mehr Ereignisse in den Event Bus aufzunehmen, ist die Fähigkeit, 100 000 Workflow-Ausführungen pro Sekunde mit Express Workflows aufzurufen, sehr leistungsstark. Sehen Sie sich das Beispiel in Aktion mit diesem Github-Repository an.

Sicherheit und IT-Automatisierung

Orchestrieren Sie eine Reaktion auf Sicherheitsvorfälle für die Erstellung von IAM-Richtlinien

Sie können AWS Step Functions verwenden, um einen automatisierten Workflow zur Reaktion auf Sicherheitsvorfälle zu erstellen, der einen manuellen Genehmigungsschritt enthält. In diesem Beispiel wird ein Workflow von Step Functions ausgelöst, wenn eine IAM-Richtlinie erstellt wird. Der Workflow vergleicht die Richtlinienaktion mit einer anpassbaren Liste von Einschränkungen. Der Workflow setzt die Richtlinie vorübergehend zurück, benachrichtigt anschließend einen Administrator und wartet darauf, dass dieser sie genehmigt oder ablehnt. Sie können diesen Workflow erweitern, um automatisch Korrekturen vorzunehmen, beispielsweise durch die Anwendung alternativer Aktionen oder die Beschränkung von Aktionen auf bestimmte ARNs. Sehen Sie sich dieses Beispiel hier in Aktion an.

Reagieren Sie auf betriebliche Ereignisse in Ihrem AWS-Konto

Sie können den betrieblichen Aufwand für die Wartung Ihrer AWS-Cloud-Infrastruktur reduzieren, indem Sie die Reaktion auf Betriebsereignisse für Ihre AWS-Ressourcen automatisieren. Amazon EventBridge bietet einen nahezu in Echtzeit ablaufenden Strom von Systemereignissen, die die Änderungen und Benachrichtigungen für Ihre AWS-Ressourcen beschreiben. Aus diesem Datenstrom können Sie Regeln erstellen, um bestimmte Ereignisse an AWS Step Functions, AWS Lambda und andere AWS-Services zur weiteren Verarbeitung und für automatisierte Aktionen weiterzuleiten. In diesem Beispiel wird ein Workflow für AWS Step Functions auf der Grundlage eines Ereignisses ausgelöst, das von AWS-Servicestatus stammt. AWS überwacht proaktiv beliebte Code-Repository-Seiten auf IAM-Zugangsschlüssel, die öffentlich zugänglich gemacht wurden. Lassen Sie uns annehmen, dass ein IAM-Zugangsschlüssel auf GitHub veröffentlicht wurde. AWS-Servicestatus erzeugt ein AWS_RISK_CREDENTIALS_EXPOSED-Ereignis im AWS-Konto, das sich auf den exponierten Schlüssel bezieht. Eine konfigurierte Regel von Amazon Eventbridge erkennt dieses Ereignis und ruft einen Workflow für Step Functions auf. Mithilfe von AWS-Lambda-Funktionen löscht der Workflow dann den exponierten IAM-Zugangsschlüssel, fasst die jüngsten API-Aktivitäten für den exponierten Schlüssel zusammen und sendet die zusammenfassende Nachricht an ein Amazon-SNS-Thema, um die Abonnenten zu benachrichtigen – in dieser Reihenfolge. Sehen Sie sich dieses Beispiel hier in Aktion an.

Synchronisieren Sie Daten zwischen Quell- und Ziel-S3-Buckets

Sie können Amazon S3 verwenden, um eine statische Website zu hosten, und Amazon CloudFront, um die Inhalte weltweit zu verteilen. Als Website-Betreiber benötigen Sie möglicherweise zwei S3-Buckets für das Hochladen Ihrer Website-Inhalte: eines für das Staging und Testen und eines für die Produktion. Sie wollen den Produktions-Bucket mit allen Änderungen aus dem Staging-Bucket aktualisieren, ohne bei jeder Aktualisierung Ihrer Website einen neuen Bucket von Grund auf neu erstellen zu müssen. In diesem Beispiel führt der Workflow von Step Functions Aufgaben in zwei parallelen und unabhängigen Schleifen aus: Eine Schleife kopiert alle Objekte vom Quell-Bucket in den Ziel-Bucket, lässt aber die bereits im Ziel-Bucket vorhandenen Objekte aus. Die zweite Schleife löscht alle Objekte im Ziel-Bucket, die im Quell-Bucket nicht gefunden wurden. Eine Reihe von AWS-Lambda-Funktionen führt die einzelnen Schritte aus: Validieren der Eingabe, Abrufen der Objektlisten aus Quell- und Ziel-Buckets und Kopieren oder Löschen von Objekten in Stapeln. Sehen Sie sich dieses Beispiel mit dem dazugehörigen Code hier im Detail an. Erfahren Sie hier mehr darüber, wie Sie parallele Ausführungszweige in Ihrem Zustandsautomaten erstellen können.

Datenverarbeitung und ETL-Orchestrierung

Entwickeln Sie eine Datenverarbeitungspipeline für Streaming-Daten

In diesem Beispiel hat Freebird eine Datenverarbeitungspipeline entwickelt, um Webhook-Daten aus mehreren Quellen in Echtzeit zu verarbeiten und Lambda-Funktionen auszuführen, die die Daten modifizieren. In diesem Anwendungsfall werden Webhook-Daten von mehreren Drittanbieteranwendungen über Amazon API Gateway an einen Datenstrom von Amazon Kinesis gesendet. Eine AWS-Lambda-Funktion ruft Daten aus diesem Kinesis-Strom ab und stößt einen Express-Workflow an. Dieser Workflow durchläuft eine Reihe von Schritten zur Validierung, Verarbeitung und Normalisierung dieser Daten. Am Ende aktualisiert eine Lambda-Funktion das SNS-Thema, das Nachrichten an nachgelagerte Lambda-Funktionen für nächste Schritte durch eine SQS-Warteschlange auslöst. Sie können bis zu 100 000 Aufrufe dieses Workflows pro Sekunde für die Skalierung der Datenverarbeitungspipeline verwenden.

Automatisieren Sie Schritte eines ETL-Prozesses

Sie können Step Functions verwenden, um alle Schritte eines ETL-Prozesses mit verschiedenen Datenquellen und Zielen zu orchestrieren. 

In diesem Beispiel aktualisiert der ETL-Workflow von Step Functions Amazon Redshift immer dann, wenn neue Daten im S3-Quell-Bucket verfügbar sind. Der Zustandsautomat von Step Functions initiiert einen AWS-Batch-Auftrag und überwacht seinen Status auf Fertigstellung oder Fehler. Der AWS-Batch-Auftrag holt das .sql-Skript des ETL-Workflows aus der Quelle, also Amazon S3, und aktualisiert das Ziel, also Amazon Redshift, über einen PL/SQL-Container. Die SQL-Datei enthält den SQL-Code für jeden Schritt der Datentransformation. Sie können den ETL-Workflow mit einem EventBridge-Ereignis oder manuell über die AWS-CLI oder mithilfe von AWS-SDKs oder sogar einem benutzerdefinierten Automatisierungsskript auslösen. Sie können einen Administrator über SNS benachrichtigen, das bei Fehlern in einem beliebigen Schritt des Workflows oder am Ende der Workflow-Ausführung eine E-Mail auslöst. Dieser ETL-Workflow ist ein Beispiel dafür, wie Sie Standard-Workflows verwenden können. Sehen Sie sich dieses Beispiel hier im Detail an. Hier erfahren Sie mehr über das Einreichen eines AWS-Batch-Auftrags anhand eines Beispielprojekts.

Ausführen einer ETL-Pipeline mit mehreren parallelen Aufträgen

ETL-Vorgänge (ETL – Extrahieren, Laden und Transformieren) wandeln Rohdaten in nützliche Datensätze um, so dass aus Daten verwertbare Erkenntnisse werden. 

Sie können Step Functions verwenden, um mehrere ETL-Aufträge parallel auszuführen, wenn Ihre Quelldatensätze zu unterschiedlichen Zeiten verfügbar sind. Jeder ETL-Auftrag wird erst ausgelöst, wenn der entsprechende Datensatz verfügbar ist. Diese ETL-Aufträge können von verschiedenen AWS-Services verwaltet werden, wie AWS, Glue, Amazon EMR, Amazon Athena oder sonstigen Nicht-AWS-Services.
In diesem Beispiel werden zwei separate ETL-Aufträge auf AWS Glue ausgeführt, die einen Vertriebsdatensatz und einen Marketingdatensatz verarbeiten. Sobald beide Datensätze verarbeitet sind, kombiniert ein dritter ETL-Auftrag die Ausgaben der vorherigen ETL-Aufträge, um einen kombinierten Datensatz zu erstellen. Der Workflow von Step Functions wartet, bis die Daten in S3 verfügbar sind. Während der Haupt-Workflow nach einem Zeitplan gestartet wird, wird ein EventBridge-Ereignishandler auf einem Amazon-S3-Bucket konfiguriert, so dass die Zustandsmaschine den ETL-Auftrag „ProcessSalesData“ oder „ProcessMarketingData“ auslösen kann, wenn Vertriebs- oder Marketing-Datensatzdateien in den Bucket hochgeladen werden. Dies hängt davon ab, welcher Datensatz verfügbar wurde. 

Sehen Sie sich diese Architektur hier im Detail an, um die ETL-Orchestrierung in Ihrem AWS-Konto einzurichten. Erfahren Sie hier, wie Sie einen AWS-Batch-Auftrag über Step Functions verwalten.

Datenverarbeitung in großem Maßstab

Sie können Step Functions verwenden, um über mehrere Millionen Elemente in einem Datensatz zu iterieren, beispielsweise ein JSON-Array, eine Liste von Objekten in S3 oder eine CSV-Datei in einem S3-Bucket. Sie können die Daten dann parallel und in hoher Gleichzeitigkeit verarbeiten.

In diesem Beispiel verwendet der Workflow von Step Functions einen Zuordnungsstatus im verteilten Modus, um eine Liste von S3-Objekten in einem S3-Bucket zu verarbeiten. Step Functions iteriert über die Liste der Objekte und startet dann Tausende von gleichzeitig ablaufenden, parallelen Workflows, um die Elemente zu verarbeiten. Sie können Datenverarbeitungsservices wie Lambda verwenden, die Ihnen beim Schreiben von Code in jeder unterstützten Sprache helfen. Sie können auch aus über 220 speziell entwickelten AWS-Services wählen, um sie in den Workflow des Zuordnungsstatus aufzunehmen. Sobald die Ausführung untergeordneter Workflows abgeschlossen ist, kann Step Functions die Ergebnisse in einen S3-Bucket exportieren, damit sie zur Überprüfung oder zur weiteren Verarbeitung zur Verfügung stehen.

Diagramm für die Datenverarbeitung in großem Maßstab

Betrieb von Machine Learning

Führen Sie einen ETL-Auftrag aus und erstellen, trainieren und implementieren Sie ein Machine-Learning-Modell

In diesem Beispiel läuft ein Step-Functions-Workflow nach einem von EventBridge ausgelösten Zeitplan, der einmal am Tag ausgeführt wird. Der Workflow startet mit der Prüfung, ob neue Daten in S3 verfügbar sind. Anschließend führt er einen ETL-Auftrag zur Umwandlung der Daten durch. Danach trainiert er ein Machine-Learning-Modell auf diesen Daten und setzt es mit Hilfe von Lambda-Funktionen ein, welche einen SageMaker-Auftrag auslösen und auf den Abschluss warten, bevor der Workflow zum nächsten Schritt übergeht. Schließlich löst der Workflow eine Lambda-Funktion aus, um Vorhersagen zu erstellen, die in S3 gespeichert werden. Gehen Sie hier Schritt für Schritt vor, um diesen Workflow zu erstellen.

Automatisieren Sie einen Machine-Learning-Workflow mit dem Datenwissenschaft-SDK von AWS Step Functions

Das Datenwissenschaft-SDK von AWS Step Functions ist eine Open-Source-Bibliothek, mit der Sie Workflows erstellen können, die Machine Learning-Modelle mit Amazon SageMaker und AWS Step Functions verarbeiten und veröffentlichen. Das SDK bietet eine Python-API, die jeden Schritt einer Machine-Learning-Pipeline abdeckt – trainieren, abstimmen, transformieren, modellieren und Endpunkte konfigurieren. Sie können diese Workflows direkt in Python und in Jupyter-Notebooks verwalten und ausführen. Das folgende Beispiel veranschaulicht die Schritte zum Trainieren und Transformieren eines Machine-Learning-Workflows. Der Trainingsschritt startet einen Sagemaker-Trainingsauftrag und gibt die Modellartefakte an S3 aus. Der Schritt zum Speichern des Modells erstellt ein Modell auf SageMaker unter Verwendung der Modellartefakte aus S3. Der Transformationsschritt startet einen SageMaker-Transformationsauftrag. Der Schritt zur Erstellung der Endpunktkonfiguration definiert eine Endpunktkonfiguration auf SageMaker. Im Schritt zur Erstellung des Endpunkts wird das trainierte Modell auf dem konfigurierten Endpunkt bereitgestellt. Sehen Sie sich das Notebook hier an.

Medienverarbeitung

Extrahieren Sie Daten aus PDF-Dateien oder Bildern zur Verarbeitung

In diesem Beispiel erfahren Sie, wie Sie AWS Step Functions, AWS Lambda und Amazon Textract kombinieren, um eine PDF-Rechnung zu scannen und deren Text und Daten zu extrahieren, um eine Zahlung zu tätigen. Amazon Textract analysiert den Text und die Daten aus der Rechnung und löst für jeden erfolgreichen Abschluss eines Auftrags einen Step-Functions-Workflow über SNS, SQS und Lambda aus. Der Workflow beginnt mit einer Lambda-Funktion, welche die Ergebnisse einer erfolgreichen Rechnungsanalyse in S3 speichert. Dies löst eine weitere Lambda-Funktion aus, die das analysierte Dokument verarbeitet, um festzustellen, ob eine Zahlung für diese Rechnung verarbeitet werden kann. Anschließend werden die Informationen in DynamoDB aktualisiert. Wenn die Rechnung bearbeitet werden kann, prüft der Workflow, ob die Rechnung zur Zahlung freigegeben ist. Falls nicht, wird ein Prüfer über SNS benachrichtigt, um die Rechnung manuell zu genehmigen. Wenn sie genehmigt wurde, archiviert eine Lambda-Funktion die bearbeitete Rechnung und beendet den Workflow. Sehen Sie sich dieses Beispiel mit Code hier im Detail an.

Teilen und transkodieren Sie Videos mithilfe massiver Parallelisierung

In diesem Beispiel hat Thomson Reuters eine Serverless-Split-Video-Transcoding-Lösung mit AWS Step Functions und AWS Lambda erstellt. Sie mussten etwa 350 Nachrichtenvideoclips pro Tag in 14 Formate für jeden Videoclip transkodieren – und das so schnell wie möglich. Die Architektur verwendet FFmpeg, einen Open-Source-Audio- und Video-Encoder, der eine Mediendatei nur seriell verarbeitet. Um den Durchsatz zu verbessern und den Kunden ein optimales Erlebnis zu bieten, bestand die Lösung in der Verwendung von AWS Step Functions und Amazon S3 für die parallele Verarbeitung. Jedes Video wird in 3-Sekunden-Segmente aufgeteilt, parallel verarbeitet und am Ende wieder zusammengesetzt.

Der erste Schritt ist eine Lambda-Funktion namens Locate keyframes (Keyframes suchen), welche die für das Zerschneiden des Videos erforderlichen Informationen identifiziert. Die Lambda-Funktion Split Video(Video aufteilen) teilt dann das Video auf der Grundlage der Schlüsselframes auf und speichert die Segmente in einem S3-Bucket. Jedes Segment wird dann parallel von Lambda-Funktionen verarbeitet und in einen Ziel-Bucket gelegt. Der Zustandsautomat verfolgt die Verarbeitung, bis alle N-Segmente verarbeitet sind. Danach wird eine abschließende Lambda-Funktion ausgelöst, die die verarbeiteten Segmente verkettet und das resultierende Video in einem S3-Bucket speichert.

Erstellen Sie eine Serverless-Videotranskodierungspipeline mit Amazon MediaConvert

In diesem Beispiel erfahren wir, wie AWS Step Functions, AWS Lambda und AWS Elemental MediaConvert gemeinsam orchestriert werden können, um eine vollständig verwaltete Transkodierung für On-Demand-Inhalte zu ermöglichen. Dieser Anwendungsfall eignet sich für Unternehmen mit einem hohen oder wechselnden Volumen an Quellvideoinhalten, die Videoinhalte in der Cloud verarbeiten oder Workloads in Zukunft in die Cloud verlagern möchten.
Die Video-on-Demand-Lösung besteht aus drei Unter-Workflows, die von einem Haupt-Workflow mit Step Functions ausgelöst werden:

  • Aufnahme: Dies könnte ein Express-Workflow sein. Eine in S3 abgelegte Quelldatei löst diesen Workflow aus, um Daten aufzunehmen.
  • Verarbeitung: Dieser Workflow berücksichtigt die Höhe und Breite des Videos und erstellt ein Codierungsprofil. Nach der Verarbeitung wird ein Codierungsauftrag über AWS Elemental MediaConvert ausgelöst.
  • Veröffentlichung: Im letzten Schritt wird geprüft, ob die Elemente in den Ziel-S3-Buckets verfügbar sind. Der Administrator wird benachrichtigt, dass der Auftrag abgeschlossen ist.

Erste Schritte in AWS Step Functions

Besuchen Sie die Seite für Erste Schritte
Sind Sie startbereit?
An der AWS Step Functions-Konsole anmelden
Haben Sie Fragen?
Kontakt