Blog

Optimierung von AWS Step Functions: Einblicke vom Amsterdam Summit

Simon Karman

Simon Karman

Aktualisiert Oktober 14, 2025
4 Minuten

Gestern nahm ich am AWS Summit 2025 in Amsterdam teil, wo ich an einer Sitzung über AWS Step Functions teilnahm, die von Adriaan de Jonge, einem ehemaligen Xebia-Kollegen, geleitet wurde. Die Sitzung bot praktische Einblicke in die Optimierung der Workflow-Orchestrierung mit Step Functions. Ich habe meine wichtigsten Erkenntnisse zusammengefasst, die Ihnen helfen können, Ihre serverlosen Architekturen zu verbessern.

VS Code Erweiterung Vorlage

Das Schreiben von Step Functions mit Infrastructure as Code (IaC) kann lästig sein, wenn Sie JSON aus der AWS-Konsolen-UI kopieren müssen. Das AWS Toolkit für VS Code löst dieses Problem, indem es Ihnen die Entwicklung und Visualisierung Ihrer Workflows direkt in Ihrer IDE ermöglicht. Sie können Step Functions visuell erstellen, bearbeiten und testen, ohne das Hin- und Herkopieren. Das macht den Entwicklungsprozess viel effizienter und verbessert die Developer Experience.

Von Lambda-lith zu Schrittfunktion

Ein häufiges Anti-Muster in der serverlosen Architektur ist die Erstellung eines "Lambda-lith" - einer monolithischen Lambda-Funktion, die zu viele Aufgaben übernimmt. Diese Lambda-Liths können in Step Functions mit mehreren kleineren, spezialisierten Lambdas zerlegt werden. Diese Dekomposition bietet mehrere Vorteile:

  • Sicherheit: Jedes Lambda kann seine eigenen IAM-Berechtigungen haben, die auf seine spezifischen Bedürfnisse zugeschnitten sind
  • Leistung: Spezialisierte Funktionen können für ihre spezifischen Aufgaben optimiert werden
  • Konfiguration: Unterschiedliche Konfigurationen (z.B. Timeout-Einstellungen) für verschiedene Schritte, je nach deren Anforderungen

HTTP REST Arbeitsablauf

Während der Sitzung wurde auch demonstriert, wie Sie RESTful APIs direkt mit Step Functions und API Gateway erstellen und dabei Lambda-Funktionen und die damit verbundenen Kaltstarts vollständig umgehen können. Durch die Konfiguration eines Workflows, der die eingehende HTTP-Methode (GET, POST, PUT, DELETE) prüft und an die entsprechende DynamoDB-Operation weiterleitet, können Sie eine voll funktionsfähige REST-API mit minimaler Latenzzeit erstellen. Jede Zeile Code, die Sie nicht schreiben, ist Code, den Sie nicht pflegen müssen.

So kann beispielsweise eine GET-Anfrage eine GetItem-Operation auslösen, während POST ein PutItem auf Ihrer DynamoDB-Tabelle ausführt. Dieses direkte Integrationsmuster beseitigt nicht nur Kaltstartverzögerungen, sondern vereinfacht auch Ihre Architektur und senkt die Kosten, indem es unnötige Lambda-Funktionen aus dem Anfragepfad entfernt. Es ist besonders nützlich für APIs, die konstant schnelle Antwortzeiten benötigen oder sporadischen Datenverkehr verarbeiten, bei dem Kaltstarts besonders auffällig wären.

Jede Zeile Code, die Sie nicht schreiben, ist Code, den Sie nicht pflegen müssen.

Emittieren und Warten statt Schleife

Für Situationen, die traditionell ein Polling erfordern, empfahl Adriaan das Muster "Emit and Wait" anstelle der Implementierung von Schleifen. Dieses Muster verwendet EventBridge, um Ereignisse auszusenden und dann auf Rückruf-Token zu warten. So entstehen effizientere und reaktionsschnellere Arbeitsabläufe, die keine Ressourcen für ständige Überprüfungen verschwenden.

Verwenden Sie intrinsische Funktionen und JSON-Daten, wo immer möglich

Der Schwerpunkt der Sitzung lag auf der Verwendung der integrierten Funktionen von Step Functions zur Datentransformation, anstatt Lambda-Funktionen für einfache Operationen zu erstellen. Dazu gehören sowohl systemeigene Funktionen (wie States.StringToJson, States.Format usw.) als auch die kürzlich hinzugefügte JSONata-Unterstützung.

JSONata ist besonders leistungsfähig, da es eine Abfrage- und Transformationssprache bietet, die speziell für JSON-Daten entwickelt wurde. Mit Ausdrücken wie können Sie komplexe Datenmanipulationen direkt in Ihrer Workflow-Definition durchführen. Weitere Informationen finden Sie hier: JSONata.

Sowohl intrinsische Funktionen als auch JSONata reduzieren den Overhead, verbessern die Leistung und senken die Kosten, da sie keine separaten Lambda-Aufrufe erfordern. Adriaan zeigte mehrere Beispiele, bei denen das Ersetzen eines Transformations-Lambdas durch einen JSONata-Ausdruck nicht nur den Arbeitsablauf vereinfachte, sondern auch die Ausführungsgeschwindigkeit durch den Wegfall der Kaltstartstrafe erheblich verbesserte.

Testschritt in Isolation

Ein praktischer Tipp war, jeden Schritt einzeln zu testen, bevor Sie ihn zu einem Workflow kombinieren. Dieser Ansatz macht die Fehlersuche viel einfacher, da Sie überprüfen können, ob jede Komponente korrekt funktioniert, bevor Sie sich mit der Komplexität des gesamten Workflows befassen. Speziell bei JSONata-Transformationen können Sie durch unabhängige Tests sicherstellen, dass Ihre Datenmanipulationen wie erwartet funktionieren.

Was hier hilft, ist die Möglichkeit, die Ein- und Ausgaben für jede Aufgabe in einem Workflow zu überprüfen. Diese Debugging-Funktion macht es viel einfacher, den Datenfluss zu verstehen und Probleme zu beheben. Sie können genau sehen, was bei jedem Schritt ein- und ausgeht, was bei komplexen Workflows viel Zeit spart.

Fazit

AWS Step Functions bieten eine leistungsstarke Möglichkeit, serverlose Anwendungen zu orchestrieren, und die Anwendung dieser Best Practices kann Ihnen dabei helfen, wartbare, kostengünstige und robuste Workflows zu erstellen. Wenn Sie mehr erfahren möchten, sehen Sie sich die Ressourcen auf ServerlessLand an, wo Sie weitere Beispiele und Tutorials von der re:Invent 2024 finden.

Verfasst von

Simon Karman

Simon Karman is a cloud engineer and consultant that builds effective cloud solutions ranging from serverless applications, to apis, to CICD pipelines, and to infrastructure as code solutions in both AWS and GCP.

Contact

Let’s discuss how we can support your journey.