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.
Setzen Sie lang andauernde Workflows mit Step Functions fort API (empfohlen)
AWS Step Functions ist für die Ausführung von Workflows mit einer begrenzten Dauer und Anzahl von Schritten konzipiert. Standard-Workflow-Ausführungen haben eine maximale Dauer von einem Jahr und 25.000 Ereignissen (siehe). Step Functions Servicekontingenten
Bei Ausführungen mit langer Laufzeit können Sie verhindern, dass das feste Kontingent erreicht wird, indem Sie eine neue Workflow-Ausführung vom Status aus starten. Task
Sie müssen Ihre Workflows in kleinere Zustandsmaschinen aufteilen, die die laufende Arbeit in einer neuen Ausführung fortsetzen.
Um neue Workflow-Ausführungen zu starten, rufen Sie die StartExecution
API Aktion von Ihrem Task
Status aus auf und übergeben die erforderlichen Parameter.
Step Functions kann Workflow-Ausführungen starten, indem es seinen eigenen Dienst API als integrierten Dienst aufruft. Wir empfehlen Ihnen, diesen Ansatz zu verwenden, um zu verhindern, dass die Servicekontingenten bei Ausführungen mit langer Laufzeit überschritten werden.
Schritt 1: Erstellen Sie einen State Machine mit langer Laufzeit
Erstellen Sie eine Zustandsmaschine mit langer Laufzeit, die Sie vom Task
Status einer anderen Zustandsmaschine aus starten möchten. Verwenden Sie für dieses Tutorial die Zustandsmaschine, die eine Lambda-Funktion verwendet.
Anmerkung
Stellen Sie sicher, dass Sie den Namen und den Amazon-Ressourcennamen dieses Zustandsmaschinen zur späteren Verwendung in eine Textdatei kopieren.
Schritt 2: Erstellen Sie eine Zustandsmaschine, um die API Aktion Step Functions aufzurufen
Um Workflow-Ausführungen von einem Task
Status aus zu starten
-
Öffnen Sie die Step Functions Functions-Konsole
und wählen Sie Create State Machine. -
Wählen Sie im Dialogfeld Vorlage auswählen die Option Leer aus.
-
Wählen Sie „Auswählen“, um Workflow Studio in zu öffnenEntwurfsmodus.
-
Ziehen Sie die StartExecutionAPIAktion von der Registerkarte Aktionen auf den leeren Status mit der Bezeichnung Ersten Status hierher ziehen und dort ablegen.
-
Wählen Sie den StartExecutionStatus aus und gehen Sie auf der Registerkarte Konfiguration unter wie folgt vorEntwurfsmodus:
-
Benennen Sie den Status um in
Start nested execution
. -
Wählen Sie als Integrationstyp AWS SDK- neu aus der Drop-down-Liste.
-
Gehen Sie APIunter Parameter wie folgt vor:
-
Ersetzen Sie das
StateMachineArn
Beispiel für den Amazon-Ressourcennamen durch den ARN Ihres Zustandsmaschinen. Geben Sie beispielsweise die ARN der Zustandsmaschine ein, die Lambda verwendet. -
Ersetzen Sie für
Input
node den vorhandenen Platzhaltertext durch den folgenden Wert:"Comment": "Starting workflow execution using a Step Functions API action"
-
Stellen Sie sicher, dass Ihre Eingaben im Feld APIParameter etwa wie folgt aussehen:
{ "StateMachineArn": "arn:aws:states:us-east-2:123456789012:stateMachine:
LambdaStateMachine
", "Input": { "Comment": "Starting workflow execution using a Step Functions API action", "AWS_STEP_FUNCTIONS_STARTED_BY_EXECUTION_ID.$": "$$.Execution.Id" }
-
-
-
(Optional) Wählen Sie im Inspektor-Panel Fenster „Definition“ aus, um die automatisch generierte Amazon States Language (ASL) Definition Ihres Workflows anzuzeigen.
Tipp
Sie können die ASL Definition auch in Workflow Studio einsehen. Code-Editor Im Code-Editor können Sie auch die ASL Definition Ihres Workflows bearbeiten.
-
Geben Sie einen Namen für Ihre Zustandsmaschine an. Wählen Sie dazu das Bearbeitungssymbol neben dem Standardnamen der Zustandsmaschine von MyStateMachine. Geben Sie dann unter State-Machine-Konfiguration einen Namen in das Feld State-Machine-Name ein.
Geben Sie für dieses Tutorial den Namen
ParentStateMachine
ein. -
(Optional) Geben Sie unter State-Machine-Konfiguration weitere Workflow-Einstellungen an, z. B. den Zustandsmaschinentyp und seine Ausführungsrolle.
Behalten Sie für dieses Tutorial alle Standardauswahlen in den State-Machine-Einstellungen bei.
Wenn Sie zuvor eine IAM Rolle mit den richtigen Berechtigungen für Ihren Zustandsmaschine erstellt haben und diese verwenden möchten, wählen Sie unter Berechtigungen die Option Vorhandene Rolle auswählen aus und wählen Sie dann eine Rolle aus der Liste aus. Oder wählen Sie Rolle eingeben aus ARN und geben Sie dann eine Rolle ARN für diese IAM Rolle ein.
-
Wählen Sie im Dialogfeld „Rollenerstellung bestätigen“ die Option Bestätigen aus, um fortzufahren.
Sie können auch Rolleneinstellungen anzeigen wählen, um zur State-Machine-Konfiguration zurückzukehren.
Anmerkung
Wenn Sie die von Step Functions erstellte IAM Rolle löschen, kann Step Functions sie später nicht mehr neu erstellen. Ebenso kann Step Functions ihre ursprünglichen Einstellungen später nicht wiederherstellen, wenn Sie die Rolle ändern (z. B. indem Sie Step Functions aus den Prinzipalen in der IAM Richtlinie entfernen).
Schritt 3: Aktualisieren Sie die Richtlinie IAM
Um sicherzustellen, dass Ihre Zustandsmaschine berechtigt ist, die Ausführung der Zustandsmaschine zu starten, die eine Lambda-Funktion verwendet, müssen Sie der IAM Rolle Ihrer Zustandsmaschine eine Inline-Richtlinie hinzufügen. Weitere Informationen finden Sie unter Einbetten von Inline-Richtlinien im IAMBenutzerhandbuch.
-
Wählen Sie auf der ParentStateMachineSeite die IAMRolle aus, ARN um zur IAM Rollenseite für Ihren Zustandsmaschine zu gelangen.
-
Weisen Sie der IAM Rolle von eine entsprechende Berechtigung zu, ParentStateMachinedamit sie die Ausführung eines anderen Zustandsmaschinen starten kann. Gehen Sie wie folgt vor, um die Berechtigung zuzuweisen:
-
Wählen Sie auf der Seite IAM Rollen die Option Berechtigungen hinzufügen und dann Inline-Richtlinie erstellen aus.
-
Wählen Sie auf der Seite Richtlinie erstellen die JSONRegisterkarte aus.
-
Ersetzen Sie den vorhandenen Text durch die folgende Richtlinie.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "states:StartExecution" ], "Resource": [ "arn:aws:states:
us-east-2
:123456789012
:stateMachine:LambdaStateMachine
" ] } ] } -
Wählen Sie Richtlinie prüfen.
-
Geben Sie einen Namen für die Richtlinie an, und wählen Sie dann Richtlinie erstellen aus.
-
Schritt 4: Führen Sie die Zustandsmaschine aus
State-Machine-Ausführungen sind Instanzen, in denen Sie Ihren Workflow ausführen, um Aufgaben auszuführen.
-
Wählen Sie auf der ParentStateMachineSeite Ausführung starten aus.
Das Dialogfeld Ausführung starten wird angezeigt.
-
Gehen Sie im Dialogfeld Ausführung starten wie folgt vor:
-
(Optional) Geben Sie einen benutzerdefinierten Ausführungsnamen ein, um den generierten Standard zu überschreiben.
ASCIINichtnamen und Protokollierung
Step Functions akzeptiert Namen für Zustandsmaschinen, Ausführungen, Aktivitäten und Bezeichnungen, die ASCII Nichtzeichen enthalten. Da solche Zeichen nicht mit Amazon funktionieren, empfehlen wir CloudWatch, nur ASCII Zeichen zu verwenden, damit Sie die Messwerte verfolgen können CloudWatch.
-
(Optional) Geben Sie im Eingabefeld Eingabewerte im JSON Format ein, um Ihren Workflow auszuführen.
-
Wählen Sie Start execution (Ausführung starten) aus.
-
Die Step Functions Functions-Konsole leitet Sie zu einer Seite weiter, die mit Ihrer Ausführungs-ID betitelt ist. Diese Seite wird als Seite mit den Ausführungsdetails bezeichnet. Auf dieser Seite können Sie die Ausführungsergebnisse im Verlauf oder nach Abschluss der Ausführung überprüfen.
Um die Ausführungsergebnisse zu überprüfen, wählen Sie in der Diagrammansicht einzelne Status aus und wählen Sie dann die einzelnen Registerkarten im Einzelheiten zu den Schritten Bereich, um die Details der einzelnen Status, einschließlich Eingabe, Ausgabe und Definition, anzuzeigen. Einzelheiten zu den Ausführungsinformationen, die Sie auf der Seite mit den Ausführungsdetails einsehen können, finden Sie unterÜberblick über die Ausführungsdetails.
-
-
Öffnen Sie die LambdaStateMachineSeite und stellen Sie fest, dass eine neue Ausführung durch den ausgelöst wurde ParentStateMachine.