Réparation et reprise de l'exécution d'un flux de travail - AWS Glue

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.

Reprise d'une exécution de flux de travail : comment ça marche

Examinez le flux de travail W1 dans le diagramme suivant.

Les déclencheurs sont affichés dans des rectangles et les tâches dans des cercles. Le déclencheur T1 à gauche démarre le flux de travail en exécutant la tâche J1. Les déclencheurs et les tâches suivants existent, mais les tâches J2 et J3 échouent, de sorte que les déclencheurs et les tâches en aval sont affichés comme non exécutés.

L'exécution de flux de travail se déroule comme suit :

  1. Le déclencheur T1 démarre la tâche J1.

  2. La réussite de la tâche J1 déclenche T2 et T3, qui exécutent les tâches J2 et J3, respectivement.

  3. Les tâches J2 et J3 échouent.

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

Les travaux J2 et J3 sont signalés comme des nœuds qui doivent être repris. Les déclencheurs et les tâches en aval sont affichés comme exécutés avec succès.

L'exécution de flux de travail reprend comme suit :

  1. Les tâches J2 et J3 sont exécutées avec succès.

  2. Déclenche T4 et T5.

  3. 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).

Un tableau sous l'onglet History (Historique) d'un flux de travail contient deux lignes, une pour chaque exécution de flux de travail. La première ligne possède à la fois un ID d'exécution et un ID d'exécution précédente. La deuxième ligne n'a qu'un ID d'exécution. L'ID d'exécution précédent dans la première ligne est le même que l'ID d'exécution dans la 2e 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)
  1. 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).

  2. Dans le panneau de navigation, sous ETL, sélectionnez Workflows (Flux de travail).

  3. Sélectionnez un flux de travail, puis l'onglet History (Historique).

  4. 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).

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

  6. Dans le volet de détails à droite du graphique, cochez la case Resume (Reprendre).

    Le graphique d'exécution montre trois nœuds, y compris un nœud de tâche ayant échoué. Le volet des détails de la tâche à droite comprend une case à cocher Resume (Reprendre).

    Le nœud change de couleur et affiche une petite icône de CV en haut à droite.

    La modification du graphique d'exécution est décrite dans le texte. La case Resume (Reprendre) est cochée.
  7. Effectuez les deux étapes précédentes pour redémarrer tous les nœuds supplémentaires.

  8. Sélectionnez Resume (Reprendre l'exécution).

Pour reprendre l'exécution d'un flux de travail (AWS CLI)
  1. Assurez-vous de disposer de l'autorisation IAM glue:ResumeWorkflowRun.

  2. Récupérez les ID de nœud pour les nœuds que vous souhaitez redémarrer.

    1. 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 commande get-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.

    2. Localisez les nœuds qui vous intéressent avec les propriétés Type et Name 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"
                  }
              ]
          }
      }
    3. Obtenez l'ID de nœud à partir de la propriété UniqueId de l'objet nœud.

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