Reparar e retomar uma execução de fluxo de trabalho
Se um ou mais nós (trabalhos ou crawlers) em um fluxo de trabalho não forem concluídos com êxito, isso significa que o fluxo de trabalho foi executado apenas parcialmente. Depois de localizar as causas raiz e fazer correções, você pode selecionar um ou mais nós de onde retomar a execução do fluxo de trabalho e, em seguida, retomá-la. Os nós selecionados e todos os nós que estão a jusante desses nós são então executados.
Tópicos
Retomar uma execução de fluxo de trabalho: como funciona
Considere o fluxo de trabalho W1 no diagrama a seguir.
A execução do fluxo de trabalho prossegue da seguinte forma:
-
O acionador T1 inicia o trabalho J1.
-
A conclusão bem-sucedida de J1 aciona T2 e T3, que executam os trabalhos J2 e J3, respectivamente.
-
Os trabalhos J2 e J3 falham.
-
Os acionadores T4 e T5 dependem da conclusão bem-sucedida de J2 e J3, então eles não disparam, e os trabalhos J4 e J5 não são executados. O fluxo de trabalho W1 é executado apenas parcialmente.
Agora, suponha que os problemas que causaram a falha de J2 e J3 sejam corrigidos. J2 e J3 são selecionados como os pontos de partida para retomar a execução do fluxo de trabalho.
A execução do fluxo de trabalho é retomada da seguinte forma:
-
Os trabalhos J2 e J3 são executados com êxito.
-
Os acionadores T4 e T5 disparam.
-
Os trabalhos J4 e J5 são executados com êxito.
A execução do fluxo de trabalho retomado é rastreada como uma execução de fluxo de trabalho separada com um novo ID de execução. Ao exibir o histórico do fluxo de trabalho, você pode exibir o ID de execução anterior para qualquer execução do fluxo de trabalho. No exemplo na captura de tela a seguir, o fluxo de trabalho executado com o ID de execução wr_c7a22...
(a segunda linha) tinha um nó que não foi concluído. O usuário corrigiu o problema e retomou a execução do fluxo de trabalho, o que resultou no ID de execução wr_a07e55...
(a primeira linha).
nota
Para o resto desta discussão, o termo “execução do fluxo de trabalho retomado” refere-se à execução do fluxo de trabalho que foi criada quando a execução do fluxo de trabalho anterior foi retomada. A “execução do fluxo de trabalho original” refere-se à execução do fluxo de trabalho que foi executada apenas parcialmente e que precisava ser retomada.
Grafo de execução de fluxo de trabalho retomada
Em uma execução de fluxo de trabalho retomada, embora apenas um subconjunto de nós seja executado, o gráfico de execução é um gráfico completo. Ou seja, os nós que não foram executados no fluxo de trabalho retomado são copiados do gráfico de execução da execução do fluxo de trabalho original. Os nós de trabalho e crawler copiados executados na execução do fluxo de trabalho original incluem os detalhes da execução.
Considere novamente o fluxo de trabalho W1 no diagrama anterior. Quando a execução do fluxo de trabalho é retomada começando com J2 e J3, o gráfico para a execução do fluxo de trabalho retomado mostra todos os trabalhos, J1 a J5, e todos os acionadores, T1 a T5. Os detalhes da execução para J1 são copiados da execução do fluxo de trabalho original.
Snapshots da execução do fluxo de trabalho
Quando uma execução de fluxo de trabalho é iniciada, o AWS Glue tira um snapshot do gráfico de design do fluxo de trabalho naquele ponto no tempo. Esse snapshot é usado durante a execução do fluxo de trabalho. Se você fizer alterações em quaisquer acionadores após o início da execução, essas alterações não afetarão a execução do fluxo de trabalho atual. Os snapshots garantem que as execuções do fluxo de trabalho prossigam de maneira consistente.
Os snapshots tornam apenas os acionadores imutáveis. As alterações feitas em trabalhos e crawlers a jusante durante a execução do fluxo de trabalho entram em vigor para a execução atual.
Retomar uma execução de fluxo de trabalho
Siga estas etapas para retomar uma execução de fluxo de trabalho. Você pode retomar uma execução de fluxo de trabalho usando o console do AWS Glue, a API ou o AWS Command Line Interface (AWS CLI).
Como retomar a execução de um fluxo de trabalho (console)
-
Abra o console do AWS Glue em https://console.aws.amazon.com/glue/
. Faça login como um usuário que tem permissões para exibir fluxos de trabalho e retomar execuções de fluxo de trabalho.
nota
Para retomar execuções de fluxo de trabalho, você precisa da permissão
glue:ResumeWorkflowRun
do AWS Identity and Access Management (IAM). -
No painel de navegação, escolha Workflows (Fluxos de trabalho).
-
Selecione um fluxo de trabalho e escolha a guia History (Histórico).
-
Selecione a execução do fluxo de trabalho que foi executada apenas parcialmente e escolha View run details (Visualizar detalhes da execução).
-
No gráfico de execução, selecione o primeiro (ou único) nó que deseja reiniciar e do qual deseja retomar a execução do fluxo de trabalho.
-
No painel de detalhes à direita do gráfico, selecione a caixa de seleção Resume (Retomar).
O nó muda de cor e mostra um pequeno ícone de retomada no canto superior direito.
-
Conclua as duas etapas anteriores para que todos os nós adicionais reiniciem.
-
Selecione Resume run (Retomar execução).
Para retomar a execução de um fluxo de trabalho (AWS CLI)
-
Verifique se você tem a permissão
glue:ResumeWorkflowRun
do IAM. -
Recupere os IDs de nós dos nós que você deseja reiniciar.
-
Execute o comando
get-workflow-run
para a execução do fluxo de trabalho original. Forneça o nome do fluxo de trabalho e o ID de execução, e adicione a opção--include-graph
, conforme mostrado no exemplo a seguir. Obtenha o ID de execução na guia History (Histórico) no console, ou executando o comandoget-workflow
.aws glue get-workflow-run --name cloudtrailtest1 --run-id wr_a07e55f2087afdd415a404403f644a4265278f68b13ba3da08c71924ebe3c3a8 --include-graph
O comando retorna os nós e as bordas do gráfico como um objeto JSON grande.
-
Localize os nós de interesse pelas propriedades
Type
eName
dos objetos de nó.A seguir, está um exemplo de objeto de nó da saída.
{ "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" } ] } }
-
Obtenha o ID do nó da propriedade
UniqueId
do objeto de nó.
-
-
Execute o comando
resume-workflow-run
. Forneça o nome do fluxo de trabalho, o ID da execução e a lista de IDs de nós separados por espaços, conforme mostrado no exemplo a seguir.aws glue resume-workflow-run --name cloudtrailtest1 --run-id wr_a07e55f2087afdd415a404403f644a4265278f68b13ba3da08c71924ebe3c3a8 --node-ids wnode_ca1f63e918fb855e063aed2f42ec5762ccf71b80082ae2eb5daeb8052442f2f3 wnode_d1b2563c503078b153142ee76ce545fe5ceef66e053628a786ddd74a05da86fd
O comando gera o ID de execução do fluxo de trabalho retomado (novo) e uma lista de nós que serão iniciados.
{ "RunId": "wr_2ada0d3209a262fc1156e4291134b3bd643491bcfb0ceead30bd3e4efac24de9", "NodeIds": [ "wnode_ca1f63e918fb855e063aed2f42ec5762ccf71b80082ae2eb5daeb8052442f2f3" ] }
Note que, apesar do comando de exemplo
resume-workflow-run
ter listado dois nós para reiniciar, a saída de exemplo indicou que apenas um nó seria reiniciado. Isso ocorre porque um nó estava a jusante do outro, e o nó a jusante seria reiniciado de qualquer maneira pelo fluxo normal do fluxo de trabalho.
Observações e limitações para retomar execuções de fluxo de trabalho
Tenha em mente as seguintes observações e limitações ao retomar as execuções do fluxo de trabalho.
-
Você pode retomar uma execução de fluxo de trabalho somente se ele estiver no estado
COMPLETED
.nota
Mesmo que um ou mais nós em uma execução de fluxo de trabalho não sejam concluídos, o estado de execução do fluxo de trabalho é mostrado como
COMPLETED
. Certifique-se de verificar o gráfico de execução para descobrir todos os nós que não foram concluídos com êxito. -
Você pode retomar uma execução de fluxo de trabalho de qualquer nó de trabalho ou crawler que a execução do fluxo de trabalho original tenha tentado executar. Não é possível retomar uma execução de fluxo de trabalho de um nó de acionador.
-
Reiniciar um nó não redefine seu estado. Todos os dados que foram parcialmente processados não são revertidos.
-
Você pode retomar a mesma execução de fluxo de trabalho várias vezes. Se um fluxo de trabalho retomado for executado apenas parcialmente, você poderá resolver o problema e retomar a execução retomada.
-
Se você selecionar dois nós a serem reiniciados e eles dependerem um do outro, o nó a montante será executado antes do nó a jusante. Na verdade, selecionar o nó a montante é redundante, pois ele será executado de acordo com o fluxo normal do fluxo de trabalho.