2017-02-12 22 views
2

現在、私は、apiゲートウェイエンドポイントからトリガされるラムダ機能をセットアップしました。目標は、レスポンスを形成し、最初にコールバックをトリガーし、次にsnsとやり取りして他のラムダ関数に作業を渡すことによって応答時間を低く抑えることでした。しかし、私は、端点に対してブレーズメーターを実行しているときには、奇妙な動作に気づいています。主に応答時間が継続的に増加しているように見えます。さらに、502と504の応答コードが返されますが、500の応答コードはありません(正しく理解すれば、429応答がAPIゲートウェイの500にマップされているため、非同期アクションを削除すると、妥当な応答時間が表示され、エラーは発生しません。これが観測された振る舞いであり、nodejsイベントループでアイテムがキューに入れられる順序は、応答が実際にトリガされたとき、またはラムダがレスポンスを送信する前にイベントキューが空になるのを待っているかどうかに影響しませんか?後者の場合は、非同期相互作用のエラーが502 & 504の応答の原因になりますか?lambda + apiゲートウェイはいつ実際にクライアントに応答を送信しますか?

答えて

4

はアイテムが応答が実際にトリガーされたときnodejsイベントループにない 効果をキューに入れられるか、イベントキューのためのラムダだけ 待ち時間が応答を送信する前に空にしない順序をしますか?

デフォルトでは、NodeJS 4.2ラムダファンクションは、NodeJSイベントループが空になるのを待ってから、APIゲートウェイを終了して応答を送信します。 callback関数を呼び出すと、Lambdaコンテナにイベントループがクリアされると終了するように通知されます。 APIゲートウェイは、ラムダ関数が存在するまで応答を返しません。 callback関数を呼び出すとすぐにラムダ関数を終了させるオプションを設定できますが、バックグラウンドで実行している他のものは強制終了されます。

後者の場合、非同期相互作用における誤差は502の& 504応答の 原因だろうか?

「非同期のやりとり」とは、作成しているSNSへの呼び出しを意味し、それらが失敗し、正しくエラーを処理しなかった場合は、呼び出し全体がエラーを返す可能性があります。 502エラーが発生した場合は、エラーが何であるかを確認するためにLambda function's logs in CloudWatch Logsを確認する必要があります。この場合、役に立つ情報を提供するかもしれないenable CloudWatch Logs for API Gatewayもあります。

+0

ラムダの引き裂かれたコードを実行しながら、ApiGatewayを起動する方法を見つけましたか? –

関連する問題