RedrivingMappa corre - AWS Step Functions

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

RedrivingMappa corre

È possibile riavviare le esecuzioni di workflow secondarie non riuscite in una mappa eseguita dal redrivingflusso di lavoro principale. Un flusso di lavoro redriven principale con redrives tutti gli stati non riusciti, inclusa Distributed Map. Un flusso di lavoro principale rigenera gli stati non riusciti se non c'è alcun <stateType>Exited evento corrispondente all'<stateType>Enteredevento per uno stato in cui il flusso di lavoro principale ha completato la sua esecuzione. Ad esempio, se la cronologia degli eventi non contiene l'evento relativo a un MapStateExited MapStateEntered evento, è possibile utilizzare redrive il flusso di lavoro principale per eseguire redrive tutte le esecuzioni di workflow secondarie non riuscite in Map Run.

Un Map Run non viene avviato o ha esito negativo nel tentativo di esecuzione originale quando la macchina a stati non dispone dell'autorizzazione richiesta per accedere a ItemReaderResultWriter, o a entrambi. Se Map Run non è stato avviato nel tentativo di esecuzione originale del workflow principale, redriving il workflow principale avvia Map Run per la prima volta. Per risolvere questo problema, aggiungi le autorizzazioni richieste al tuo ruolo di macchina a stati e quindi al flusso di lavoro redrive principale. Se utilizzi redrive il flusso di lavoro principale senza aggiungere le autorizzazioni richieste, tenta di avviare una nuova esecuzione di Map Run che avrà nuovamente esito negativo. Per informazioni sulle autorizzazioni di cui potresti aver bisogno, consulta. Politiche IAM per l'utilizzo dello stato della mappa distribuita

Redriveidoneità per i flussi di lavoro per bambini in Map Run

È possibile annullare redrive le esecuzioni di workflow secondarie non riuscite in una Map Run se sono soddisfatte le seguenti condizioni:

  • Hai iniziato l'esecuzione del flusso di lavoro principale il o dopo il 15 novembre 2023. Le esecuzioni iniziate prima di questa data non sono redrive idonee.

  • Non hai superato il limite massimo redrives di 1000 per un determinato Map Run. Se hai superato questo limite, riceverai l'States.Runtimeerrore.

  • Il flusso di lavoro principale èredrivable. Se il flusso di lavoro principale non lo èredrivable, non è possibile eseguire redrive il flusso di lavoro secondario in un Map Run. Per ulteriori informazioni sull'redriveidoneità di un flusso di lavoro, consulta. Redriveidoneità per esecuzioni non riuscite

  • Le esecuzioni secondarie del flusso di lavoro di tipo Standard in Map Run non hanno superato il limite di 25.000 eventi di esecuzione cronologici. Le esecuzioni di workflow secondarie che hanno superato il limite della cronologia degli eventi vengono conteggiate ai fini della soglia di errore tollerata e considerate non riuscite. Per ulteriori informazioni sull'redriveidoneità di un'esecuzione, vedere. Redriveidoneità per esecuzioni non riuscite

Viene avviata una nuova Map Run e la Map Run esistente non lo è redriven nei seguenti casi, anche se la Map Run non è riuscita nel tentativo di esecuzione originale:

Una Map Run può continuare a funzionare anche dopo l'arresto o il timeout del flusso di lavoro principale. In questi scenari, redrive ciò non avviene immediatamente:

  • Map Run potrebbe ancora annullare le esecuzioni di workflow secondari in corso di tipo Standard o attendere che le esecuzioni di workflow secondarie di tipo Express completino le proprie esecuzioni.

  • Map Run potrebbe ancora scrivere risultati suResultWriter, se l'hai configurato per esportare i risultati.

In questi casi, Map Run in esecuzione completa le sue operazioni prima di tentare di farlo. redrive

Comportamento di esecuzione del workflow secondario redrive

Le esecuzioni dei flussi di lavoro redriven secondari in un Map Run presentano il comportamento descritto nella tabella seguente.

Flusso di lavoro secondario Express Flusso di lavoro standard per bambini
Tutte le esecuzioni di workflow secondarie non riuscite o scadute nel tentativo di esecuzione originale vengono avviate utilizzando l'azione StartExecutionAPI. Il primo stato in ingresso ItemProcessor viene eseguito per primo. Tutte le esecuzioni di workflow secondarie non riuscite, scadute o annullate nel tentativo di esecuzione originale redriven utilizzano l'azione API. RedriveExecution Questi flussi di lavoro secondari provengono redriven dall'ultimo stato in cui la loro esecuzione ItemProcessor non è riuscita.

Le esecuzioni non hanno sempre successo. redriven Questo perché le esecuzioni del flusso di lavoro secondario di Express vengono sempre avviate come una nuova esecuzione utilizzando l' StartExecution azione API.

Le esecuzioni dei flussi di lavoro secondari standard non hanno sempre esito positivo. redriven Se l'esecuzione non lo èredrivable, non verrà tentata di nuovo. L'ultimo errore o output dell'esecuzione è permanente. Ciò è possibile quando un'esecuzione supera i 25.000 eventi cronologici o il redrivable periodo di 14 giorni è scaduto.

L'esecuzione del flusso di lavoro secondario standard potrebbe non avvenire redrivable se l'esecuzione del flusso di lavoro principale si è conclusa entro 14 giorni, ma l'esecuzione del flusso di lavoro secondario si è conclusa prima di 14 giorni.

Le esecuzioni di workflow secondarie Express utilizzano lo stesso ARN di esecuzione del tentativo di esecuzione originale, ma non è possibile identificarne distintamente l'individuo. redrives Le esecuzioni di workflow secondarie standard utilizzano lo stesso ARN di esecuzione del tentativo di esecuzione originale. È possibile identificare distintamente l'individuo redrives nella console e utilizzando API, come e. GetExecutionHistoryDescribeExecution Per ulteriori informazioni, consulta redrivenEsame delle esecuzioni.

Se hai redriven una Map Run che ha raggiunto il limite di concorrenza, le esecuzioni del flusso di lavoro secondario in quel Map Run passano allo stato in sospeso. Lo stato di esecuzione di Map Run passa anche allo stato In sospeso. redrive Fino a quando il limite di concorrenza specificato non consente l'esecuzione di più esecuzioni di workflow secondari, l'esecuzione rimane nello stato In sospeso. redrive

Ad esempio, supponiamo che il limite di concorrenza della mappa distribuita nel flusso di lavoro sia 3000 e che il numero di flussi di lavoro secondari da eseguire nuovamente sia 6000. Ciò fa sì che 3000 flussi di lavoro secondari vengano eseguiti in parallelo mentre i restanti 3000 flussi di lavoro rimangano nello stato di redrive in sospeso. Una volta completata l'esecuzione del primo batch di 3000 flussi di lavoro secondari, vengono eseguiti i restanti 3000 flussi di lavoro secondari.

Quando una Map Run ha completato la sua esecuzione o viene interrotta, il numero di esecuzioni di workflow secondarie redrive nello stato In sospeso viene reimpostato su 0.

Scenari di input utilizzati su Map Run redrive

A seconda del modo in cui hai fornito l'input alla Mappa Distribuita nel tentativo di esecuzione originale, redriven Map Run utilizzerà l'input come descritto nella tabella seguente.

Inserimento nel tentativo di esecuzione originale Input utilizzato su Map Run redrive
Input passato da uno stato precedente o dall'input di esecuzione. redrivenMap Run utilizza lo stesso input.
L'input è passato utilizzando ItemReader e Map Run non ha avviato le esecuzioni del workflow secondario perché è vera una delle seguenti condizioni:
redrivenMap Run utilizza l'input nel bucket Amazon S3.
Input passato utilizzando. ItemReader Map Run non è riuscito dopo l'avvio o il tentativo di avviare esecuzioni secondarie di workflow. redrivenMap Run utilizza lo stesso input fornito nel tentativo di esecuzione originale.

Autorizzazione IAM redrive a Map Run

Step Functions necessita dell'autorizzazione appropriata per eseguire redrive una Map Run. Il seguente esempio di policy IAM concede il minimo privilegio richiesto alla macchina a stati per redriving una Map Run. Ricordati di sostituire il testo in corsivo con le informazioni specifiche della risorsa.

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

RedrivingMap Run nella console

L'immagine seguente mostra il grafico di esecuzione di una macchina a stati che contiene una mappa distribuita. Questa esecuzione non è riuscita perché l'esecuzione della mappa non è riuscita. Per redrive Map Run, è necessario redrive il flusso di lavoro principale.

Grafico dell'esecuzione non riuscita di una macchina a stati causata da una mancata esecuzione della mappa.
A redrive un Map Run dalla console
  1. Apri la console Step Functions, quindi scegli una macchina a stati esistente che contenga una mappa distribuita la cui esecuzione non è riuscita.

  2. Nella pagina dei dettagli della macchina a stati, in Esecuzioni, scegli un'istanza di esecuzione non riuscita di questa macchina a stati.

  3. Scegli Redrive.

  4. Nella finestra Redrivedi dialogo, scegliete Redriveesecuzione.

    Suggerimento

    È inoltre possibile eseguire redrive un Map Run dalla pagina Dettagli di esecuzione o Dettagli di esecuzione della mappa.

    Se ti trovi nella pagina Dettagli di esecuzione, esegui una delle seguenti operazioni: redrive

    • Scegli Ripristina, quindi seleziona Redriveda errore.

    • Scegli Azioni, quindi seleziona Redrive.

    Se ti trovi nella pagina Map Run Details, scegli Recupera, quindi seleziona RedriveExtra Failure.

    Si noti che redrive utilizza la stessa definizione di macchina a stati e lo stesso ARN. Continua a eseguire l'esecuzione dal passaggio che non è riuscito nel tentativo di esecuzione originale. In questo esempio, si tratta del passaggio Distributed Map denominato Map e del passaggio di input Process al suo interno. Dopo aver riavviato le esecuzioni non riuscite del workflow secondario di Map Run, redrive continuerà l'esecuzione per il passaggio Done.

  5. Dalla pagina Dettagli di esecuzione, scegli Map Run per vedere i dettagli di Map Run. redriven

    In questa pagina puoi visualizzare i risultati dell'redrivenesecuzione. Ad esempio, nella Riepilogo dell'esecuzione di Map Run sezione, puoi vedere il Redriveconteggio, che rappresenta il numero di volte in cui è stata eseguita la Map Runredriven. Nella sezione Eventi, è possibile visualizzare gli eventi di esecuzione redrive correlati aggiunti agli eventi del tentativo di esecuzione originale. Ad esempio, l'MapRunRedrivenevento.

Dopo aver eseguito redriven una Map Run, puoi esaminarne redrive i dettagli nella console o utilizzare le azioni GetExecutionHistorye DescribeExecutionAPI. Per ulteriori informazioni sull'esame di un'redrivenesecuzione, consultaredrivenEsame delle esecuzioni.

RedrivingMap Run utilizzando l'API

Puoi creare redrive un Map Run idoneo utilizzando l'RedriveExecutionAPI nel flusso di lavoro principale. Questa API riavvia le esecuzioni di workflow secondarie non riuscite in un Map Run.

In AWS Command Line Interface (AWS CLI), esegui il seguente comando per redrive un'esecuzione non riuscita di una macchina a stati. Ricordati di sostituire il testo in corsivo con le informazioni specifiche della risorsa.

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

Dopo aver eseguito redriven una Map Run, puoi esaminarne redrive i dettagli nella console o utilizzando l'azione API. DescribeMapRun Per esaminare i redrive dettagli delle esecuzioni dei flussi di lavoro standard in un Map Run, puoi utilizzare l'azione GetExecutionHistoryo DescribeExecutionAPI. Per ulteriori informazioni sull'esame di un'redrivenesecuzione, vedere. redrivenEsame delle esecuzioni

Puoi esaminare redrive i dettagli delle esecuzioni del flusso di lavoro Express in un Map Run sulla console Step Functions se hai abilitato la registrazione sul flusso di lavoro principale. Per ulteriori informazioni, consulta Registrazione utilizzandoCloudWatchRegistri.