StepFunctions のワークフロー完了を待機して連携処理を行う方法について教えてください

2021.11.08

困っていた内容

WEBサーバ(PHP)から StepFunctions の StartExecution API を実行し、結果をポーリングするために、 一定間隔で StepFunctions の DescribeExecution API を実行しようと考えています。 結果のポーリングに DescribeExecution を使用するのは一般的な利用方法でしょうか。

どう対応すればいいの?

DescribeExecution API を使用して、結果をポーリングするのは、 長時間かかる処理を非同期の構成で行う際に、利用されるユースケースです。 下記ブログの例をご覧ください。[1]

また、StepFunctions で EventBridge イベントを利用することで、 継続的にポーリングすることなく、ワークフローをモニタリングする方法もありますので、 こちらも利用されてみてはいかがでしょうか。[2]

StepFunctions は、実行ステータスが変更されたときに EventBridge イベントを発行するように設定できます。これにより、DescribeExecution API を使用して継続的にポーリングすることなく、ワークフローをモニタリングできます。

参考資料

[1] 【API Gatewayタイムアウト対策】Step Functionsを組み合わせて非同期処理にしてみる

[2] Step Functions 実行ステータスの変更の EventBridge (CloudWatch イベント) - AWS Step Functions