Step Functions で実行中のステートマシンに StartExecution をリクエストした際の挙動について教えてください

2022.11.08

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

困っていた内容

Step Functions のステーマシンを実行するために、StartExecution API による実行を検討しています。
しかし、実行中のステートマシンに StartExecution API をリクエストした際の挙動が不明なので、具体的な挙動について教えてください。

どう対応すればいいの?

実行中のステートマシンに StartExecution をリクエストした際の挙動は、Step Functions のワークフローのタイプおよび実行時のリクエストの内容により挙動が変化します。

StartExecutionSTANDARDワークフローに対してべき等です。STANDARDワークフローの場合、 StartExecution実行中の実行と同じ名前と入力で が呼び出された場合、呼び出しは成功し、元の要求と同じ応答が返されます。実行がクローズされた場合、または入力が異なる場合、400 ExecutionAlreadyExistsエラーが返されます。名前は 90 日後に再利用できます。

StartExecutionEXPRESSワークフローに対してべき等ではありません。

以下に、検証した結果を一覧でまとめてみました。

リクエスト方法 標準ワークフロー Express ワークフロー
実行中のステートマシンに同じ実行 ID (name) で複数回リクエスト 実行は 1 回のみ リクエスト回数分実行
実行中のステートマシンに同じ実行 ID (name)、異なる入力で複数回リクエスト ExecutionAlreadyExists エラー リクエスト回数分実行
実行中のステートマシンに別の実行 ID (name) で複数回リクエスト リクエスト回数分実行 リクエスト回数分実行
実行中のステートマシンに別の実行 ID (name)、異なる入力で複数回リクエスト リクエスト回数分実行 リクエスト回数分実行
実行が完了したステーマシンに同じ実行 ID (name) でリクエスト ExecutionAlreadyExists エラー リクエスト回数分実行

注意点

上記の AWS 公式ドキュメントにも記載されていますが、標準ワークフローにおいて一度使用した実行 ID (name) は、実行がクローズされた後、90 日間は ExecutionAlreadyExists エラーが発生するため、 同じ実行 ID (name) を使用することができなくなりますのでご注意ください。

参考資料