4

私はApi gatewayはステップ関数の出力結果を取得しますか?

{ 
    "executionArn": "arn:aws:states:ap-northeast-1:123456789012:execution:HelloWorld:MyExecution", 
    "startDate": 1.486772644911E9 
} 

として、APIの私のGETリクエストで出力を取得しています。しかし、代わりに応答上記の私はで与えられる私のステップ関数の出力を、欲しいstep functions

を作成し、起動のチュートリアルに従っ以下のようになる。

{ 
    "name":"Hellow World" 
} 

これを実行する方法は?

答えて

5

AWSステップ関数は非同期であり、結果をすぐに返しません。 APIゲートウェイメソッドは同期しており、最大タイムアウトは29秒です。

ステップ関数から関数出力を取得するには、APIゲートウェイでDescribeExecutionアクションを使用してステップ関数を呼び出す2番目のメソッドを追加する必要があります。返されたステータスがもはや "実行中"にならなくなるまで、APIゲートウェイクライアントはこれを定期的に呼び出す必要があります(ポーリング)。

ここでAWSで@MikeDものに拡大DescribeExecution documentation

+0

ダン。私は埋め込まれたラムダコールに戻るでしょう。同期チェックボックスがあればいいと思いますが、親のラムダが最初のhttpリクエストとレスポンスを処理することなく、AWSがどうするのか分かりません。 – Neo

0

はあなたがステップ関数は、30秒のタイムアウトを超えないだろうと確信している場合、あなたはその後、ステップ関数を実行し、ラムダを作成することができ、言います結果をポーリングするときにブロックします。結果が得られれば、それを返すことができます。

最初の呼び出しを実行IDですぐに戻し、そのIDを2回目の呼び出しに渡して結果が取得されると結果を取得することをお勧めします。

0

まず、ステップ関数は非同期に実行され、APIゲートウェイはステップ関数(フローの開始)のみを呼び出すことができます。

Webアプリケーションからのステップ関数呼び出しの結果を待っている場合は、AWS IOT WebSocketを使用できます。手順は次のとおりです。

  • WebSocketでAWS IOTトピックを設定します。
  • APIゲートウェイとステップ関数の呼び出しを構成します。
  • Webフロントエンドからは、WebSocketリスナーとしてIOTトピックを購読します。
  • ステップ関数ワークフローの最後のステップ(およびエラーステップ)で、AWS SDKを使用してIOTトピックをトリガーし、WebSocketを使用してブラウザで実行されているWebアプリケーションに結果をブロードキャストします。

AWS IOTを使用したWebSocketの詳細については、メディア記事Receiving AWS IoT messages in your browser using websocketsを参照してください。

関連する問題