- 新しい順
- 投票が多い順
- コメントが多い順
はい、AWS Step Functions では、他の State Machine の完了を待ってから実行を開始することが可能です。この場合、State Machine A の実行を開始する前に State Machine B の完了を待つことができます。
これを実現するには、以下のような方法が考えられます:
-
State Machine A の最初のステップとして、State Machine B の状態をチェックするタスクを追加します。このタスクでは、AWS Step Functions の API を使用して B の実行状態を確認します。
-
B が実行中の場合、A は待機状態に入ります。これは Wait ステートを使用して実現できます。
-
一定時間後に再度 B の状態をチェックします。これは Choice ステートと組み合わせて実現できます。
-
B が完了していれば、A の本来の処理を開始します。B が実行されていない場合は、直接 A の処理を開始します。
この方法を実装するには、State Machine A の定義に以下のようなロジックを含める必要があります:
- B の状態をチェックするタスク(Lambda 関数を使用)
- Choice ステート(B の状態に基づいて分岐)
- Wait ステート(B が実行中の場合)
- A の本来の処理
なお、この方法では、B の完了を待つ間、A の実行時間が長くなる可能性があります。Step Functions の実行時間制限(標準ワークフローの場合最大1年間)を考慮する必要があります。
また、この方法では B の完了を定期的にポーリングすることになるため、効率的ではない可能性があります。より効率的な方法として、EventBridge を使用して B の完了イベントをトリガーとして A を開始する方法も検討できます。
Sources
What is Step Functions? - AWS Step Functions
Basic examples for Step Functions using AWS SDKs - AWS SDK Code Examples
回答済み 2年前
