Redriving Exécutions de la carte dans Step Functions - AWS Step Functions

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.

Redriving Exécutions de la carte dans Step Functions

Vous pouvez redémarrer les exécutions infructueuses d'un flux de travail enfant dans une carte exécutée par redrivingvotre flux de travail parent. A redriven flux de travail parent redrives tous les états infructueux, y compris la carte distribuée. Un flux de travail parent réactive les états ayant échoué s'il n'existe aucun <stateType>Exited événement correspondant à l'<stateType>Enteredévénement correspondant à un état lorsque le flux de travail parent a terminé son exécution. Par exemple, si l'historique des événements ne contient pas l'MapStateExitedévénement correspondant à un MapStateEntered événement, vous pouvez redrive le flux de travail parent pour redrive toutes les exécutions infructueuses du flux de travail enfant dans le Map Run.

Une exécution de carte n'est pas démarrée ou échoue lors de la tentative d'exécution initiale lorsque la machine d'état n'a pas l'autorisation requise pour accéder à ItemReader (Carte)ResultWriter (Carte), ou aux deux. Si le Map Run n'a pas été lancé lors de la tentative d'exécution initiale du flux de travail parent, redriving le flux de travail parent lance le Map Run pour la première fois. Pour résoudre ce problème, ajoutez les autorisations requises à votre rôle de machine à états, puis redrive le flux de travail parent. Si vous redrive le flux de travail parent sans ajouter les autorisations requises, il tente de démarrer une nouvelle exécution de Map Run qui échouera à nouveau. Pour plus d'informations sur les autorisations dont vous pourriez avoir besoin, consultezIAMpolitiques relatives à l'utilisation des états cartographiques distribués.

Redrive éligibilité aux flux de travail pour enfants dans un Map Run

Tu peux redrive les exécutions infructueuses du flux de travail enfant dans un Map Run si les conditions suivantes sont remplies :

  • Vous avez commencé l'exécution du flux de travail parent le 15 novembre 2023 ou après cette date. Les exécutions que vous avez commencées avant cette date ne sont pas éligibles redrive.

  • Vous n'avez pas dépassé la limite stricte de 1000 redrives d'un Map Run donné. Si vous avez dépassé cette limite, vous recevrez le States.Runtime message d'erreur.

  • Le flux de travail parent est redrivable. Si le flux de travail parent n'est pas redrivable, tu ne peux pas redrive le flux de travail enfant s'exécute dans un Map Run. Pour plus d'informations sur redrive éligibilité d'un flux de travail, voirRedrive éligibilité en cas d'exécution infructueuse.

  • Les exécutions de flux de travail enfants de type Standard dans votre Map Run n'ont pas dépassé la limite de 25 000 événements d'exécution dans l'historique des événements. Les exécutions de flux de travail des enfants qui ont dépassé la limite d'historique des événements sont prises en compte dans le calcul du seuil d'échec toléré et considérées comme ayant échoué. Pour plus d'informations sur le redrive éligibilité d'une exécution, voirRedrive éligibilité en cas d'exécution infructueuse.

Un nouveau Map Run est lancé, mais pas le Map Run existant redriven dans les cas suivants, même si le Map Run a échoué lors de la tentative d'exécution initiale :

Une exécution cartographique peut continuer à s'exécuter même après l'arrêt ou l'expiration du flux de travail parent. Dans ces scénarios, le redrive ne se produit pas immédiatement :

  • Map Run est peut-être toujours en train d'annuler les exécutions de flux de travail enfant en cours de type Standard ou d'attendre que les exécutions de flux de travail enfants de type Express soient terminées.

  • Map Run est peut-être toujours en train d'écrire des résultats dans leResultWriter (Carte), si vous l'avez configuré pour exporter les résultats.

Dans ces cas, le Map Run en cours d'exécution termine ses opérations avant de tenter de redrive.

Exécution du workflow pour enfants redrive comportement

Le redriven les exécutions de flux de travail enfants dans un Map Run présentent le comportement décrit dans le tableau suivant.

Flux de travail Express pour enfants Flux de travail standard pour enfants
Toutes les exécutions de flux de travail enfant qui ont échoué ou ont expiré lors de la tentative d'exécution initiale sont lancées à l'aide de cette StartExecutionAPIaction. Le premier état entré ItemProcessor est exécuté en premier. Toutes les exécutions de flux de travail enfant qui ont échoué, ont expiré ou ont été annulées lors de la tentative d'exécution initiale sont redriven en utilisant le RedriveExecutionAPIaction. Ces flux de travail pour enfants sont redriven du dernier état dans ItemProcessor lequel leur exécution a échoué.

Les exécutions infructueuses peuvent toujours être redriven. Cela est dû au fait que les exécutions du flux de travail Express Child sont toujours démarrées en tant que nouvelle exécution utilisant l' StartExecution APIaction.

Les exécutions de flux de travail standard pour enfants ne peuvent pas toujours échouer redriven. Si une exécution n'est pas redrivable, il ne sera pas réessayé. La dernière erreur ou sortie de l'exécution est permanente. Cela est possible lorsqu'une exécution dépasse 25 000 événements historiques ou que redrivable le délai de 14 jours est expiré.

L'exécution d'un flux de travail enfant standard n'est peut-être pas redrivable si l'exécution du flux de travail parent s'est terminée dans les 14 jours, mais que l'exécution du flux de travail enfant s'est terminée avant 14 jours.

Les exécutions du flux de travail Express Child utilisent la même exécution ARN que la tentative d'exécution initiale, mais vous ne pouvez pas les identifier clairement redrives. Les exécutions de flux de travail enfant standard utilisent la même exécution ARN que la tentative d'exécution initiale. Vous pouvez identifier clairement l'individu redrives dans la console et en utilisantAPIs, par exemple, GetExecutionHistoryet DescribeExecution. Pour de plus amples informations, veuillez consulter Examiner redriven exécutions.

Si vous avez redriven un Map Run, et celui-ci a atteint sa limite de simultanéité, les exécutions du flux de travail enfant dans ce Map Run passent à l'état en attente. L'état d'exécution de Map Run passe également à Pending redriveétat. Jusqu'à ce que la limite de simultanéité spécifiée permette l'exécution d'un plus grand nombre d'exécutions de flux de travail enfants, l'exécution reste dans la zone En attente redriveétat.

Supposons, par exemple, que la limite de simultanéité de la carte distribuée dans votre flux de travail soit de 3 000 et que le nombre de flux de travail enfants à réexécuter soit de 6 000. Cela entraîne l'exécution en parallèle de 3 000 flux de travail enfants, tandis que les 3 000 flux de travail restants restent dans l'état Pending redrive. Une fois que le premier lot de 3 000 flux de travail enfants a terminé son exécution, les 3 000 flux de travail enfants restants sont exécutés.

Lorsqu'une exécution de carte est terminée ou est abandonnée, le nombre d'exécutions de flux de travail enfants est indiqué dans la case En attente redrivel'état est remis à 0.

Scénarios de saisie utilisés sur Map Run redrive

Selon la manière dont vous avez fourni des données à la carte distribuée lors de la tentative d'exécution initiale, un redriven Map Run utilisera l'entrée comme décrit dans le tableau suivant.

Entrée lors de la tentative d'exécution initiale Entrée utilisée sur Map Run redrive
Entrée transmise depuis un état précédent ou depuis l'entrée d'exécution. Le redriven Map Run utilise la même entrée.
L'entrée a été transmise en utilisant ItemReader (Carte) et le Map Run n'a pas démarré les exécutions du flux de travail enfant car l'une des conditions suivantes est vraie :
Le redriven Map Run utilise l'entrée du compartiment Amazon S3.
Entrée transmise en utilisant ItemReader. L'exécution de la carte a échoué après le démarrage ou la tentative de lancement d'exécutions de flux de travail enfants. Le redriven Map Run utilise la même entrée que celle fournie lors de la tentative d'exécution initiale.

IAMautorisation de redrive un Map Run

Step Functions a besoin de l'autorisation appropriée pour redrive un Map Run. L'exemple IAM de politique suivant accorde le minimum de privilèges requis à votre machine d'état pour redriving un Map Run. N'oubliez pas de remplacer le italicized texte contenant les informations spécifiques à votre ressource.

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

Redriving Map Run dans la console

L'image suivante montre le graphe d'exécution d'une machine à états contenant une carte distribuée. Cette exécution a échoué car le Map Run a échoué. Pour redrive le Map Run, vous devez redrive le flux de travail parent.

Graphique d'un échec de l'exécution d'une machine à états causé par un échec d'exécution de carte.
Pour redrive une carte exécutée depuis la console
  1. Ouvrez la console Step Functions, puis choisissez une machine à états existante contenant une carte distribuée dont l'exécution a échoué.

  2. Sur la page détaillée de la machine à états, sous Exécutions, choisissez une instance d'exécution ayant échoué de cette machine à états.

  3. Choisissez Redrive.

  4. Dans Redriveboîte de dialogue, choisissez Redrive exécution.

    Astuce

    Vous pouvez également redrive une exécution de carte depuis la page Détails de l'exécution ou Détails de l'exécution de la carte.

    Si vous êtes sur la page Détails de l'exécution, effectuez l'une des opérations suivantes pour redrive l'exécution :

    • Choisissez Restaurer, puis sélectionnez Redrive d'un échec.

    • Choisissez Actions, puis sélectionnez Redrive.

    Si vous êtes sur la page Map Run Details, choisissez Recover, puis sélectionnez Redrive d'un échec.

    Notez que redrive utilise la même définition de machine à états etARN. Il poursuit l'exécution à partir de l'étape qui a échoué lors de la tentative d'exécution initiale. Dans cet exemple, il s'agit de l'étape Carte distribuée nommée Carte et de l'étape de saisie du processus qui s'y trouve. Après avoir redémarré les exécutions infructueuses du flux de travail enfant de Map Run, redrive poursuivra l'exécution pour l'étape Terminé.

  5. Sur la page Détails de l'exécution, choisissez Map Run pour voir les détails du redriven Map Run.

    Sur cette page, vous pouvez consulter les résultats du redriven exécution. Par exemple, dans la Résumé de l'exécution de Map Run section, vous pouvez voir Redrive count, qui représente le nombre de fois que la Map Run a été exécutée redriven. Dans la section Événements, vous pouvez voir redrive événements d'exécution associés ajoutés aux événements de la tentative d'exécution initiale. Par exemple, l'MapRunRedrivenévénement.

Après avoir redriven un Map Run, vous pouvez examiner son redrive détails dans la console ou à l'aide GetExecutionHistorydes DescribeExecutionAPIactions et. Pour plus d'informations sur l'examen d'un redriven exécution, voirExaminer redriven exécutions.

Redriving Map Run en utilisant API

Tu peux redrive une Map Run éligible à l'aide du RedriveExecutionAPIsur le flux de travail parent. Cela API redémarre les exécutions infructueuses du flux de travail enfant dans un Map Run.

Dans le volet AWS Command Line Interface (AWS CLI), exécutez la commande suivante pour redrive une exécution infructueuse de la machine à états. N'oubliez pas de remplacer le italicized texte contenant les informations spécifiques à votre ressource.

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

Après avoir redriven un Map Run, vous pouvez examiner son redrive détails dans la console ou lors de l'utilisation de l'DescribeMapRunAPIaction. Pour examiner le redrive pour plus de détails sur les exécutions de flux de travail standard dans un Map Run, vous pouvez utiliser l'DescribeExecutionAPIaction GetExecutionHistoryou. Pour plus d'informations sur l'examen d'un redriven exécution, voirExaminer redriven exécutions.

Vous pouvez examiner le redrive détails des exécutions du flux de travail Express dans un Map Run sur la console Step Functions si vous avez activé la connexion au flux de travail parent. Pour de plus amples informations, veuillez consulter Utiliser CloudWatch les journaux pour enregistrer l'historique des exécutions dans Step Functions.