Erfahren Sie mehr über Zustandsmaschinen in 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.

Erfahren Sie mehr über Zustandsmaschinen in Step Functions

Step Functions basiert auf Zustandsmaschinen und Aufgaben. In Step Functions werden Zustandsmaschinen als Workflows bezeichnet. Dabei handelt es sich um eine Reihe von ereignisgesteuerten Schritten. Jeder Schritt in einem Workflow wird als Status bezeichnet. Ein Aufgabenstatus steht beispielsweise für eine Arbeitseinheit und eine andere AWS führt einen Dienst aus, z. B. wenn er einen anderen aufruft AWS-Service oderAPI. Instanzen, in denen Workflows ausgeführt werden, die Aufgaben ausführen, werden in Step Functions als Ausführungen bezeichnet.

Illustratives Beispiel für ein Step Functions Functions-Workflow-Diagramm.

Die wichtigsten Konzepte

Im Folgenden finden Sie einen Überblick über die wichtigsten Kontextbegriffe von Step Functions.

Begriff Beschreibung
Workflow Eine Abfolge von Schritten, die häufig einen Geschäftsprozess widerspiegeln.
Zustände

Einzelne Schritte in Ihrer Zustandsmaschine, die Entscheidungen auf der Grundlage ihrer Eingaben treffen, anhand dieser Eingaben Aktionen ausführen und Ausgaben an andere Staaten weiterleiten können.

Weitere Informationen finden Sie unter Ermitteln von Workflow-Status zur Verwendung in Step Functions.

Workflow Studio

Ein visueller Workflow-Designer, der Ihnen hilft, Workflows schneller zu prototypisieren und zu erstellen.

Weitere Informationen finden Sie unter Entwicklung von Workflows in Step Functions Workflow Studio.

State Machine (Zustandsautomat)

Ein Workflow, der anhand von JSON Text definiert wird, der die einzelnen Status oder Schritte im Workflow zusammen mit Feldern wie StartAtTimeoutSeconds, und darstelltVersion.

Weitere Informationen finden Sie unter Zustandsmaschinenstruktur in Amazon States Language für Step Functions Functions-Workflows.

Amazon States Language

Eine JSON basierte, strukturierte Sprache, die zur Definition Ihrer Zustandsmaschinen verwendet wird. Mit definieren Sie eine Sammlung von Status ASL, die funktionieren können (TaskStatus), bestimmen, in welchen Status Sie als Nächstes übergehen sollen (ChoiceStatus), und eine Ausführung mit einem Fehler beenden (FailStatus).

Weitere Informationen finden Sie unter Verwendung von Amazon States Language zur Definition von Step Functions Functions-Workflows.

Eingabe- und Ausgabekonfiguration

Staaten in einem Workflow empfangen JSON Daten als Eingabe und geben JSON Daten normalerweise als Ausgabe an den nächsten Status weiter. Step Functions bietet Filter zur Steuerung des Datenflusses zwischen Staaten.

Weitere Informationen finden Sie unter Eingabe und Ausgabe in Step Functions verarbeiten.

Service-Integration

Sie können anrufen AWS APIServiceaktionen aus Ihrem Workflow.

Weitere Informationen finden Sie unter Integration von Diensten mit Step Functions.

Art der Serviceintegration
  • AWS SDKIntegrationen — Standardmethode, um einen von über zweihundert anzurufen AWS-Services und über neuntausend API Aktionen direkt von Ihrer Zustandsmaschine aus.

  • Optimierte Integrationen — Maßgeschneiderte Integrationen, die das Aufrufen und den Datenaustausch mit bestimmten Diensten optimieren. Lambda Invoke konvertiert beispielsweise automatisch das Payload Feld der Antwort aus einer JSON Escape-Zeichenfolge in ein JSON Objekt.

Muster der Serviceintegration

Beim Anrufen eines AWS-Service, verwenden Sie eines der folgenden Serviceintegrationsmuster:

Ausführung

State-Machine-Ausführungen sind Instanzen, in denen Sie Ihren Workflow ausführen, um Aufgaben auszuführen.

Weitere Informationen finden Sie unter State-Machine-Ausführungen in Step Functions starten.

Zustandsautomatendaten

Zustandsautomatendaten nehmen die folgenden Formen an:

  • Die erste Eingabe in einen Zustandsautomaten

  • Daten, die zwischen Zuständen übergeben werden

  • Die Ausgabe eines Zustandsautomaten

In diesem Abschnitt wird beschrieben, wie Zustandsmaschinendaten formatiert und verwendet werden in AWS Step Functions.

Datenformat

Zustandsmaschinendaten werden durch JSON Text dargestellt. Sie können Werte für eine Zustandsmaschine bereitstellen, indem Sie jeden Datentyp verwenden, der von unterstützt wirdJSON.

Anmerkung

Eingabe/Ausgabe von Zustandsautomaten

Sie können Ihre anfänglichen Eingabedaten einem geben AWS Step Functions Zustandsmaschine auf eine von zwei Arten. Sie können die Daten an eine StartExecution Aktion übergeben, wenn Sie eine Ausführung starten. Sie können die Daten auch von der Step Functions Functions-Konsole aus an den State Machine übergeben. Anfängliche Daten werden an den StartAt-Zustand des Zustandsautomaten übergeben. Wenn keine Eingabe getätigt wird, ist das Objekt standardmäßig leer ({}).

Die Ausgabe der Ausführung wird vom letzten Zustand zurückgegeben (terminal). Diese Ausgabe erscheint als JSON Text im Ergebnis der Ausführung.

Bei Standard-Workflows können Sie Ausführungsergebnisse mithilfe externer Aufrufer, z. B. der DescribeExecution Aktion, aus der Ausführungshistorie abrufen. Sie können die Ausführungsergebnisse in der Step Functions Functions-Konsole anzeigen.

Wenn Sie für Express Workflows die Protokollierung aktiviert haben, können Sie Ergebnisse aus CloudWatch Logs abrufen oder die Ausführungen in der Step Functions Functions-Konsole anzeigen und debuggen. Weitere Informationen erhalten Sie unter Verwendung von CloudWatch Logs zur Protokollierung des Ausführungsverlaufs in Step Functions und Ausführungsdetails in der Step Functions-Konsole anzeigen.

Sie sollten auch Kontingente für Ihren Zustandsmaschine in Betracht ziehen. Weitere Informationen finden Sie unter Step Functions Servicekontingenten

Eingabe/Ausgabe von Zuständen

Die Eingabe jedes Zustands besteht aus JSON Text aus dem vorherigen Status oder, für den StartAt Status, aus der Eingabe in die Ausführung. Bestimmte Flusssteuerungs-Zustände geben ihre Eingabe als Echo an ihre Ausgabe weiter.

Im folgenden Beispiel fügt der Zustandsautomat zwei Zahlen zusammen.

  1. Definieren Sie den AWS Lambda Funktion.

    function Add(input) { var numbers = JSON.parse(input).numbers; var total = numbers.reduce( function(previousValue, currentValue, index, array) { return previousValue + currentValue; }); return JSON.stringify({ result: total }); }
  2. Definieren Sie den -Zustandsautomaten.

    { "Comment": "An example that adds two numbers together.", "StartAt": "Add", "Version": "1.0", "TimeoutSeconds": 10, "States": { "Add": { "Type": "Task", "Resource": "arn:aws:lambda:us-east-1:123456789012:function:Add", "End": true } } }
  3. Starten Sie eine Ausführung mit dem folgenden JSON Text.

    { "numbers": [3, 4] }

    Der Add Staat empfängt den JSON Text und übergibt ihn an die Lambda-Funktion.

    Die Lambda-Funktion gibt das Ergebnis der Berechnung in den Status zurück.

    Der Zustand gibt den folgenden Wert in die Ausgabe.

    { "result": 7 }

    Da Add auch der letzte Zustand in dem Zustandsautomaten ist, wird dieser Wert als Ausgabe des Zustandsautomaten zurückgegeben.

    Wenn der letzte Zustand keine Ausgabe zurückgibt, gibt der Zustandsautomat ein leeres Objekt zurück ({}).

Weitere Informationen finden Sie unter Eingabe und Ausgabe in Step Functions verarbeiten.

Aufrufen AWS Step Functions von anderen Diensten

Sie können mehrere andere Dienste zum Aufrufen von Zustandsmaschinen konfigurieren. Je nach Workflowtyp des Zustandsmaschinen können Sie Zustandsmaschinen asynchron oder synchron aufrufen. Um Zustandsmaschinen synchron aufzurufen, verwenden Sie den StartSyncExecution API Call oder die Amazon API Gateway-Integration mit Express Workflows. Beim asynchronen Aufruf unterbricht Step Functions die Workflow-Ausführung, bis ein Task-Token zurückgegeben wird. Durch das Warten auf ein Task-Token wird der Workflow jedoch synchron.

Zu den Diensten, die Sie für den Aufruf von Step Functions konfigurieren können, gehören:

Aufrufe von Step Functions unterliegen der StartExecution Quote. Weitere Informationen finden Sie unter:

Übergänge in Zustandsmaschinen

Wenn Sie eine neue Ausführung Ihrer Zustandsmaschine starten, beginnt das System mit dem Status, auf den im StartAt Feld der obersten Ebene verwiesen wird. Dieses Feld, das als Zeichenfolge angegeben wird, muss exakt mit dem Namen eines Status im Workflow übereinstimmen, einschließlich Groß- und Kleinschreibung.

Nachdem ein Status ausgeführt wurde, AWS Step Functions verwendet den Wert des Next Felds, um den nächsten Status zu bestimmen, zu dem gewechselt werden soll.

NextFelder geben auch die Namen der Bundesstaaten als Zeichenketten an. Bei dieser Zeichenfolge wird zwischen Groß- und Kleinschreibung unterschieden und sie muss exakt mit dem Namen eines in der State-Machine-Beschreibung angegebenen Zustands übereinstimmen

Zum Beispiel umfasst der folgende Zustand einen Übergang zu NextState.

"SomeState" : { ..., "Next" : "NextState" }

In den meisten Bundesstaaten ist nur eine einzige Übergangsregel für das Next Feld zulässig. In bestimmten Flusssteuerungszuständen, wie z. B. einem Choice Status, können Sie jedoch mehrere Übergangsregeln angeben, von denen jede über ein eigenes Next Feld verfügt. Amazon States Language stellt Details zu den einzelnen Zustandstypen, die Sie angeben können, bereit, einschließlich Informationen zur Angabe von Übergängen.

Zustände können mehrere eingehende Übergänge von anderen Zuständen haben.

Der Vorgang wiederholt sich, bis er entweder einen Terminalstatus (einen Zustand mit "Type": Succeed"Type": Fail, oder"End": true) erreicht oder ein Laufzeitfehler auftritt.

Wenn Sie redriveEine Hinrichtung wird als Zustandsübergang betrachtet. Darüber hinaus werden alle Zustände, die erneut ausgeführt werden, in einem redrive werden auch als Zustandsübergänge betrachtet.

Die folgenden Regeln gelten für Zustände in einem Zustandsautomaten:

  • Zustände können innerhalb des umschließenden Blocks in beliebiger Reihenfolge auftreten. Die Reihenfolge, in der sie aufgeführt sind, hat jedoch keinen Einfluss auf die Reihenfolge, in der sie ausgeführt werden. Diese Reihenfolge wird durch die Inhalte der Zustände bestimmt.

  • Innerhalb einer Zustandsmaschine kann es nur einen Zustand geben, der als start Staat bezeichnet wird. Der start Status wird durch den Wert des StartAt Felds in der Struktur der obersten Ebene definiert.

  • Abhängig von Ihrer Zustandsmaschinenlogik — wenn Ihre Zustandsmaschine beispielsweise mehrere Logikzweige hat — können Sie mehr als einen end Zustand haben.

  • Wenn Ihre Zustandsmaschine nur aus einem Zustand besteht, kann es sich sowohl um den Start- als auch um den Endzustand handeln.

Übergänge im Status „Verteilte Karte“

Wenn Sie den Map Status im Modus Verteilt verwenden, wird Ihnen für jede untergeordnete Workflow-Ausführung, die mit dem Status Distributed Map gestartet wird, ein Zustandsübergang berechnet. Wenn Sie den Map Status im Inline-Modus verwenden, wird Ihnen nicht für jede Iteration des Status Inline Map ein Zustandsübergang in Rechnung gestellt.

Sie können die Kosten optimieren, indem Sie den Map Status im Modus Verteilt verwenden und einen verschachtelten Workflow in die Map Statusdefinition aufnehmen. Der Status „Distributed Map“ bietet auch mehr Nutzen, wenn Sie untergeordnete Workflow-Ausführungen vom Typ Express starten. Step Functions speichert die Antwort und den Status der untergeordneten Express-Workflow-Ausführungen, wodurch die Notwendigkeit reduziert wird, Ausführungsdaten in CloudWatch Logs zu speichern. Sie können auch auf die in einem Distributed-Map-Status verfügbaren Ablaufsteuerungen zugreifen, z. B. die Definition von Fehlerschwellenwerten oder die Stapelverarbeitung einer Gruppe von Elementen. Informationen zu den Preisen von Step Functions finden Sie unter AWS Step Functions Preisgestaltung.

Lesekohärenz in Step Functions

State-Machine-Updates in AWS Step Functions sind letztendlich konsistent. Alle StartExecution Aufrufe innerhalb weniger Sekunden verwenden die aktualisierte Definition und roleArn (den Amazon-Ressourcennamen für die IAM Rolle). Ausführungen, die unmittelbar nach dem Aufruf von UpdateStateMachine gestartet werden, verwenden möglicherweise noch die vorherige Definition des Zustandsautomaten und den vorherigen roleArn.

Weitere Informationen finden Sie hier: