Ripresa e ripristino dell'esecuzione di un flusso di lavoro - AWS Glue

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à.

Ripresa e ripristino dell'esecuzione di un flusso di lavoro

Se uno o più nodi (processi o crawler) in un flusso di lavoro non vengono completati correttamente, ciò significa che il flusso di lavoro è stato eseguito solo parzialmente. Dopo aver individuato le cause principali e apportato le correzioni, è possibile selezionare uno o più nodi da cui riprendere l'esecuzione del flusso di lavoro e quindi riprendere l'esecuzione del flusso di lavoro. Vengono eseguiti i nodi selezionati e tutti i nodi che sono a valle dei nodi selezionati.

Riprendere un'esecuzione del flusso di lavoro: come funziona

Considera il flusso di lavoro W1 nel diagramma seguente.

I trigger sono rappresentati come rettangoli e i processi rappresentati come cerchi. Il trigger T1 a sinistra avvia il flusso di lavoro eseguendo il processo J1. I trigger e i processi successivi esistono, ma i processi J2 e J3 non riescono, quindi i trigger e i processi a valle vengono visualizzati come non eseguiti.

L'esecuzione del flusso di lavoro si svolge come segue:

  1. Il trigger T1 avvia il processo J1.

  2. Il completamento riuscito di J1 attiva i trigger T2 e T3, che eseguono i processi J2 e J3, rispettivamente.

  3. I processi J2 e J3 non riescono.

  4. I trigger T4 e T5 dipendono dal completamento riuscito di J2 e J3, quindi non si attivano e i processi J4 e J5 non vengono eseguiti. Il flusso di lavoro W1 viene eseguito solo parzialmente.

Ora supponiamo che i problemi che hanno causato la non riuscita di J2 e J3 vengano corretti. J2 e J3 sono selezionati come punti di partenza da cui riprendere l'esecuzione del flusso di lavoro.

I processi J2 e J3 sono contrassegnati come nodi da riprendere. I trigger e i processi a valle vengono visualizzati come eseguiti correttamente.

L'esecuzione del flusso di lavoro riprende come segue:

  1. I processi J2 e J3 vengono eseguiti correttamente.

  2. I trigger T4 e T5 si attivano.

  3. I processi J4 e J5 vengono eseguiti correttamente.

L'esecuzione del flusso di lavoro ripreso viene registrata come un'esecuzione separata del flusso di lavoro con un nuovo ID di esecuzione. Nella cronologia del flusso di lavoro, è possibile visualizzare l'ID dell' esecuzione precedente per qualsiasi esecuzione del flusso di lavoro. Nell'esempio nello screenshot seguente, un nodo dell'esecuzione del flusso di lavoro con ID di esecuzione wr_c7a22... (la seconda riga) non è stato completato. L'utente ha risolto il problema e ha ripreso l'esecuzione del flusso di lavoro, con ID di esecuzione wr_a07e55... (la prima riga).

Una tabella nella scheda History (Cronologia) di un flusso di lavoro contiene due righe, una per ogni esecuzione del flusso di lavoro. La prima riga ha un ID di esecuzione e un ID di esecuzione precedente. La seconda riga ha solo un ID di esecuzione. L'ID di esecuzione precedente nella prima riga corrisponde all'ID di esecuzione nella seconda riga.
Nota

Per il resto di questo articolo, il termine "esecuzione del flusso di lavoro ripreso" si riferisce all'esecuzione del flusso di lavoro creata quando è stata ripresa l'esecuzione precedente del flusso di lavoro. L'"esecuzione del flusso di lavoro originale" indica l'esecuzione del flusso di lavoro che è stata eseguita solo parzialmente e che doveva essere ripresa.

Grafico dell'esecuzione del flusso di lavoro ripreso

In un'esecuzione del flusso di lavoro ripreso, nonostante venga eseguito solo un sottoinsieme di nodi, il grafico di esecuzione è un grafico completo. Cioè, i nodi che non sono stati eseguiti nel flusso di lavoro ripreso vengono copiati dal grafico dell'esecuzione del flusso di lavoro originale. I nodi del processo e del crawler copiati eseguiti nell'esecuzione del flusso di lavoro originale includono dettagli di esecuzione.

Considera nuovamente il flusso di lavoro W1 nel diagramma precedente. Quando l'esecuzione del flusso di lavoro viene ripresa a partire da J2 e J3, il grafico di esecuzione per l'esecuzione del flusso di lavoro ripreso mostra tutti i processi, da J1 a J5, e tutti i trigger, da T1 a T5. I dettagli del processo per J1 vengono copiati dall'esecuzione del flusso di lavoro originale.

Snapshot dell'esecuzione del flusso di lavoro

All'avvio di un'esecuzione del flusso di lavoro, AWS Glue acquisisce uno snapshot del grafico di progettazione del flusso di lavoro in quel momento. Lo snapshot viene utilizzato per la durata dell'esecuzione del flusso di lavoro. Se si apportano modifiche a qualsiasi trigger dopo l'avvio dell'esecuzione, tali modifiche non influiscono sull'esecuzione del flusso di lavoro corrente. Gli snapshot garantiscono che le esecuzioni del flusso di lavoro procedano in modo coerente.

Gli snapshot rendono immutabili solo i trigger. Le modifiche apportate ai processi a valle e ai crawler durante l'esecuzione del flusso di lavoro diventano effettive per l'esecuzione corrente.

Riprendere un'esecuzione di flusso di lavoro

Segui questi passaggi per riprendere un'esecuzione di flusso di lavoro. È possibile riprendere un'esecuzione di flusso di lavoro utilizzando la console AWS Glue, l'API o AWS Command Line Interface (AWS CLI).

Per riprendere un flusso di lavoro (console)
  1. Apri la console AWS Glue all'indirizzo https://console.aws.amazon.com/glue/.

    Accedi come utente che dispone delle autorizzazioni per visualizzare i flussi di lavoro e riprendere le esecuzioni dei flussi di lavoro.

    Nota

    Per riprendere l'esecuzione del flusso di lavoro, è necessaria l'autorizzazione glue:ResumeWorkflowRun AWS Identity and Access Management (IAM).

  2. Nel pannello di navigazione, scegli Workflows (Flussi di lavoro).

  3. Seleziona un flusso di lavoro, quindi la scheda History (Cronologia).

  4. Seleziona un'esecuzione del flusso di lavoro eseguita solo parzialmente, quindi seleziona View run details (Visualizza i dettagli dell'esecuzione).

  5. Nel grafico di esecuzione seleziona il primo (o solo) nodo da riavviare e da cui riprendere l'esecuzione del flusso di lavoro.

  6. Nel riquadro dei dettagli a destra del grafico, seleziona la casella di controlloResume (Riprendi).

    Il grafico di esecuzione mostra tre nodi, incluso un nodo di processo non riuscito. Il riquadro dei dettagli processo a destra include una casella di controllo Resume (Riprendi).

    Il nodo cambia colore e mostra una piccola icona di ripresa in alto a destra.

    La modifica al grafico di esecuzione è descritta nel testo. La casella di controllo Riprendi (Resume) è selezionata.
  7. Completa i due passaggi precedenti per riavviare eventuali nodi aggiuntivi.

  8. Seleziona Resume (Riprendi).

Per riprendere un flusso di lavoro (AWS CLI)
  1. Assicurati di disporre dell'autorizzazione glue:ResumeWorkflowRun IAM.

  2. Recupera un elenco degli ID dei i nodi da riavviare.

    1. Esegui il comando get-workflow-run per l'esecuzione del flusso di lavoro originale. Fornisci il nome del flusso di lavoro e l'ID di esecuzione e aggiungi l'opzione --include-graph, come mostrato nell'esempio seguente. Recupera l'ID di esecuzione dalla scheda History (Cronologia) sulla console o eseguendo il comando get-workflow.

      aws glue get-workflow-run --name cloudtrailtest1 --run-id wr_a07e55f2087afdd415a404403f644a4265278f68b13ba3da08c71924ebe3c3a8 --include-graph

      Il comando restituisce i nodi e gli estremi del grafico come un oggetto JSON di grandi dimensioni.

    2. Individua i nodi di interesse dalle proprietà Type e Name degli oggetti nodo.

      Il seguente è un esempio di oggetto nodo dell'output.

      {
          "Type": "JOB",
          "Name": "test1_post_failure_4592978",
          "UniqueId": "wnode_d1b2563c503078b153142ee76ce545fe5ceef66e053628a786ddd74a05da86fd",
          "JobDetails": {
              "JobRuns": [
                  {
                      "Id": "jr_690b9f7fc5cb399204bc542c6c956f39934496a5d665a42de891e5b01f59e613",
                      "Attempt": 0,
                      "TriggerName": "test1_aggregate_failure_649b2432",
                      "JobName": "test1_post_failure_4592978",
                      "StartedOn": 1595358275.375,
                      "LastModifiedOn": 1595358298.785,
                      "CompletedOn": 1595358298.785,
                      "JobRunState": "FAILED",
                      "PredecessorRuns": [],
                      "AllocatedCapacity": 0,
                      "ExecutionTime": 16,
                      "Timeout": 2880,
                      "MaxCapacity": 0.0625,
                      "LogGroupName": "/aws-glue/python-jobs"
                  }
              ]
          }
      }
    3. Recupera l'ID nodo dalla proprietà UniqueId dell'oggetto nodo.

  3. Esegui il comando resume-workflow-run. Specifica il nome del flusso di lavoro, l'ID di esecuzione e l'elenco degli ID di nodo separati da spazi, come mostrato nell'esempio seguente.

    aws glue resume-workflow-run --name cloudtrailtest1 --run-id wr_a07e55f2087afdd415a404403f644a4265278f68b13ba3da08c71924ebe3c3a8 --node-ids wnode_ca1f63e918fb855e063aed2f42ec5762ccf71b80082ae2eb5daeb8052442f2f3 wnode_d1b2563c503078b153142ee76ce545fe5ceef66e053628a786ddd74a05da86fd

    Il comando restituisce l'ID di esecuzione della (nuova) esecuzione del flusso di lavoro ripresa e un elenco di nodi che verranno avviati.

    {
        "RunId": "wr_2ada0d3209a262fc1156e4291134b3bd643491bcfb0ceead30bd3e4efac24de9",
        "NodeIds": [
            "wnode_ca1f63e918fb855e063aed2f42ec5762ccf71b80082ae2eb5daeb8052442f2f3"
        ]
    }
    

    Nota che anche se l'esempio resume-workflow-run elencava due nodi da riavviare, l'output di esempio indicava che un solo nodo sarebbe stato riavviato. Questo perché un nodo era a valle dell'altro nodo e il nodo a valle viene comunque riavviato dal flusso normale del flusso di lavoro.

Note e limitazioni per la ripresa delle esecuzioni del flusso di lavoro

Tieni presente le seguenti note e limitazioni per la ripresa delle esecuzioni del flusso di lavoro.

  • È possibile riprendere l'esecuzione di un flusso di lavoro solo se si trova nello stato COMPLETED.

    Nota

    Anche se uno o più nodi in un'esecuzione del flusso di lavoro non vengono completati, lo stato di esecuzione del flusso di lavoro viene visualizzato come COMPLETED. Accertati di controllare il grafico di esecuzione per individuare eventuali nodi che non sono stati completati correttamente.

  • È possibile riprendere l'esecuzione di un flusso di lavoro da qualsiasi nodo del processo o del crawler che il flusso di lavoro originale ha tentato di eseguire. Non è possibile riprendere l'esecuzione di un flusso di lavoro da un nodo trigger.

  • Il riavvio di un nodo non ne reimposta lo stato. Tutti i dati parzialmente elaborati non vengono ripristinati.

  • È possibile riprendere la stessa esecuzione del flusso di lavoro più volte. Se un flusso di lavoro ripreso viene eseguito solo parzialmente, è possibile risolvere il problema e riprendere nuovamente l'esecuzione.

  • Se si selezionano due nodi da riavviare e dipendono l'uno dall'altro, il nodo a monte viene eseguito prima del nodo a valle. Di fatto, la selezione del nodo a valle è ridondante, perché viene eseguito in base al normale flusso di lavoro.