View a markdown version of this page

Entwicklung von Workflows mit Step Functions - AWS Step Functions

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.

Entwicklung von Workflows mit Step Functions

Wir empfehlen, mit der Erstellung von Workflows in der Step Functions-Konsole und im visuellen Editor von Workflow Studio zu beginnen. Sie können mit einer leeren Arbeitsfläche beginnen oder Startvorlagen für gängige Szenarien auswählen.

Für die Erstellung Ihrer Workflows sind die folgenden Aufgaben erforderlich:

  • Definieren Sie Ihren Arbeitsablauf

  • Ihren Workflow ausführen und debuggen

  • Bereitstellen Ihres Workflows

Sie definieren eine Zustandsmaschine in Amazon States Language. Sie können Ihre Amazon States-Sprachdefinitionen manuell erstellen, aber Workflow Studio wird in Tutorials vorgestellt. Mit Workflow Studio können Sie Ihre Maschinendefinition definieren, die Schritte visualisieren und bearbeiten, Ihren Workflow ausführen und debuggen und die Ergebnisse anzeigen — alles von der Step Functions-Konsole aus.

Arbeiten mit Workflow Studio in Visual Studio Code

Mit dem AWS Toolkit können Sie Workflow Studio in VS Code verwenden, um einzelne Zustände in Ihren Zustandsmaschinen zu visualisieren, zu erstellen und sogar zu testen. Sie geben Zustandseingaben ein und legen Variablen fest, starten den Test und können dann sehen, wie Ihre Daten transformiert werden. Sie können den Arbeitsablauf anpassen und erneut testen. Wenn Sie fertig sind, können Sie die Änderungen anwenden, um den State Machine zu aktualisieren. Weitere Informationen finden Sie unter Arbeiten mit Workflow Studio im AWS Toolkit for Visual Studio Code.

Sie können auch viele Step Functions-Funktionen aus AWS Command Line Interface (AWS CLI) verwenden. Sie können beispielsweise einen Zustandsautomaten erstellen und Ihre vorhandenen Zustandsautomaten auflisten. Sie können Step Functions-Befehle in verwenden, AWS CLI um Ausführungen zu starten und zu verwalten, Aktivitäten abzufragen, Taktschläge von Aufgaben aufzuzeichnen und vieles mehr. Eine vollständige Liste der Step Functions-Befehle, eine Beschreibung der verfügbaren Argumente und Beispiele für ihre Verwendung finden Sie in der AWS CLI Befehlsreferenz. AWS CLI Befehlsreferenz

AWS CLI Die Befehle folgen genau der Amazon States-Sprache, sodass Sie sie verwenden können, AWS CLI um mehr über die API-Aktionen von Step Functions zu erfahren. Sie können Ihr vorhandenes API-Wissen auch verwenden, um Code zu prototypisieren oder Step Functions-Aktionen über die Befehlszeile auszuführen.

Validierung von State-Machine-Definitionen

Sie können die API verwenden, um Zustandsautomaten zu validieren und potenzielle Probleme zu finden, bevor Sie Ihren Workflow erstellen.

Weitere Informationen zur Validierung von Workflows finden Sie ValidateStateMachineDefinition in der API-Referenz für Step Functions.

Um mit der minimalen Einrichtung zu beginnen, können Sie dem Tutorial Creating a Lambda State Machine folgen, das Ihnen zeigt, wie Sie einen Workflow mit einem einzigen Schritt definieren, der eine Lambda-Funktion aufruft, dann den Workflow ausführen und die Ergebnisse anzeigen.

Definieren Sie Ihren Arbeitsablauf

Der erste Schritt bei der Entwicklung Ihres Workflows besteht darin, die Schritte in der Landessprache von Amazon zu definieren. Je nach Ihren Vorlieben und Ihrem Tool können Sie Ihre Step Functions-Zustandsmaschinen in JSON, YAML oder als stringifizierte Amazon States Language (ASL) -Definition definieren.

Die folgende Tabelle zeigt die Unterstützung von ASL-based Definitionsformaten nach Tool.

AWS Werkzeug Unterstützte Formate
Step Functions Console JSON
HTTPS-Service-API Stringifizierte ASL
AWS CLI Stringifizierte ASL
Step-Funktionen: Lokal Stringifizierte ASL
AWS Toolkit for Visual Studio Code JSON, YAML
AWS SAM JSON, YAML
CloudFormation JSON, YAML, stringifizierte ASL

Einzeilige YAML-Kommentare in der State-Machine-Definition einer Vorlage werden nicht in die Definition der erstellten Ressource übernommen. Wenn Sie einen Kommentar beibehalten möchten, sollten Sie die Comment Eigenschaft innerhalb der State-Machine-Definition verwenden. Weitere Informationen finden Sie unter Struktur der Zustandsmaschine.

Mit CloudFormation und AWS SAM können Sie Ihre State-Machine-Definitionen in Amazon S3 (JSON- oder YAML-Format) hochladen und den Amazon S3-Speicherort der Definition in der Vorlage angeben. Weitere Informationen finden Sie auf der Seite AWS::StepFunctions:: StateMachine S3Location.

Die folgenden CloudFormation Beispielvorlagen zeigen, wie Sie dieselbe Zustandsmaschinen-Definition mithilfe verschiedener Eingabeformate bereitstellen können.

JSON with Definition
{ "AWSTemplateFormatVersion": "2010-09-09", "Description": "AWS Step Functions sample template.", "Resources": { "MyStateMachine": { "Type": "AWS::StepFunctions::StateMachine", "Properties": { "RoleArn": { "Fn::GetAtt": [ "StateMachineRole", "Arn" ] }, "TracingConfiguration": { "Enabled": true }, "Definition": { "StartAt": "HelloWorld", "States": { "HelloWorld": { "Type": "Pass", "End": true } } } } }, "StateMachineRole": { "Type": "AWS::IAM::Role", "Properties": { "AssumeRolePolicyDocument": { "Version": "2012-10-17", "Statement": [ { "Action": [ "sts:AssumeRole" ], "Effect": "Allow", "Principal": { "Service": [ "states.amazonaws.com" ] } } ] }, "ManagedPolicyArns": [], "Policies": [ { "PolicyName": "StateMachineRolePolicy", "PolicyDocument": { "Statement": [ { "Action": [ "lambda:InvokeFunction" ], "Resource": "*", "Effect": "Allow" } ] } } ] } } }, "Outputs": { "StateMachineArn": { "Value": { "Ref": "MyStateMachine" } } } }
JSON with DefinitionString
{ "AWSTemplateFormatVersion": "2010-09-09", "Description": "AWS Step Functions sample template.", "Resources": { "MyStateMachine": { "Type": "AWS::StepFunctions::StateMachine", "Properties": { "RoleArn": { "Fn::GetAtt": [ "StateMachineRole", "Arn" ] }, "TracingConfiguration": { "Enabled": true }, "DefinitionString": "{\n \"StartAt\": \"HelloWorld\",\n \"States\": {\n \"HelloWorld\": {\n \"Type\": \"Pass\",\n \"End\": true\n }\n }\n}" } }, "StateMachineRole": { "Type": "AWS::IAM::Role", "Properties": { "AssumeRolePolicyDocument": { "Version": "2012-10-17", "Statement": [ { "Action": [ "sts:AssumeRole" ], "Effect": "Allow", "Principal": { "Service": [ "states.amazonaws.com" ] } } ] }, "ManagedPolicyArns": [], "Policies": [ { "PolicyName": "StateMachineRolePolicy", "PolicyDocument": { "Statement": [ { "Action": [ "lambda:InvokeFunction" ], "Resource": "*", "Effect": "Allow" } ] } } ] } } }, "Outputs": { "StateMachineArn": { "Value": { "Ref": "MyStateMachine" } } } }
YAML with Definition
AWSTemplateFormatVersion: 2010-09-09 Description: AWS Step Functions sample template. Resources: MyStateMachine: Type: 'AWS::StepFunctions::StateMachine' Properties: RoleArn: !GetAtt - StateMachineRole - Arn TracingConfiguration: Enabled: true Definition: # This is a YAML comment. This will not be preserved in the state machine resource's definition. Comment: This is an ASL comment. This will be preserved in the state machine resource's definition. StartAt: HelloWorld States: HelloWorld: Type: Pass End: true StateMachineRole: Type: 'AWS::IAM::Role' Properties: AssumeRolePolicyDocument: Version: 2012-10-17 Statement: - Action: - 'sts:AssumeRole' Effect: Allow Principal: Service: - states.amazonaws.com ManagedPolicyArns: [] Policies: - PolicyName: StateMachineRolePolicy PolicyDocument: Statement: - Action: - 'lambda:InvokeFunction' Resource: "*" Effect: Allow Outputs: StateMachineArn: Value: Ref: MyStateMachine
YAML with DefinitionString
AWSTemplateFormatVersion: 2010-09-09 Description: AWS Step Functions sample template. Resources: MyStateMachine: Type: 'AWS::StepFunctions::StateMachine' Properties: RoleArn: !GetAtt - StateMachineRole - Arn TracingConfiguration: Enabled: true DefinitionString: | { "StartAt": "HelloWorld", "States": { "HelloWorld": { "Type": "Pass", "End": true } } } StateMachineRole: Type: 'AWS::IAM::Role' Properties: AssumeRolePolicyDocument: Version: 2012-10-17 Statement: - Action: - 'sts:AssumeRole' Effect: Allow Principal: Service: - states.amazonaws.com ManagedPolicyArns: [] Policies: - PolicyName: StateMachineRolePolicy PolicyDocument: Statement: - Action: - 'lambda:InvokeFunction' Resource: "*" Effect: Allow Outputs: StateMachineArn: Value: Ref: MyStateMachinele
Entwickeln Sie Workflows mit AWS SDKs

Step Functions wird von den AWS SDKs für Java, .NET, Ruby, PHP, Python (Boto 3) JavaScript, Go und C++ unterstützt. Diese SDKs bieten eine bequeme Möglichkeit, die HTTPS-API-Aktionen von Step Functions in mehreren Programmiersprachen zu verwenden. Sie können Zustandsautomaten, Aktivitäten oder Zustandsautomat-Starter mithilfe der API-Aktionen entwickeln, die von diesen SDK-Bibliotheken bereitgestellt werden. Mithilfe dieser Bibliotheken können Sie auch auf Sichtbarkeitsoperationen zugreifen, um Ihre eigenen Überwachungs- und Berichtstools von Step Functions zu entwickeln. In der Referenzdokumentation finden Sie die aktuellen AWS SDKs und Tools für Amazon Web Services.

Entwickeln Sie Workflows mithilfe von HTTPS-Anfragen

Step Functions bietet Dienstvorgänge, auf die über HTTPS-Anfragen zugegriffen werden kann. Sie können diese Operationen verwenden, um direkt mit Step Functions aus Ihren eigenen Bibliotheken zu kommunizieren. Sie können mithilfe der Service-API-Aktionen Zustandsautomaten, Worker oder Zustandsautomaten-Starter entwickeln. Sie können über die API-Aktionen auch auf Sichtbarkeitsoperationen zugreifen, um Ihre eigenen Überwachungs- und Reporting-Tools zu entwickeln. Einzelheiten finden Sie in der AWS Step Functions API-Referenz.

Entwickeln Sie Workflows mit dem AWS Step Functions Data Science SDK

Datenwissenschaftler können Workflows erstellen, die Modelle für maschinelles Lernen mithilfe von SageMaker KI und Step Functions verarbeiten und veröffentlichen. Sie können in Python auch mehrstufige Workflows für maschinelles Lernen erstellen, die die AWS Infrastruktur in großem Maßstab orchestrieren. Das AWS Step Functions Data Science SDK bietet eine Python-API, mit der Step Functions-Workflows erstellt und aufgerufen werden können. Sie können diese Workflows direkt in Python sowie in Jupyter-Notebooks verwalten und ausführen. Weitere Informationen finden Sie unter: AWS Step Functions Data Science Project auf Github, Data Science SDK-Dokumentation und Beispiele für Jupyter-Notebooks und KI-Beispiele auf. SageMaker GitHub

Ausführen und Debuggen Ihrer Workflows

Sie können Workflows auf verschiedene Arten starten, unter anderem über die Konsole, einen API-Aufruf (z. B. von einer Lambda-Funktion), von Amazon EventBridge und EventBridge Scheduler aus einer anderen Step Functions-Zustandsmaschine. Beim Ausführen von Workflows können Sie eine Verbindung zu Diensten von Drittanbietern herstellen, AWS SDKs verwenden und Daten während der Ausführung bearbeiten. Es gibt verschiedene Tools, mit denen Sie die Ausführungsschritte und die Daten, die durch Ihren State Machine fließen, ausführen und debuggen können. Die folgenden Abschnitte enthalten zusätzliche Ressourcen zum Ausführen und Debuggen Ihrer Workflows.

Weitere Informationen zu den Möglichkeiten, State-Machine-Ausführungen zu starten, finden Sie unter. State-Machine-Ausführungen in Step Functions starten

Wählen Sie einen Endpunkt für die Ausführung Ihrer Workflows

Um die Latenz zu reduzieren und Daten an einem Ort zu speichern, der Ihren Anforderungen entspricht, bietet Step Functions Endpunkte in verschiedenen AWS Regionen. Jeder Endpunkt in Step Functions ist völlig unabhängig. Zustandsautomaten oder Aktivitäten existieren nur in der Region, in der sie erstellt wurden. Alle Zustandsautomaten und Aktivitäten, die Sie in einer Region erstellen, teilen keine Daten oder Attribute mit denen, die in einer anderen Region erstellt wurden. Sie können beispielsweise eine Zustandsmaschine registrieren, die STATES-Flows-1 in zwei verschiedenen Regionen benannt ist. Die STATES-Flows-1 Zustandsmaschine in einer Region teilt keine Daten oder Attribute mit der STATES-Flow-1 Zustandsmaschine in der anderen Region. Eine Liste der Step Functions-Endpunkte finden Sie unter AWS Step Functions Regionen und Endpunkte im. Allgemeine AWS-Referenz

Entwicklung mit VS Code

Mit dem AWS Toolkit können Sie Workflow Studio von VS Code aus verwenden, um einzelne Zustände in Ihren Zustandsmaschinen zu visualisieren, zu erstellen und sogar zu testen. Sie können auch Ihr SAM und CloudFormation Definitionsersetzungen verwenden. Sie geben Zustandseingaben ein und legen Variablen fest, starten den Test und können dann sehen, wie Ihre Daten transformiert werden. Auf der Registerkarte „Statusdefinition“ können Sie den Arbeitsablauf anpassen und erneut testen. Wenn Sie fertig sind, können Sie die Änderungen anwenden, um den State Machine zu aktualisieren. Weitere Informationen finden Sie unter Arbeiten mit Step-Funktionen und Arbeiten mit Workflow Studio im AWS Toolkit for Visual Studio Code.

Bereitstellen Ihrer Workflows

Nachdem Sie Ihre Workflows definiert und debuggt haben, möchten Sie sie wahrscheinlich mithilfe von Infrastructure-as-Code-Frameworks bereitstellen. Sie können wählen, ob Sie Ihre State Machines mithilfe einer Vielzahl von IaC-Optionen bereitstellen möchten, darunter: AWS Serverless Application Model CloudFormation AWS CDK, und Terraform.

AWS Serverless Application Model

Sie können Step Functions verwenden AWS Serverless Application Model , um Workflows zu erstellen und die Infrastruktur bereitzustellen, die Sie benötigen, einschließlich Lambda-Funktionen, APIs und Events, um serverlose Anwendungen zu erstellen. Sie können die AWS SAM CLI auch zusammen mit der AWS Toolkit for Visual Studio Code als Teil einer integrierten Oberfläche verwenden.

Weitere Informationen finden Sie unter Verwenden AWS SAM um Step Functions Functions-Workflows zu erstellen.

CloudFormation

Sie können Ihre State-Machine-Definitionen direkt in CloudFormation Vorlagen verwenden.

Weitere Informationen finden Sie unter Verwenden CloudFormation , um einen Workflow in Step Functions zu erstellen.

AWS CDK

Sie können Standard- und Express-Zustandsautomaten mit erstellen AWS CDK.

Informationen zum Erstellen eines Standard-Workflows finden Sie unterVerwenden von CDK zur Erstellung eines Standard-Workflows.

Informationen zum Erstellen eines Express-Workflows finden Sie unterVerwenden von CDK zum Erstellen eines Express-Workflows.

Terraform

Terraform by HashiCorp ist ein Framework für die Erstellung von Anwendungen mithilfe von Infrastructure as Code (IaC). Mit Terraform können Sie Zustandsautomaten erstellen und Funktionen wie die Vorschau von Infrastrukturbereitstellungen und die Erstellung wiederverwendbarer Vorlagen verwenden. Terraform-Vorlagen helfen Ihnen dabei, den Code zu verwalten und wiederzuverwenden, indem sie ihn in kleinere Teile zerlegen.

Weitere Informationen finden Sie unter Verwendung von Terraform zur Bereitstellung von Zustandsmaschinen in Step Functions.