StepFunctions のワークフロー完了を待機して連携処理を行う方法について教えてください
困っていた内容
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