Redrivingexécutions de machines à états 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.

Redrivingexécutions de machines à états dans Step Functions

Vous pouvez l'utiliser redrive pour redémarrer les exécutions de flux de travail standard qui ne se sont pas terminées correctement au cours des 14 derniers jours. Il s'agit notamment des exécutions échouées, abandonnées ou dont le délai imparti a expiré.

Lorsque vous effectuez redrive une exécution, elle poursuit l'exécution échouée à partir de l'étape infructueuse et utilise la même entrée. Step Functionspréserve les résultats et l'historique d'exécution des étapes réussies, et ces étapes ne sont pas réexécutées lors redrive d'une exécution. Supposons, par exemple, que votre flux de travail contienne deux états : un Passer l'état du flux de travail état suivi d'un État du flux de travail des tâches état. Si l'exécution de votre flux de travail échoue à l'état Tâche et que vous redrive l'exécutez, l'exécution replanifie puis réexécute l'état Tâche.

Redrivenles exécutions utilisent la même définition de machine à états et la même exécution ARN que celles utilisées lors de la tentative d'exécution initiale. Si votre tentative d'exécution initiale était associée à une version, à un alias ou aux deux, l'redrivenexécution est associée à la même version, au même alias, ou aux deux. Même si vous mettez à jour votre alias pour qu'il pointe vers une autre version, l'redrivenexécution continue d'utiliser la version associée à la tentative d'exécution initiale. Comme redriven les exécutions utilisent la même définition de machine à états, vous devez démarrer une nouvelle exécution si vous mettez à jour la définition de votre machine à états.

Lors redrive d'une exécution, le délai d'expiration au niveau de la machine à états, s'il est défini, est remis à 0. Pour plus d'informations sur le délai d'expiration au niveau de la machine à états, consultezTimeoutSeconds.

redrivesLes exécutions sont considérées comme des transitions d'état. Pour plus d'informations sur l'impact des transitions entre États sur la facturation, consultez Step Functions Pricing.

Redriveéligibilité en cas d'exécution infructueuse

Vous pouvez exécuter redrive des exécutions si votre tentative d'exécution initiale répond aux conditions suivantes :

  • Vous avez commencé l'exécution le 15 novembre 2023 ou après cette date. Les exécutions que vous avez commencées avant cette date ne sont pas éligiblesredrive.

  • Le statut d'exécution ne l'est pasSUCCEEDED.

  • L'exécution du flux de travail n'a pas dépassé le redrivable délai de 14 jours. RedrivableLa période fait référence au temps pendant lequel vous pouvez redrive effectuer une exécution donnée. Cette période commence le jour où une machine d'État termine son exécution.

  • L'exécution du flux de travail n'a pas dépassé la durée d'ouverture maximale d'un an. Pour plus d'informations sur les quotas d'exécution des machines à états, consultezQuotas liés aux exécutions par les machines de l'État.

  • Le nombre d'événements d'exécution dans l'historique est inférieur à 24 999. Redrivenles exécutions ajoutent leur historique des événements à l'historique des événements existant. Assurez-vous que l'exécution de votre flux de travail contient moins de 24 999 événements pour tenir compte de ExecutionRedriven l'événement historique et d'au moins un autre événement historique.

Redrivecomportement des différents États

En fonction de l'état qui a échoué dans votre flux de travail, le redrive comportement de tous les états d'échec varie. Le tableau suivant décrit le redrive comportement de tous les états.

Nom de l'État Redrivecomportement d'exécution
Passer l'état du flux de travail

Si une étape précédente échoue ou si le délai d'expiration de la machine à états expire, l'état Pass est quitté et n'est pas exécuté. redrive

État du flux de travail des tâches

Planifie et recommence l'état de la tâche.

Lorsque vous redrive effectuez une exécution qui réexécute un état de tâche, l'état TimeoutSeconds correspondant, s'il est défini, est remis à 0. Pour plus d'informations sur le délai d'expiration, consultez la section État des tâches.

État du flux de travail de choix Réévalue les règles de l'état Choice.
État du flux de travail en attente

Si l'état indique Timestamp ou TimestampPath fait référence à un horodatage antérieur, redrive provoque la sortie de l'état Wait et entre dans l'état spécifié dans le champ. Next

État du flux de travail réussi

N'indique pas redrive les exécutions automatiques qui passent à l'état Succeed.

État du flux de travail défaillant

Repasse à l'état Fail et échoue à nouveau.

État du flux de travail parallèle

Replanifie et redrives uniquement les branches qui ont échoué ou ont été abandonnées.

Si l'état a échoué en raison d'une States.DataLimitExceeded erreur, l'état parallèle est réexécuté, y compris les branches qui ont réussi lors de la tentative d'exécution initiale.

État de la carte en ligne

Replanifie et redrives uniquement les itérations qui ont échoué ou ont été abandonnées.

Si l'état a échoué en raison d'une States.DataLimitExceeded erreur, l'état Inline Map est réexécuté, y compris les itérations réussies lors de la tentative d'exécution initiale.

État de la carte distribuée

redrivesles exécutions infructueuses du flux de travail enfant dans un Map Run. Pour de plus amples informations, veuillez consulter RedrivingExécutions de la carte dans Step Functions.

Si l'état a échoué en raison d'une States.DataLimitExceeded erreur, l'état de la carte distribuée est réexécuté. Cela inclut les flux de travail enfants qui ont réussi lors de la tentative d'exécution initiale.

IAMautorisation redrive d'exécution

Step Functions a besoin d'une autorisation appropriée pour redrive une exécution. L'exemple IAM de politique suivant accorde le minimum de privilèges requis à votre machine d'état pour redriving une exécution. 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:*" } ] }

Pour un exemple de l'autorisation dont vous avez besoin pour exécuter redrive une carte, consultezExemple de IAM politique pour redriving une carte distribuée.

Redrivingexécutions dans la console

Vous pouvez redrive sélectionner des exécutions depuis la Step Functions console.

Par exemple, imaginez que vous exécutez une machine à états et qu'un état parallèle ne s'exécute pas.

L'image suivante montre qu'une étape LambdaInvoke nommée Do square number inside a Parallel state a renvoyé un échec. Cela a également entraîné l'échec de l'état parallèle. Les branches dont l'exécution était en cours ou non démarrée sont arrêtées et l'exécution de la machine d'état échoue.

Exemple de graphique illustrant l'échec de l'exécution d'une machine à états.
Vers redrive une exécution depuis la console
  1. Ouvrez la console Step Functions, puis choisissez une machine à états existante dont l'exécution a échoué.

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

  3. Sélectionnez Redrive.

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

    Astuce

    Si vous êtes sur la page Détails de l'exécution d'une exécution qui a échoué, 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.

    Notez qu'il 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 Do square number et de la branche Wait 3 sec dans l'état Parallel. Après avoir redémarré l'exécution de ces étapes infructueuses à l'état parallèle, l'exécution de l'étape Terminé se redrive poursuivra.

  5. Choisissez l'exécution pour ouvrir la page Détails de l'exécution.

    Sur cette page, vous pouvez consulter les résultats de l'redrivenexécution. Par exemple, dans la Résumé de l'exécution section, vous pouvez voir le Redrivenombre, qui représente le nombre de fois qu'une exécution a eu lieuredriven. 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'ExecutionRedrivenévénement.

Redrivingexécutions en utilisant API

Vous pouvez sélectionner redrive des exécutions à l'aide du RedriveExecutionAPI. Cela API redémarre les exécutions infructueuses des flux de travail standard à partir de l'étape qui a échoué, qui a été abandonnée ou qui a expiré.

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

Examen des redriven exécutions

Vous pouvez examiner une redriven exécution dans la console ou à l'aide des APIs touches : GetExecutionHistoryet DescribeExecution.

Examiner redriven les exécutions sur console
  1. Ouvrez la console Step Functions, puis choisissez une machine à états existante pour laquelle vous avez redriven une exécution.

  2. Ouvrez la page Détails de l'exécution.

    Sur cette page, vous pouvez consulter les résultats de l'redrivenexécution. Par exemple, dans la Résumé de l'exécution section, vous pouvez voir le Redrivenombre, qui représente le nombre de fois qu'une exécution a eu lieuredriven. 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'ExecutionRedrivenévénement.

Examinez les redriven exécutions en utilisant APIs

Si vous avez redriven une exécution par machine à états, vous pouvez utiliser l'une des méthodes suivantes APIs pour afficher les détails de l'redrivenexécution. N'oubliez pas de remplacer le italicized texte contenant les informations spécifiques à votre ressource.

  • GetExecutionHistory — Renvoie l'historique de l'exécution spécifiée sous forme de liste d'événements. Cela renvoie API également les détails de la redrive tentative d'exécution, s'ils sont disponibles.

    Dans le AWS CLI, exécutez la commande suivante.

    aws stepfunctions get-execution-history --execution-arn arn:aws:states:us-east-2:123456789012:execution:myStateMachine:foo
  • DescribeExecution — Fournit des informations sur l'exécution d'une machine à états. Il peut s'agir de la machine d'état associée à l'exécution, des entrées et sorties d'exécution, des redrive détails de l'exécution, le cas échéant, et des métadonnées d'exécution pertinentes.

    Dans le AWS CLI, exécutez la commande suivante.

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

Réessayer le comportement des exécutions redriven

Si votre redriven exécution réexécute un état État du flux de travail des tâchesÉtat du flux de travail parallèle, ou Inline Map, pour lequel vous avez défini de nouvelles tentatives, le nombre de tentatives pour ces états est remis à 0 pour tenir compte du nombre maximum de tentatives. redrive Pour une redriven exécution, vous pouvez suivre les tentatives de tentative individuelles de ces états à l'aide de la console.

Pour examiner les différentes tentatives de tentative dans la console
  1. Sur la page Détails de l'exécution de la console Step Functions, choisissez un état qui a été réessayé. redrive

  2. Cliquez sur l'redrivesonglet Rétentatives et.

  3. Cliquez sur l'icône en forme de flèche à côté de chaque nouvelle tentative pour en afficher les détails. Si la nouvelle tentative a réussi, vous pouvez consulter les résultats dans la section Sortie qui apparaît dans une liste déroulante.

L'image suivante montre un exemple des nouvelles tentatives effectuées pour un état lors de la tentative d'exécution initiale et redrives de cette exécution. Dans cette image, trois nouvelles tentatives sont effectuées lors des tentatives d'origine et d'redriveexécution. L'exécution réussit à la quatrième redrive tentative et renvoie une sortie de 16.

Capture d'écran illustrant trois tentatives infructueuses et le succès d'une quatrième tentative.