Redriving Map-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.

Redriving Map-Runs in Step Functions Functions-Ausführungen

Sie können erfolglose untergeordnete Workflow-Ausführungen in einer Map Run von neu starten redrivingIhr übergeordneter Workflow. A redriven übergeordneter Arbeitsablauf redrives alle erfolglosen Staaten, 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 der übergeordnete Workflow zu redrive alle erfolglosen untergeordneten Workflow-Ausführungen im Map Run.

Ein Map Run wird entweder nicht gestartet oder schlägt beim ursprünglichen Ausführungsversuch fehl, wenn der Zustandsmaschine nicht über die erforderlichen Zugriffsberechtigungen für den ItemReader (Karte) Zugriff auf oder beides verfügt. ResultWriter (Karte) Wenn der Map Run beim ursprünglichen Ausführungsversuch des übergeordneten Workflows nicht gestartet wurde, redriving der übergeordnete Workflow startet den Map Run zum ersten Mal. Um dieses Problem zu lösen, fügen Sie Ihrer State-Machine-Rolle die erforderlichen Berechtigungen hinzu und dann redrive der übergeordnete Workflow. Wenn Sie redrive Der übergeordnete Workflow versucht, ohne die erforderlichen Berechtigungen hinzuzufügen, 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.

Redrive Eignung für untergeordnete Workflows in einem Map Run

Das können Sie redrive die erfolglosen untergeordneten Workflow-Ausführungen in einem Map Run, 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 von 1000 nicht überschritten redrives eines bestimmten Map Runs. Wenn du dieses Limit überschritten hast, erhältst du die States.Runtime Fehlermeldung.

  • Der übergeordnete Workflow ist redrivable. Wenn der übergeordnete Workflow nicht redrivable, kannst du nicht redrive die untergeordneten Workflow-Ausführungen in einem Map Run. Weitere Informationen zur redrive Eignung eines Workflows, siehe. Redrive Eignung 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. Für weitere Informationen über redrive Zulässigkeit einer Hinrichtung finden Sie unterRedrive Eignung für erfolglose Hinrichtungen.

Ein neuer Map Run wird gestartet und der bestehende Map Run nicht redriven in den folgenden Fällen, 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 ist redrive passiert 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 redrive.

Ausführung eines untergeordneten Workflows redrive Verhalten

Das Tool redriven Die Ausführung untergeordneter Workflows in einem Map Run zeigt das in der folgenden Tabelle beschriebene Verhalten.

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, bei denen beim ursprünglichen Ausführungsversuch ein Fehler aufgetreten ist, die Zeitüberschreitung überschritten wurde oder die abgebrochen wurden, sind redriven unter Verwendung des RedriveExecutionAPIAktion. Diese untergeordneten Workflows sind redriven aus dem letzten Zustand ItemProcessor , der zu ihrer erfolglosen Ausführung geführt hat.

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

Nicht immer können untergeordnete Standard-Workflow-Ausführungen erfolglos sein redriven. Wenn eine Hinrichtung nicht erfolgt redrivable, es wird nicht noch einmal 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 redrivable Die Frist von 14 Tagen ist abgelaufen.

Die Ausführung eines standardmäßigen untergeordneten Workflows 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.

Für untergeordnete Express-Workflow-Ausführungen wird dieselbe Ausführung verwendet ARN wie für den ursprünglichen 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 eindeutig identifizieren redrives in der Konsole und mithilfe von APIs z. B. GetExecutionHistoryund DescribeExecution. Weitere Informationen finden Sie unter Untersuchen redriven Hinrichtungen.

Wenn du redriven bei einem Map Run, dessen Parallelitätslimit erreicht ist, wird der untergeordnete Workflow, der in diesem Map Run ausgeführt wird, in den Status „Ausstehend“ übergehen. Der Ausführungsstatus des Map Runs geht ebenfalls in den Status Ausstehend über redriveZustand. Bis das angegebene Parallelitätslimit die Ausführung weiterer untergeordneter Workflow-Ausführungen ermöglicht, verbleibt die Ausführung im Status Ausstehend redriveZustand.

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 Runs abgeschlossen oder abgebrochen wurde, wird die Anzahl der Ausführungen untergeordneter Workflows im Status Ausstehend angezeigt redriveDer Status wird 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 bereitgestellt haben, ist redriven Map Run verwendet 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. Das Tool 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.

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

IAMErlaubnis zu redrive ein Map Run

Step Functions benötigt die entsprechende Genehmigung für redrive ein Map Run. Das folgende IAM Richtlinienbeispiel gewährt Ihrem Zustandsmaschine die geringste erforderliche Berechtigung für redriving ein Map Run. 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:*" } ] }

Redriving Karte 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. Bis redrive der Map Run, du musst redrive der übergeordnete Arbeitsablauf.

Diagramm einer fehlgeschlagenen State-Machine-Ausführung, die durch einen fehlgeschlagenen Map Run verursacht wurde.
Bis redrive ein 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 aus.Redrive.

  4. In der RedriveWählen Sie in einem Dialogfeld Redrive Ausführung.

    Tipp

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

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

    • Wählen Sie Wiederherstellen und wählen Sie dann Redrive aufgrund eines Fehlers.

    • Wählen Sie Aktionen und dann Redrive.

    Wenn Sie sich auf der Seite mit den Kartenausführungsdetails befinden, wählen Sie Wiederherstellen und dann Redrive nach einem Fehlschlag.

    Beachten Sie, dass redrive verwendet dieselbe Zustandsmaschinen-Definition undARN. 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 setzt die Ausführung für den Schritt „Fertig“ fort.

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

    Auf dieser Seite können Sie sich die Ergebnisse der redriven Ausführung. In dem Zusammenfassung der Ausführung von Map Run Abschnitt können Sie beispielsweise sehen Redrive Anzahl, die angibt, wie oft der Map Run durchgeführt wurde redriven. Im Bereich Ereignisse können Sie die redrive verwandte Ausführungsereignisse, die an die Ereignisse des ursprünglichen Ausführungsversuchs angehängt wurden. Zum Beispiel das MapRunRedriven Ereignis.

Nachdem du redriven Nach einem Map Run kannst du ihn untersuchen redrive Details in der Konsole oder mithilfe der DescribeExecutionAPIAktionen GetExecutionHistoryund. Weitere Informationen zur Untersuchung eines redriven Ausführung, sieheUntersuchen redriven Hinrichtungen.

Redriving Map Run mit API

Du kannst redrive ein teilnahmeberechtigter Map Run mit dem RedriveExecutionAPIim übergeordneten Workflow. Dadurch API werden erfolglose untergeordnete Workflow-Ausführungen in einem Map Run neu gestartet.

Im AWS Command Line Interface (AWS CLI), führen Sie den folgenden Befehl aus, um redrive eine erfolglose State-Machine-Ausführung. 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 kannst du dir ansehen redrive Details in der Konsole oder mithilfe der DescribeMapRunAPIAktion. Um das zu untersuchen redrive Einzelheiten zu Standard-Workflow-Ausführungen in einem Map Run können Sie mit der DescribeExecutionAPIAktion GetExecutionHistoryoder verwenden. Weitere Informationen zur Untersuchung eines redriven Ausführung, sieheUntersuchen redriven Hinrichtungen.

Sie können das untersuchen redrive Details zu Express-Workflow-Ausführungen in einem Map Run auf der Step Functions-Konsole, 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.