RedrivingCartes parcourues - 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.

RedrivingCartes parcourues

Vous pouvez redémarrer les exécutions infructueuses d'un flux de travail enfant dans un flux de travail Map Run par redrivingvotre flux de travail parent. Un flux de travail redriven parent redrives contenant 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'événement correspondant à un MapStateExited MapStateEntered événement, vous pouvez attribuer redrive le flux de travail parent à redrive toutes les exécutions de flux de travail enfant infructueuses dans 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 à ItemReaderResultWriter, 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 démarre 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 au flux de travail parent. Si vous êtes 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, consultezPolitiques IAM pour l'utilisation de l'état de la carte distribuée.

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

Vous pouvez redrive exécuter un flux de travail enfant infructueux 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 éligiblesredrive.

  • Vous n'avez pas dépassé la limite stricte redrives de 1 000 pour une course de carte donnée. Si vous avez dépassé cette limite, vous recevrez le States.Runtime message d'erreur.

  • Le flux de travail parent estredrivable. Si le flux de travail parent ne l'est pasredrivable, vous ne pouvez pas exécuter redrive le flux de travail enfant dans un Map Run. Pour plus d'informations sur l'redriveéligibilité d'un flux de travail, consultezRedriveé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 l'redriveéligibilité d'une exécution, consultezRedriveéligibilité en cas d'exécution infructueuse.

Une nouvelle exécution de carte est lancée et l'exécution de carte existante ne l'est pas redriven dans les cas suivants, même si l'exécution de la carte a échoué lors de la tentative d'exécution initiale :

  • Map Run a échoué à cause de States.DataLimitExceeded cette erreur.

  • L'exécution de la carte a échoué en raison de l'erreur d'interpolation des données JSON,States.Runtime. Par exemple, vous avez sélectionné un nœud JSON inexistant dansOutputPath.

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, redrive cela 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, 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 le faireredrive.

redriveComportement d'exécution du workflow par enfant

Les exécutions du flux de travail redriven enfant 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 l'action StartExecutionAPI. 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 redriven utilisent l'action RedriveExecutionAPI. Ces flux de travail enfants redriven datent du dernier état ItemProcessor qui a entraîné l'échec de leur exécution.

Des exécutions infructueuses peuvent toujours l'êtreredriven. 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 à l'aide de l'action StartExecution API.

Les exécutions de flux de travail standard pour enfants ne peuvent pas toujours échouerredriven. Si aucune exécution ne l'estredrivable, elle ne sera pas tentée à nouveau. 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 sa redrivable période de 14 jours a expiré.

Une exécution de flux de travail enfant standard peut ne pas se redrivable produire si l'exécution du flux de travail parent s'est terminée dans les 14 jours, mais si l'exécution du flux de travail enfant s'est terminée avant 14 jours.

Les exécutions de flux de travail Express Child utilisent le même ARN d'exécution 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 le même ARN d'exécution que la tentative d'exécution initiale. Vous pouvez identifier clairement l'individu redrives dans la console et à l'aide d'API, telles que GetExecutionHistoryet DescribeExecution. Pour plus d’informations, consultez Examen des redriven exécutions.

Si vous avez redriven une exécution de carte et que celle-ci a atteint sa limite de simultanéité, les exécutions du flux de travail enfant pendant cette exécution de carte passent à l'état en attente. L'état d'exécution de Map Run passe également à l'redriveétat En attente. 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 à l'redriveétat En attente.

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 à l'redriveétat En attente est remis à 0.

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

Selon la manière dont vous avez fourni une entrée à la carte distribuée lors de la tentative d'exécution initiale, une exécution de redriven carte 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 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 à l'aide de 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.

Autorisation IAM d'exécuter redrive une carte

Step Functions a besoin des autorisations appropriées pour exécuter redrive un Map Run. L'exemple de politique IAM suivant accorde le minimum de privilèges requis à votre machine d'état pour redriving une exécution cartographique. N'oubliez pas de remplacer le texte en italique par 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:*" } ] }

RedrivingMap 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 exécuter Map Run, vous devez utiliser 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.
Vers redrive une exécution cartographique 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. Sélectionnez Redrive.

  4. Dans la Redriveboîte de dialogue, sélectionnez RedriveExécution.

    Astuce

    Vous pouvez également effectuer redrive une exécution cartographique à partir de 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 En cas Redrive d'échec.

    • Choisissez Actions, puis sélectionnez Redrive.

    Si vous êtes sur la page Map Run Details, choisissez Recover, puis sélectionnez RedriveFrom failure.

    Notez qu'il redrive utilise la même définition de machine à états et le même ARN. 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 le redémarrage du flux de travail enfant infructueux, les exécutions de Map Run se redrive poursuivront pour l'étape Terminé.

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

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

Après avoir exécuté redriven un Map Run, vous pouvez en examiner les redrive détails dans la console ou à l'aide des actions de l'DescribeExecutionAPI GetExecutionHistoryet. Pour plus d'informations sur l'examen d'une redriven exécution, consultezExamen des redriven exécutions.

RedrivingMap Run à l'aide de l'API

Vous pouvez exécuter redrive une carte éligible à l'aide de l'RedriveExecutionAPI du flux de travail parent. Cette API redémarre les exécutions infructueuses du flux de travail enfant dans un Map Run.

Dans le AWS Command Line Interface (AWS CLI), exécutez la commande suivante en cas redrive d'échec de l'exécution de la machine à états. N'oubliez pas de remplacer le texte en italique par 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 exécuté redriven un Map Run, vous pouvez en examiner les redrive détails dans la console ou à l'aide de l'action de l'DescribeMapRunAPI. Pour examiner les redrive détails des exécutions de flux de travail standard dans un Map Run, vous pouvez utiliser l'action DescribeExecutionAPI GetExecutionHistoryor. Pour plus d'informations sur l'examen d'une redriven exécution, consultezExamen des redriven exécutions.

Vous pouvez examiner les redrive détails des exécutions de 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 plus d'informations, voir Journalisation à l'aideCloudWatchJournaux.