Kurs
Jedes komplexe System entsteht durch das Orchestrieren mehrerer Teilsysteme. Solche Systeme zu bauen und zu betreiben, ist eine gängige Herausforderung — besonders in Cloud-Umgebungen.
Zum Glück gibt es inzwischen eine ganze Reihe von Tools, die die Orchestrierung von Workflows — unabhängig vom Komplexitätsgrad — vereinfachen. Unter diesen Tools stechen die AWS Step Functions mit hohem Nutzwert und vielen Vorteilen hervor.
In diesem Artikel erfährst du, wie du Step Functions zur Orchestrierung von Workflows in der AWS Cloud nutzt. Wir starten mit einer Einordnung, was Step Functions sind, und beleuchten Vorteile sowie Kernfunktionen.
Anschließend führen wir dich durch die ersten Schritte mit Step Functions — vom Einrichten der AWS-Umgebung bis zur Orientierung in der Oberfläche. Darauf aufbauend gehen wir Schritt für Schritt durch das Erstellen und Deployen eines praxisnahen Workflows.
Was sind AWS Step Functions?
AWS Step Functions ist ein serverloser Orchestrierungsdienst für visuelle Workflows. Er koordiniert AWS Lambda-Funktionen und weitere AWS-Ressourcen nahtlos miteinander.
Die Integrationsmöglichkeiten sind umfangreich: Unter anderem lassen sich Amazon EC2, Amazon ECS, On-Premises-Server, Amazon API Gateway und Amazon SQS-Queues anbinden. So können Workflows ein breites AWS-Ökosystem abdecken.
Dank dieser Vielseitigkeit eignen sich AWS Step Functions für zahlreiche Anwendungsfälle. Ob Bestellabwicklung, Datenverarbeitung, Webanwendungen oder das Orchestrieren komplexer Aufgabenfolgen — Step Functions bieten eine robuste Basis für Automatisierung und Workflow-Management.
Schlüsselfunktionen und Vorteile
Bevor wir in die technischen Details eintauchen, schauen wir uns die wichtigsten Funktionen und Vorteile an.
Kernfunktionen
Step Functions stellen diverse Funktionen bereit, um Workflows einfacher zu erstellen und zu verwalten. Die wichtigsten sind:
- HTTPS-Endpoints-Integration: Workflows können beliebige Webservices ansprechen, die HTTPS unterstützen. So bindest du unterschiedlichste Web-APIs in deine Prozesse ein.
- Koordination verteilter Komponenten: Ermöglicht das Zusammenspiel verteilter Systeme — entscheidend für komplexe Anwendungen mit vielen Services.
- Integriertes Zustandsmanagement:Der Fortschritt jeder Ausführung wird genau nachverfolgt. Der Anwendungszustand bleibt während der Ausführung erhalten, inklusive der Datenübergabe zwischen den Schritten.
- Human-in-the-loop-Freigaben: Menschliche Entscheidungen sind in der Automatisierung oft unverzichtbar. Diese Funktion erlaubt manuelle Genehmigungen innerhalb eines automatisierten Workflows.
Vorteile
Die oben genannten Funktionen bringen Entwicklerinnen und Entwicklern wie auch Organisationen spürbare Vorteile in Entwicklung und Betrieb.
|
Für Entwickler |
Für Organisationen |
|
|
Praxisbeispiele und Use Cases
Angesichts dieser Funktionen und Vorteile ist klar: Step Functions können in vielen Bereichen eine zentrale Rolle spielen und Unternehmen helfen, Workflows zu entwerfen, zu automatisieren und effizient zu skalieren.
Im Folgenden siehst du Beispiele, wie verschiedene Branchen AWS Step Functions nutzen, um wettbewerbsfähiger, innovativer und effizienter zu arbeiten.
Koordination von Microservices
Unternehmen mit Microservice-Architekturen setzen häufig AWS Step Functions ein, um die Interaktionen zwischen Services zu steuern.
Ein Handelsunternehmen könnte Step Functions beispielsweise nutzen, um Nutzer-Authentifizierung, Bestandsführung, Zahlungsabwicklung und Versand zu orchestrieren — für ein nahtloses Einkaufserlebnis.
Security und IT-Betrieb
AWS Step Functions automatisieren wiederkehrende Aufgaben wie Sicherheitschecks, Systemupdates und Compliance-Prüfungen.
In der IT-Sicherheit lassen sich etwa Incident-Response-Workflows modellieren, um Reaktionszeiten zu verkürzen und Fehler zu reduzieren — vom ersten Alarm bis zur Problemlösung.
Datenworkflows und ETL-Prozesse
Für datenintensive Unternehmen orchestrieren AWS Step Functions die Datenverarbeitung und ETL-Aufgaben: von der Extraktion aus mehreren Quellen über die Transformation in ein einheitliches Format bis zum Laden in Analyseplattformen oder Data Lakes.
Ein Analytics-Anbieter kann so seine Datenpipeline automatisieren und Daten effizient für strategische Entscheidungen aufbereiten.
Machine-Learning-Betrieb
Auch im MLOps-Umfeld punkten Step Functions — etwa bei Datenaufbereitung, Modelltraining, Evaluierung und Deployment.
Ein Healthtech-Unternehmen könnte Step Functions nutzen, um die regelmäßige Nachschulung diagnostischer Algorithmen zu steuern und die Modellgüte mit neuen Daten stabil zu halten.
Medienverarbeitungspipelines
In Medien und Entertainment orchestrieren AWS Step Functions komplexe Workflows wie Video-Encoding, Bildverarbeitung und Inhaltsanalyse.
Ein Medienhaus kann so sicherstellen, dass neu hochgeladene Inhalte automatisch konvertiert, Thumbnails generiert und Metadaten angereichert werden — bevor die Veröffentlichung erfolgt.
Erste Schritte mit AWS Step Functions
Später im Artikel kombinieren wir Step Functions mit weiteren AWS-Services. Zunächst solltest du jedoch die Grundlagen verstehen, bevor es an fortgeschrittene Konzepte geht.
Ziel dieses Abschnitts ist es, dich beim Einstieg in AWS Step Functions zu unterstützen — von den Bausteinen bis zur Navigation in der Oberfläche.
Bausteine von Step Functions
Jedes System besteht aus mehreren Komponenten — Step Functions ebenfalls. Die Basis bilden: (1) Zustandsmaschinen und (2) Tasks.
Am besten verstehen wir die Konzepte anhand eines Beispiels.
- State Machines (Zustandsmaschinen):Ein Workflow, der Reihenfolge, Bedingungen und den Gesamtablauf von Tasks definiert. Kurz gesagt: Die Zustandsmaschine beschreibt den Workflow.
- Tasks:Eine Aktion, die eine konkrete Aufgabe ausführt. Sie erhält Eingaben und liefert Ausgaben — z. B. eine Datenbankabfrage, ein API-Aufruf oder das Triggern einer Lambda-Funktion.
Betrachten wir einen Anwendungsfall: die Kita-Anmeldung per AWS Step Functions. Bevor wir Step Functions einsetzen, skizzieren wir die Gesamtschritte:
- Anmeldedaten erfassen: Als Erstes werden die Angaben der Eltern gesammelt. Das könnte über ein Webformular passieren; in unserem Beispiel verwenden wir JSON. Beim Absenden wird eine Lambda-Funktion ausgelöst, die die Daten an den nächsten Schritt weitergibt.
- Anmeldedaten prüfen: Eine Lambda-Funktion verifiziert, ob alle Pflichtfelder ausgefüllt sind und ob das Alter des Kindes in den zulässigen Bereich der Kita fällt. Bei Erfolg geht es weiter, andernfalls erhalten die Eltern eine Fehlermeldung.
- Verfügbarkeit prüfen:Nach erfolgreicher Prüfung kontrolliert eine weitere Lambda-Funktion, ob Plätze frei sind. Ist das der Fall, geht es weiter — sonst werden die Eltern informiert, dass die Kita voll ist.
- Anmeldung bestätigen:Zum Schluss bestätigt eine Lambda-Funktion die Anmeldung und sendet eine Bestätigung an die Eltern — inklusive Startdatum und Gebühren.
Dieser Workflow umfasst eine Zustandsmaschine mit vier Haupttasks, alle selbsterklärend.
checkInformationcheckAgeRangecheckSpotsAvailabilityconfirmRegistration
Kita-Anmeldeworkflow mit AWS Step Functions
Deine erste AWS Step Function erstellen
Bisher lag der Fokus auf Theorie. Jetzt wird es technisch: von den Voraussetzungen über die Implementierung eines End-to-End-Workflows bis zum Deployment.
Voraussetzungen für die Implementierung
Bevor wir ins Detail gehen, hier die Voraussetzungen für eine erfolgreiche Umsetzung:
- AWS-Konto: Erforderlich für den Zugriff auf AWS-Services — ein Konto lässt sich auf der AWS-Website anlegen.
- Grundkenntnisse in AWS-Services: Für diesen Use Case solltest du mit AWS Lambda und dem Amazon Simple Notification Service (SNS) vertraut sein.
- JSON-Kenntnisse:Ein grundlegendes Verständnis von JSON hilft, Ein- und Ausgabeformate nachzuvollziehen.
- AWS IAM: Kenntnisse in AWS Identity and Access Management (IAM) sind nötig, um die richtigen Berechtigungen für die eingesetzten Lambda-Funktionen zu setzen.
- Coding-Skills:Grundlegende Python-Kenntnisse sind erforderlich, um die Lambda-Funktionen zu schreiben.
Die AWS-Step-Functions-Oberfläche navigieren
Schauen wir uns die Oberfläche von Step Functions an. Nach dem Login in dein AWS-Konto gehst du in vier Schritten vor:
- Gib oben in der Suche „Step Functions“ ein.
- Wähle das entsprechende Icon aus den Ergebnissen.
- Klicke auf „Get Started“, um deine erste Step Function zu erstellen.
- Da wir eine eigene Zustandsmaschine anlegen möchten, wähle den Tab „Create your own“.

Vier Hauptschritte, um die Step-Functions-Oberfläche zu öffnen
Nach dem vierten Schritt kannst du im Tab „Design“ die Zustandsmaschine entwerfen. Dort findest du drei Bereiche: „Actions“, „Flow“ und „Patterns“.

Die drei Hauptkomponenten des „Design“-Tabs
- Actions: Einzelne Operationen innerhalb des Workflows, jeweils zugeordnet zu bestimmten AWS-Services — etwa das Ausführen einer Lambda-Funktion, das Publizieren einer SNS-Nachricht, das Starten eines ECS-Tasks oder eines Jobs in AWS Glue.
- Flow: Steuert den Ausführungspfad der Zustandsmaschine. Dazu zählen „Choice“ (Verzweigung), „Parallel“ (parallele Ausführung), „Map“ (Iteration über eine Sammlung), „Pass“ (No-Op oder Anreicherung von Zustandsdaten), „Wait“ (Wartezeiten), „Success“ (erfolgreiches Ende) und „Fail“ (Abbruch bei Fehlern).
- Patterns:Vordefinierte Vorlagen und Best Practices für gängige Szenarien. Beispiele: Datenverarbeitung für S3-Objekte, JSON- oder CSV-Dateien oder generische Muster wie ein Job-Poller für asynchrone Aufträge.
Den Workflow erstellen
Der erste Beispiel-Workflow zeigte die Kernkomponenten einer Zustandsmaschine. Jetzt gehen wir in die Umsetzung.
Wir benötigen vier Lambda-Funktionen, jeweils für einen Task.
Die folgenden sieben Schritte zeigen, wie du eine Lambda-Funktion anlegst. Der Prozess ist für alle vier gleich — nur der Funktionsinhalt unterscheidet sich.
Den vollständigen Code findest du auf der GitHub-Seite. Auch wenn der Code leicht verständlich ist, empfehlen wir, den gesamten Artikel durchzugehen, um das beste Verständnis zu erhalten.
7 Hauptschritte zum Erstellen einer Lambda-Funktion
Nach Abschluss der sieben Schritte siehst du ein Fenster mit wichtigen Informationen, darunter:
- Der Name der Funktion
- Der Link zur Amazon Resource Name (ARN)
- Der integrierte Bereich, in dem du die Logik der Funktion implementierst
Details der Lambda-Funktion checkInformation
Wiederhole den Prozess für die drei weiteren Tasks (Funktionen) checkAgeRange, checkSpotsAvailability und confirmRegistration.
Ein Beispiel für das Eingabe-JSON findest du unten. Es ist wichtig, die Struktur zu verstehen, da sie die Implementierung der Funktionen beeinflusst.
- Das JSON enthält Angaben zum Kind (Vorname, Nachname, Geburtsdatum).
- Außerdem sind Details zu den Eltern, die Wochentage für die Betreuung sowie zusätzliche Hinweise enthalten.
{
"registration_info": {
"child": {
"firstName": "Mohamed",
"lastName": "Diallo",
"dateOfBirth": "2016-07-01"
},
"parents": {
"mother": {
"firstName": "Aicha",
"lastName": "Cisse",
"email": "aicha.cisse@example.com",
"phone": "123-456-7890"
},
"father": {
"firstName": "Ibrahim",
"lastName": "Diallo",
"email": "ibrahim.diallo@example.com",
"phone": "098-765-4321"
}
},
"daysOfWeek": [
"Monday",
"Tuesday",
"Wednesday",
"Thursday",
"Friday"
],
"specialInstructions": "Mohamed has a peanut allergy."
}
}
Jede Lambda-Funktion übernimmt Folgendes:
|
Funktion |
Beschreibung |
|
|
|
|
|
|
|
|
|
|
|
|
Die Implementierung der einzelnen Funktionen findest du hier:
checkInformation-Funktion
import json
def checkInformation(event, context):
registration_info = event['registration_info']
required_fields = ['child', 'parents', 'daysOfWeek']
for field in required_fields:
if field not in registration_info:
return {
'statusCode': 400,
'body': f'Missing required field: {field}'
}
return {
'statusCode': 200,
'body': json.dumps(registration_info)
}
checkAgeRange-Funktion
import json
import datetime
def checkAgeRange(event, context):
registration_info = json.loads(event['body'])
dob = registration_info['child']['dateOfBirth']
today = datetime.date.today()
dob_date = datetime.datetime.strptime(dob, '%Y-%m-%d').date()
age = today.year - dob_date.year - ((today.month, today.day) < (dob_date.month, dob_date.day))
if age < 2 or age > 5:
return {
'statusCode': 400,
'body': json.dumps('Child is not within the acceptable age range for this daycare.')
}
registration_info['child']['age'] = age
return {
'statusCode': 200,
'body': json.dumps(registration_info)
}
checkSpotsAvailability-Funktion
import json
def checkSpotsAvailability(event, context):
registration_info = json.loads(event['body'])
spots_available = 20 # This should be dynamically determined, not hardcoded
if spots_available <= 0:
return {
'statusCode': 400,
'body': json.dumps('No spots available in the daycare.')
}
return {
'statusCode': 200,
'body': json.dumps(registration_info)
}
confirmRegistration-Funktion
import json
import datetime
def confirmRegistration(event, context):
registration_info = json.loads(event['body'])
age = registration_info['child']['age'] # This was added in the checkAgeRange function
if age >= 2 and age < 3:
fees = 800
elif age >= 3 and age < 4:
fees = 750
elif age >= 4 and age < 5:
fees = 700
else: # age >= 5
fees = 650
start_date = datetime.date.today() + datetime.timedelta(weeks=2)
confirmation_details = {
'fees': fees,
'start_date': start_date.isoformat()
}
response = {**registration_info, **confirmation_details}
return {
'statusCode': 200,
'body': json.dumps(response)
}
Mit allem, was wir vorbereitet haben, können wir nun die Zustandsmaschine für die Kita im grafischen Editor der Step Functions erstellen.
Die finale Zustandsmaschine siehst du unten. Schauen wir uns die wichtigsten Schritte an, die zu diesem Workflow geführt haben:

Zustandsmaschinen-Workflow für den Kita-Use-Case
Bevor wir loslegen, wichtig zu wissen: Das Feld statusCode im Output einer Lambda-Funktion bestimmt den nächsten Zustand in der Zustandsmaschine.
- Bei 200 war der Check erfolgreich und es geht weiter zum nächsten Schritt.
- Bei
statusCode400 ist der Check fehlgeschlagen. Dann geben wir — je nach Task — eine passende Fehlermeldung zurück.
Check Information
- Hier startet die Zustandsmaschine.
- Eine Lambda-Funktion prüft, ob alle Pflichtangaben im Anmeldeformular vorhanden sind.
- Bei vollständigen Angaben geht es weiter. Andernfalls endet der Ablauf mit einem Fail-State und dem Hinweis auf unvollständige Informationen.
Check Age Range
- Dieser Schritt folgt nur bei erfolgreicher Informationsprüfung.
- Eine weitere Lambda-Funktion prüft, ob das Kind im zulässigen Altersbereich liegt.
- Wenn ja, geht es weiter. Wenn nein, endet der Ablauf mit einem Fail-State und dem Hinweis auf ein unzulässiges Alter.
Check Spots Availability
- Diesen Schritt erreichen wir nur nach erfolgreicher Altersprüfung.
- Eine Lambda-Funktion prüft, ob Plätze frei sind.
- Bei freien Plätzen geht es weiter. Sind keine Plätze verfügbar, endet der Ablauf mit einem Fail-State und der entsprechenden Meldung.
Confirm Registration
- Der letzte Schritt — er wird nur erreicht, wenn Plätze verfügbar sind.
- Eine Lambda-Funktion bestätigt die Anmeldung und berechnet die Gebühren abhängig vom Alter des Kindes.
- Der Prozess endet mit einem Success-State, der die Anmeldung bestätigt.
Wenn du mehr über Lambda-Funktionen lernen willst: Streaming Data with AWS Kinesis and Lambda zeigt dir, wie du mit Serverless-Technologien Streamingdaten auf AWS verarbeitest.
IAM-Rollen erstellen
Als Nächstes definieren wir die IAM-Rollen, damit die Step Functions unsere Lambda-Funktionen aufrufen dürfen. Gehe dazu wie folgt vor:

Die ersten neun Schritte zum Erstellen einer IAM-Rolle

Der 10. und 11. Schritt zum Erstellen einer IAM-Rolle
Diese IAM-Rolle kannst du im Tab „Config“ der Zustandsmaschine zuweisen.

Drei Hauptschritte, um die IAM-Rolle zuzuweisen
Nach dem Speichern solltest du die folgende Erfolgsmeldung sehen.

Erfolgsmeldung zur Erstellung der Zustandsmaschine
Wenn alles passt, klickst du oben rechts auf Create, um die Zustandsmaschine zu erstellen.
Illustration der Ausführung der Zustandsmaschine
Workflow deployen und testen
Unser Workflow ist deployed — Zeit für Tests. Wir prüfen zwei Szenarien:
- Ein Fehlerszenario bei gültigem Altersbereich, in dem das Kind, das wir anmelden wollen, älter als 5 Jahre ist. Das entspricht dem initialen JSON.
- Ein Erfolgsszenario, in dem das Kind 3 Jahre alt ist.

Ergebnis eines Erfolgsszenarios

Ergebnis eines Fehlerszenarios
Deine Step Functions optimieren
Optimierung beginnt mit Best Practices. Sie steigern Performance und Wirtschaftlichkeit. Die folgenden Empfehlungen helfen dir, das Maximum aus AWS Step Functions herauszuholen.
- Performance-Best-Practices: Reduziere State-Transitions, setze sinnvolle Timeouts und optimiere deine Lambda-Funktionen.
- Kosten-Best-Practices:Wähle den passenden Typ der Zustandsmaschine (Standard oder Express), behalte Lambda-Kosten im Blick und verstehe das Pricing von Step Functions.
Fazit
Dieser Artikel bietet einen umfassenden Einstieg in AWS Step Functions. Wir haben die wichtigsten Features und Vorteile vorgestellt,
dich durch das Einrichten der AWS-Umgebung und die Oberfläche der Step Functions geführt,
und Schritt für Schritt die erste AWS Step Function erstellt — vom Basis-Workflow bis zu Deployment und Tests. Außerdem haben wir weiterführende Features und Use Cases betrachtet und gezeigt, wie du Step Functions für maximale Effizienz und Kostenvorteile optimierst.
Zum Abschluss
Unsere Artikel AWS-, Azure- und GCP-Services im Vergleich für Data Science & KI und Introduction to AWS Boto in Python sind ideale nächste Schritte.
Der erste vergleicht die wichtigsten Services für Daten- und KI-Projekte — von Data Engineering über Datenanalyse und Data Science bis hin zu datengetriebenen Anwendungen. Das Cheat Sheet hilft dir, das Cloud-Service-Ökosystem der drei großen Plattformen einzuordnen.
Der zweite Kurs ist ein leichter Einstieg in AWS Boto mit Python und zeigt, wie du Cloudtechnologie einsetzt, um Datenworkflows zu optimieren — perfekt, wenn du AWS-Aufgaben in Python automatisieren möchtest.
Auf AWS gibt es viele Services. Der Schlüssel zum Erfolg mit AWS Step Functions ist, die Anforderungen deiner Anwendung zu verstehen und die richtigen Services und Features gezielt zu kombinieren.
Zoumana ist ein vielseitiger Datenwissenschaftler, der sein Wissen gerne mit anderen teilt und anderen etwas zurückgibt. Er erstellt Inhalte auf YouTube und schreibt auf Medium. Er hat Freude am Sprechen, Programmieren und Unterrichten. Zoumana hat zwei Master-Abschlüsse. Den ersten in Informatik mit dem Schwerpunkt Maschinelles Lernen in Paris, Frankreich, und den zweiten in Datenwissenschaft an der Texas Tech University in den USA. Sein beruflicher Werdegang begann als Softwareentwickler bei Groupe OPEN in Frankreich, bevor er als Berater für maschinelles Lernen zu IBM wechselte, wo er End-to-End-KI-Lösungen für Versicherungsunternehmen entwickelte. Zoumana arbeitet bei Axionable, dem ersten nachhaltigen KI-Startup mit Sitz in Paris und Montreal. Dort arbeitete er als Data Scientist und implementierte KI-Produkte, vor allem NLP-Anwendungsfälle, für Kunden aus Frankreich, Montreal, Singapur und der Schweiz. Zusätzlich widmete er 5% seiner Zeit der Forschung und Entwicklung. Zurzeit arbeitet er als Senior Data Scientist bei der IFC, der Weltbankgruppe.




