Pourquoi ma machine d'état Step Functions est-elle bloquée à l’état SUPPRESSION ?

Lecture de 2 minute(s)
0

Ma machine d'état AWS Step Functions est bloquée à l’état SUPPRESSION et je souhaite connaître les prochaines étapes à suivre.

Brève description

L'action d'API DeleteStateMachine supprime de manière asynchrone une machine d'état Step Functions ainsi que ses versions et alias. Vous ne pouvez pas arrêter la suppression d'une machine d'état après avoir appelé DeleteStateMachine et que l'état passe à SUPPRESSION. Pourtant, une machine d’état peut rester bloquée à l’état SUPPRESSION lorsqu'une exécution est à l’état Wait ou qu'une tâche attend une réponse.

Le processus de suppression de la machine d'état varie selon que votre machine suit les flux de travail standard ou les Express Workflows. Les suppressions sont généralement bloquées dans les machines d'état comportant des flux de travail standard, où les exécutions échouent avec l'erreur suivante :

{"Type": "ExecutionFailed", "ExecutionFailedEventDetails": {"Error": States.Runtime", "Cause": "State machine testing-delete has been deleted."}}

Résolution

Pour supprimer une machine d'état Flux de travail standard bloquée à l’état SUPPRESSION, procédez comme suit :

  1. Répertoriez toutes les exécutions en cours.
  2. Arrêtez toutes les exécutions en cours.

L'exemple de code Python suivant arrête les exécutions en cours :

Remarque : Dans votre commande, remplacez EXAMPLE_ARN par l'ARN de votre machine d'état.

sf = boto3.client('stepfunctions')

runningExecutions = sf.list_executions(
  stateMachineArn='EXAMPLE_ARN',
  statusFilter='RUNNING')

executions = runningExecutions['executions']

if not executions:
    print("No running executions")
  else:
    for exec in executions:
      try:
        executionArn = exec['executionArn']
        response = sf.stop_execution(executionArn=executionArn)
      except Exception as err:
        print(f" Couldn't stop an execution due to the following error :  {err=}")
    print("All running executions have been aborted.")

Remarque : Les machines d'état comportant des Express Workflows ne prennent pas en charge les API ListExecutions et StopExecutions.

Protéger votre machine d'état contre toute suppression accidentelle

Vous ne pouvez pas sauvegarder une machine d'état dans Step Functions, mais vous pouvez protéger votre machine d'état à l'aide des méthodes suivantes :

AWS OFFICIEL
AWS OFFICIELA mis à jour il y a un an