Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Réparation et reprise de l'exécution d'un flux de travail
Si un ou plusieurs nœuds (tâches ou crawlers) d'un flux de travail ne se terminent pas correctement, cela signifie que le flux de travail n'a été exécuté que partiellement. Après avoir trouvé les causes premières et apporté des corrections, vous pouvez sélectionner un ou plusieurs nœuds à partir desquels reprendre l'exécution du flux de travail, puis reprendre celle-ci. Les nœuds sélectionnés et tous les nœuds en aval de ces nœuds sont ensuite exécutés.
Rubriques
Reprise d'une exécution de flux de travail : comment ça marche
Examinez le flux de travail W1 dans le diagramme suivant.
L'exécution de flux de travail se déroule comme suit :
-
Le déclencheur T1 démarre la tâche J1.
-
La réussite de la tâche J1 déclenche T2 et T3, qui exécutent les tâches J2 et J3, respectivement.
-
Les tâches J2 et J3 échouent.
-
Les déclencheurs T4 et T5 dépendent de la réussite de J2 et J3, ils ne se déclenchent donc pas et les tâches J4 et J5 ne s'exécutent pas. Le flux de travail W1 n'est exécuté que partiellement.
À présent, supposons que les problèmes qui ont causé l'échec de J2 et J3 sont corrigés. J2 et J3 sont sélectionnés comme points de départ à partir desquels reprendre l'exécution du flux de travail.
L'exécution de flux de travail reprend comme suit :
-
Les tâches J2 et J3 sont exécutées avec succès.
-
Déclenche T4 et T5.
-
Les tâches J4 et J5 sont exécutées avec succès.
La reprise de l'exécution du flux de travail est suivie en tant qu'exécution de flux de travail distincte avec un nouvel ID d'exécution. Lorsque vous affichez l'historique du flux de travail, vous pouvez afficher l'ID d'exécution précédente pour toute exécution de flux de travail. Dans l'exemple de la capture d'écran suivante, le flux de travail exécuté avec l'ID d'exécution wr_c7a22...
(la deuxième ligne) avait un nœud qui ne s'est pas terminé. L'utilisateur a résolu le problème et a repris l'exécution du flux de travail, ce qui a entraîné l'ID d'exécution wr_a07e55...
(la première ligne).
Note
Pour le reste de cette discussion, le terme « reprise de l'exécution du flux de travail » fait référence à l'exécution du flux de travail qui a été créée lors de la reprise de l'exécution du flux de travail précédente. L'« exécution du flux de travail d'origine » fait référence à l'exécution du flux de travail qui n'a été exécutée que partiellement et qui devait être reprise.
Graphique de la reprise d’une l'exécution du flux de travail
Dans une exécution de flux de travail reprise, bien que seul un sous-ensemble de nœuds soit exécuté, le graphique d'exécution est un graphique complet. Autrement dit, les nœuds qui ne se sont pas exécutés dans le flux de travail repris sont copiés à partir du graphique d'exécution de l'exécution du flux de travail d'origine. Les nœuds de tâche et d'crawler copiés qui ont été exécutés dans l'exécution du flux de travail d'origine incluent les détails de l'exécution.
Considérez à nouveau le flux de travail W1 dans le diagramme précédent. Lorsque l'exécution du flux de travail reprend en commençant par J2 et J3, le graphique d'exécution de l'exécution de flux de travail reprise affiche tous les travaux, J1 à J5, et tous les déclencheurs, T1 à T5. Les détails de l'exécution pour J1 sont copiés à partir de l'exécution du flux de travail d'origine.
Instantanés d'exécution de flux de travail
Lorsqu'une exécution de flux de travail est démarrée, AWS Glue prend un instantané du graphique de conception de flux de travail à ce moment-là. Cet instantané est utilisé pendant toute la durée de l'exécution du flux de travail. Si vous apportez des modifications à des déclencheurs après le démarrage de l'exécution, ces modifications n'affectent pas l'exécution du flux de travail en cours. Les instantanés garantissent que les exécutions du flux de travail se déroulent de manière cohérente.
Les instantanés rendent les déclencheurs inaltérables uniquement. Les modifications que vous apportez aux tâches en aval et aux crawlers pendant l'exécution du flux de travail prennent effet pour l'exécution en cours.
Reprise de l'exécution d'un flux de travail
Procédez comme suit pour reprendre l'exécution d'un flux de travail. Vous pouvez reprendre l'exécution d'un flux de travail à l'aide de la Console AWS Glue, l'API ou AWS Command Line Interface (AWS CLI).
Pour reprendre l'exécution d'un flux de travail (console)
-
Ouvrez la console AWS Glue, à l'adresse https://console.aws.amazon.com/glue/
. Connectez-vous en tant qu'utilisateur autorisé à afficher les flux de travail et à reprendre les exécutions de flux de travail.
Note
Pour reprendre les exécutions de flux de travail, vous avez besoin de l'autorisation
glue:ResumeWorkflowRun
d'AWS Identity and Access Management (IAM). -
Dans le panneau de navigation, sous ETL, sélectionnez Workflows (Flux de travail).
-
Sélectionnez un flux de travail, puis l'onglet History (Historique).
-
Sélectionnez l'exécution du flux de travail qui n'a été exécutée que partiellement, puis sélectionnez View run details (Afficher les détails de l'exécution).
-
Dans le graphique d'exécution, sélectionnez le premier (ou le seul) nœud que vous souhaitez redémarrer et à partir duquel vous souhaitez reprendre l'exécution du flux de travail.
-
Dans le volet de détails à droite du graphique, cochez la case Resume (Reprendre).
Le nœud change de couleur et affiche une petite icône de CV en haut à droite.
-
Effectuez les deux étapes précédentes pour redémarrer tous les nœuds supplémentaires.
-
Sélectionnez Resume (Reprendre l'exécution).
Pour reprendre l'exécution d'un flux de travail (AWS CLI)
-
Assurez-vous de disposer de l'autorisation IAM
glue:ResumeWorkflowRun
. -
Récupérez les ID de nœud pour les nœuds que vous souhaitez redémarrer.
-
Exécutez la commande
get-workflow-run
pour l'exécution du flux de travail d'origine. Fournissez le nom du flux de travail et l'ID d'exécution, puis ajoutez l'option--include-graph
, comme illustré dans l'exemple suivant. Obtenez l'ID d'exécution dans l'onglet History (Historique) de la console ou en exécutant la commandeget-workflow
.aws glue get-workflow-run --name cloudtrailtest1 --run-id wr_a07e55f2087afdd415a404403f644a4265278f68b13ba3da08c71924ebe3c3a8 --include-graph
La commande renvoie les nœuds et les bords du graphique sous la forme d'un objet JSON volumineux.
-
Localisez les nœuds qui vous intéressent avec les propriétés
Type
etName
des objets de nœud.Ce qui suit est un exemple d'objet nœud de la sortie.
{ "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" } ] } }
-
Obtenez l'ID de nœud à partir de la propriété
UniqueId
de l'objet nœud.
-
-
Exécutez la commande
resume-workflow-run
. Fournissez le nom du flux de travail, l'ID d'exécution et la liste des ID de nœud séparés par des espaces, comme illustré dans l'exemple suivant.aws glue resume-workflow-run --name cloudtrailtest1 --run-id wr_a07e55f2087afdd415a404403f644a4265278f68b13ba3da08c71924ebe3c3a8 --node-ids wnode_ca1f63e918fb855e063aed2f42ec5762ccf71b80082ae2eb5daeb8052442f2f3 wnode_d1b2563c503078b153142ee76ce545fe5ceef66e053628a786ddd74a05da86fd
La commande génère l'ID d'exécution de la (nouvelle) exécution de flux de travail reprise et une liste de nœuds qui seront démarrés.
{ "RunId": "wr_2ada0d3209a262fc1156e4291134b3bd643491bcfb0ceead30bd3e4efac24de9", "NodeIds": [ "wnode_ca1f63e918fb855e063aed2f42ec5762ccf71b80082ae2eb5daeb8052442f2f3" ] }
Notez que bien que l'exemple de commande
resume-workflow-run
répertorie deux nœuds à redémarrer, l'exemple de sortie indiquait qu'un seul nœud serait redémarré. C'est parce qu'un nœud était en aval de l'autre nœud, et le nœud en aval serait redémarré de toute façon par le flux normal du flux de travail.
Remarques et limitations pour la reprise des exécutions de flux de travail
Gardez les notes et limitations suivantes à l'esprit lors de la reprise des exécutions du flux de travail.
-
Vous pouvez reprendre l'exécution d'un flux de travail uniquement s'il est dans l'état
COMPLETED
.Note
Même si un ou plusieurs nœuds d'une exécution de flux de travail ne se terminent pas, l'état d'exécution du flux de travail est affiché sous la forme
COMPLETED
. Assurez-vous de vérifier le graphique d'exécution pour découvrir tous les nœuds qui ne se sont pas terminés avec succès. -
Vous pouvez reprendre une exécution de flux de travail à partir de n'importe quel tâche ou nœud d'crawler que l'exécution de flux de travail d'origine a tenté d'exécuter. Vous ne pouvez pas reprendre un flux de travail exécuté à partir d'un nœud déclencheur.
-
Le redémarrage d'un nœud ne réinitialise pas son état. Toutes les données partiellement traitées ne sont pas annulées.
-
Vous pouvez reprendre le même flux de travail plusieurs fois. Si une exécution de flux de travail reprise s'exécute partiellement, vous pouvez résoudre le problème et reprendre l'exécution.
-
Si vous sélectionnez deux nœuds à redémarrer et qu'ils dépendent l'un de l'autre, le nœud en amont est exécuté avant le nœud en aval. En fait, la sélection du nœud en aval est redondante, car elle sera exécutée selon le flux normal du flux de travail.