AWS Step Functions ステートマシンが DELETING 状態のままになっているので、次のステップを知りたいです。
簡単な説明
DeleteStateMachine API アクションは、Step Functions ステートマシンおよび、ステートマシンのバージョンとエイリアスを非同期で削除します。DeleteStateMachine を呼び出し、ステータスが DELETING に切り替わった後に、ステートマシンの削除を停止することはできません。ただし、実行が Wait 状態になっている場合や、タスクが応答を待っている場合は、ステートマシンが DELETING 状態のままとなる場合があります。
ステートマシンの削除プロセスは、マシンが Standard ワークフローに従っているか、Express ワークフローに従っているかによって異なります。通常、Standard ワークフローのステートマシンでは削除が停止し、実行が次のエラーで失敗します。
{"Type": "ExecutionFailed", "ExecutionFailedEventDetails": {"Error": States.Runtime", "Cause": "State machine testing-delete has been deleted."}}
解決策
ステータスが DELETING のままになっている Standard ワークフローステートマシンを削除するには、次の手順を実行します。
- 実行中のすべての実行を一覧表示します。
- 実行中のすべての実行を停止します。
次の Python コードの例では、実行を停止します。
注: 実際のコマンドでは、EXAMPLE_ARN をステートマシンの ARN に置き換えます。
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.")
注: Express ワークフローを備えたステートマシンは、ListExecutions および StopExecutions API をサポートしていません。
ステートマシンを誤って削除しないように保護する
Step Functions ではステートマシンをバックアップできませんが、次の方法でステートマシンを保護できます。