RedrivingMap-Runs in Step Functions Functions-Ausführungen - 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.

RedrivingMap-Runs in Step Functions Functions-Ausführungen

Sie können erfolglose untergeordnete Workflow-Ausführungen in einem Map Run durch redrivingIhren übergeordneten Workflow neu starten. Ein redriven übergeordneter Workflow mit redrives allen erfolglosen Status, einschließlich Distributed Map. Ein übergeordneter Workflow gibt den Status „Nicht erfolgreich“ wieder aus, wenn es kein <stateType>Exited Ereignis gibt, das dem <stateType>Entered Ereignis für einen Status entspricht, in dem der übergeordnete Workflow seine Ausführung abgeschlossen hat. Wenn der Ereignisverlauf beispielsweise das Ereignis für ein MapStateExited MapStateEntered Ereignis nicht enthält, können Sie redrive den übergeordneten Workflow für redrive alle erfolglosen untergeordneten Workflow-Ausführungen in der Map Run übernehmen.

Ein Map Run wird entweder nicht gestartet oder schlägt beim ursprünglichen Ausführungsversuch fehl, wenn der Zustandsmaschine nicht über die erforderliche Zugriffsberechtigung für den ItemReader (Karte)ResultWriter (Karte), oder beides verfügt. Wenn der Map Run beim ursprünglichen Ausführungsversuch des übergeordneten Workflows nicht gestartet wurde, startet redriving der übergeordnete Workflow den Map Run zum ersten Mal. Um dieses Problem zu beheben, fügen Sie Ihrer State-Machine-Rolle und dann redrive dem übergeordneten Workflow die erforderlichen Berechtigungen hinzu. Wenn Sie redrive den übergeordneten Workflow verwenden, ohne die erforderlichen Berechtigungen hinzuzufügen, versucht er, einen neuen Map Run-Lauf zu starten, der erneut fehlschlägt. Informationen zu den Berechtigungen, die Sie möglicherweise benötigen, finden Sie unterIAMRichtlinien für die Verwendung von Distributed Map-Zuständen.

RedriveEignung für untergeordnete Workflows in einem Map Run

Sie können redrive erfolglose untergeordnete Workflow-Ausführungen in einem Map Run durchführen, wenn die folgenden Bedingungen erfüllt sind:

  • Sie haben am oder nach dem 15. November 2023 mit der Ausführung des übergeordneten Workflows begonnen. Ausführungen, die Sie vor diesem Datum gestartet haben, kommen nicht in Frage. redrive

  • Sie haben das feste Limit redrives von 1000 für einen bestimmten Map Run nicht überschritten. Wenn du dieses Limit überschritten hast, erhältst du die States.Runtime Fehlermeldung.

  • Der übergeordnete Workflow istredrivable. Wenn der übergeordnete Workflow dies nicht istredrivable, können Sie redrive den untergeordneten Workflow nicht in einem Map Run ausführen. Weitere Informationen zur redrive Eignung eines Workflows finden Sie unter. RedriveEignung für erfolglose Hinrichtungen

  • Die untergeordneten Workflow-Ausführungen des Typs Standard in Ihrem Map Run haben das Limit von 25.000 Ausführungsereignissen im Verlauf nicht überschritten. Untergeordnete Workflow-Ausführungen, die das Limit für den Ereignisverlauf überschritten haben, werden auf den Schwellenwert für tolerierte Fehler angerechnet und als fehlgeschlagen betrachtet. Weitere Informationen zur redrive Eignung einer Ausführung finden Sie unter. RedriveEignung für erfolglose Hinrichtungen

In den folgenden Fällen wird ein neuer Map Run gestartet und der bestehende Map Run wird nicht redriven gestartet, auch wenn der Map Run beim ursprünglichen Ausführungsversuch fehlgeschlagen ist:

Ein Map-Run kann auch dann weiter ausgeführt werden, wenn der übergeordnete Workflow beendet oder das Timeout überschritten wurde. In diesen Szenarien passiert redrive das nicht sofort:

  • Map Run storniert möglicherweise immer noch laufende untergeordnete Workflow-Ausführungen vom Typ Standard oder wartet darauf, dass untergeordnete Workflow-Ausführungen vom Typ Express ihre Ausführungen abgeschlossen haben.

  • Map Run schreibt möglicherweise immer noch Ergebnisse in dasResultWriter (Karte), wenn Sie es für den Export von Ergebnissen konfiguriert haben.

In diesen Fällen schließt der laufende Map Run seine Operationen ab, bevor er versucht, dies zu tunredrive.

redriveVerhalten bei der Ausführung eines untergeordneten Workflows

Die redriven untergeordneten Workflow-Ausführungen in einem Map Run weisen das in der folgenden Tabelle beschriebene Verhalten auf.

Untergeordneter Express-Arbeitsablauf Standardmäßiger Arbeitsablauf für Kinder
Alle untergeordneten Workflow-Ausführungen, die beim ursprünglichen Ausführungsversuch fehlgeschlagen sind oder deren Timeout überschritten wurde, werden mithilfe der StartExecutionAPIAktion gestartet. Der erste Status in ItemProcessor ist „Run first“. Alle untergeordneten Workflow-Ausführungen, die beim ursprünglichen Ausführungsversuch fehlgeschlagen sind, deren Timeout überschritten wurde oder die abgebrochen wurden, redriven verwenden die RedriveExecutionAPIAktion. Diese untergeordneten Workflows stammen redriven aus dem letzten Status ItemProcessor , in dem sie nicht erfolgreich ausgeführt wurden.

Fehlgeschlagene Ausführungen können immer sein. redriven Das liegt daran, dass untergeordnete Express-Workflow-Ausführungen immer als neue Ausführung mithilfe der StartExecution API Aktion gestartet werden.

Untergeordnete Standard-Workflow-Ausführungen können nicht immer erfolglos sein. redriven Wenn eine Ausführung nicht erfolgtredrivable, wird sie nicht erneut versucht. Der letzte Fehler oder die letzte Ausgabe der Ausführung ist dauerhaft. Dies ist möglich, wenn eine Ausführung mehr als 25.000 historische Ereignisse umfasst oder der redrivable Zeitraum von 14 Tagen abgelaufen ist.

Eine untergeordnete Standardworkflow-Ausführung ist möglicherweise nicht möglich, redrivable wenn die Ausführung des übergeordneten Workflows innerhalb von 14 Tagen abgeschlossen wurde, die Ausführung des untergeordneten Workflows jedoch vor 14 Tagen.

Untergeordnete Express-Workflow-Ausführungen verwenden dieselbe Ausführung ARN wie der ursprüngliche Ausführungsversuch, aber Sie können die einzelnen Workflow-Ausführungen nicht eindeutig identifizieren. redrives Standardausführungen untergeordneter Workflows verwenden dieselbe Ausführung ARN wie der ursprüngliche Ausführungsversuch. Sie können die Person redrives in der Konsole und mithilfe von z. APIs B. GetExecutionHistoryund eindeutig identifizieren. DescribeExecution Weitere Informationen finden Sie unter Untersuchung von Hinrichtungen redriven.

Wenn Sie über redriven einen Map Run verfügen und dieser sein Limit für Parallelität erreicht hat, wird der untergeordnete Workflow, der in diesem Map Run ausgeführt wird, in den Status „Ausstehend“ versetzt. Der Ausführungsstatus von Map Run geht ebenfalls in den Status Ausstehend redrive über. Bis das angegebene Parallelitätslimit die Ausführung weiterer untergeordneter Workflow-Ausführungen ermöglicht, verbleibt die Ausführung im Status Ausstehend redrive.

Nehmen wir beispielsweise an, dass das Parallelitätslimit für die verteilte Map in Ihrem Workflow 3000 beträgt und die Anzahl der erneut auszuführenden untergeordneten Workflows 6000 beträgt. Dies führt dazu, dass 3000 untergeordnete Workflows parallel ausgeführt werden, während die verbleibenden 3000 Workflows im Status Pending Redrive verbleiben. Nachdem die Ausführung des ersten Batches von 3000 untergeordneten Workflows abgeschlossen ist, werden die verbleibenden 3000 untergeordneten Workflows ausgeführt.

Wenn die Ausführung eines Map Run abgeschlossen oder abgebrochen wurde, wird die Anzahl der Ausführungen untergeordneter Workflows im redrive Status Ausstehend auf 0 zurückgesetzt.

Bei Map Run verwendete Eingabeszenarien redrive

Je nachdem, wie Sie beim ursprünglichen Ausführungsversuch Eingaben für die Distributed Map gemacht haben, verwendet ein redriven Map Run die Eingabe wie in der folgenden Tabelle beschrieben.

Eingabe beim ursprünglichen Ausführungsversuch Die Eingabe wurde bei Map Run verwendet redrive
Eingabe, die aus einem vorherigen Status oder der Ausführungseingabe übergeben wurde. Der redriven Map Run verwendet dieselbe Eingabe.
Die Eingabe wurde mit übergeben ItemReader (Karte) und der Map Run hat die Ausführung des untergeordneten Workflows nicht gestartet, da eine der folgenden Bedingungen zutrifft:
  • Map Run ist mit dem States.ItemReaderFailed Fehler fehlgeschlagen.

  • Map Run ist mit dem States.ResultWriterFailed Fehler fehlgeschlagen.

  • Bei der Ausführung des übergeordneten Workflows wurde das Timeout überschritten oder sie wurde abgebrochen, bevor Map Run gestartet wurde.

Der redriven Map Run verwendet die Eingabe im Amazon S3 S3-Bucket.
Eingabe wurde mit übergeben ItemReader. Der Map Run schlug fehl, nachdem untergeordnete Workflow-Ausführungen gestartet oder versucht wurden, sie zu starten. Der redriven Map Run verwendet dieselbe Eingabe wie beim ursprünglichen Ausführungsversuch.

IAMErlaubnis für redrive einen Map Run

Step Functions benötigt die entsprechende Erlaubnis für redrive einen Map Run. Das folgende IAM Richtlinienbeispiel gewährt Ihrem Zustandsmaschine die geringsten Rechte, die für redriving einen Map Run erforderlich sind. Denken Sie daran, das zu ersetzen italicized Text mit Ihren ressourcenspezifischen Informationen.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "states:RedriveExecution" ], "Resource": "arn:aws:states:us-east-2:123456789012:execution:myStateMachine/myMapRunLabel:*" } ] }

RedrivingKarte In der Konsole ausführen

Die folgende Abbildung zeigt das Ausführungsdiagramm einer Zustandsmaschine, die eine Distributed Map enthält. Diese Ausführung ist fehlgeschlagen, weil der Map Run fehlgeschlagen ist. redriveZum Map Run müssen Sie redrive den übergeordneten Workflow verwenden.

Diagramm einer fehlgeschlagenen Ausführung eines Zustandsautomaten, der durch einen fehlgeschlagenen Map Run verursacht wurde.
Zu redrive einem Map Run von der Konsole aus
  1. Öffnen Sie die Step Functions Functions-Konsole und wählen Sie dann eine vorhandene Zustandsmaschine aus, die eine verteilte Map enthält, deren Ausführung fehlgeschlagen ist.

  2. Wählen Sie auf der Detailseite der Zustandsmaschine unter Ausführungen eine Instanz dieser Zustandsmaschine aus, deren Ausführung fehlgeschlagen ist.

  3. Wählen Sie Redrive.

  4. Wählen RedriveSie im Dialogfeld RedriveAusführung aus.

    Tipp

    Sie können redrive einen Map-Lauf auch auf der Seite „Ausführungsdetails“ oder „Map-Run-Details“ ausführen.

    Wenn Sie sich auf der Seite mit den Ausführungsdetails befinden, führen Sie für die Ausführung einen redrive der folgenden Schritte aus:

    • Wählen Sie „Wiederherstellen“ und dann „RedriveFehler“.

    • Wählen Sie Aktionen und dann aus Redrive.

    Wenn Sie sich auf der Seite „Kartenlaufdetails“ befinden, wählen Sie „Wiederherstellen“ und dann „RedriveFehler“.

    Beachten Sie, dass dieselbe State-Machine-Definition und redrive verwendet wirdARN. Es setzt die Ausführung ab dem Schritt fort, der beim ursprünglichen Ausführungsversuch fehlgeschlagen ist. In diesem Beispiel handelt es sich um den Schritt Distributed Map mit dem Namen Map und den darin enthaltenen Eingabeschritt Process. Nach dem Neustart der erfolglosen untergeordneten Workflow-Ausführungen von Map Run redrive wird die Ausführung für den Schritt Fertig fortgesetzt.

  5. Wählen Sie auf der Seite mit den Ausführungsdetails die Option Map Run aus, um die Details des redriven Map Run anzuzeigen.

    Auf dieser Seite können Sie sich die Ergebnisse der redriven Ausführung ansehen. In Zusammenfassung der Ausführung von Map Run diesem Abschnitt können Sie beispielsweise die RedriveAnzahl sehen, die angibt, wie oft der Map Run durchgeführt wurderedriven. Im Abschnitt Ereignisse können Sie die redrive zugehörigen Ausführungsereignisse an die Ereignisse des ursprünglichen Ausführungsversuchs angehängt sehen. Zum Beispiel das MapRunRedriven Ereignis.

Nachdem Sie redriven einen Map Run ausgeführt haben, können Sie dessen redrive Details in der Konsole oder mithilfe der DescribeExecutionAPIAktionen GetExecutionHistoryund überprüfen. Weitere Hinweise zur Untersuchung einer redriven Ausführung finden Sie unterUntersuchung von Hinrichtungen redriven.

RedrivingMap Run mit API

Sie können redrive einen geeigneten Map Run mithilfe des Workflows „RedriveExecutionAPIOn the Parent“ durchführen. Dadurch API werden erfolglose untergeordnete Workflow-Ausführungen in einem Map Run neu gestartet.

Führen Sie in AWS Command Line Interface (AWS CLI) den folgenden Befehl für redrive eine erfolglose State-Machine-Ausführung aus. Denken Sie daran, das zu ersetzen italicized Text mit Ihren ressourcenspezifischen Informationen.

aws stepfunctions redrive-execution --execution-arn arn:aws:states:us-east-2:123456789012:execution:myStateMachine:foo

Nachdem Sie redriven einen Map Run ausgeführt haben, können Sie dessen redrive Details in der Konsole oder mithilfe der DescribeMapRunAPIAktion überprüfen. Um die redrive Details von Standard-Workflow-Ausführungen in einem Map-Run zu untersuchen, können Sie die DescribeExecutionAPIAktion GetExecutionHistoryoder verwenden. Weitere Informationen zur Untersuchung einer redriven Ausführung finden Sie unterUntersuchung von Hinrichtungen redriven.

Sie können die redrive Details der Express-Workflow-Ausführungen in einem Map Run in der Step Functions Functions-Konsole überprüfen, wenn Sie die Protokollierung für den übergeordneten Workflow aktiviert haben. Weitere Informationen finden Sie unter Verwendung von CloudWatch Logs zur Protokollierung des Ausführungsverlaufs in Step Functions.