2016-05-13 17 views
0

私はプロジェクトで作業していますが、ラムダ関数を使用してリレーショナルデータベースとDynamoDBに同時に接続していました。その機能にアクセスするには、私はAPIゲートウェイを使用していますが、問題が見つかりました。Javaで書かれた私のラムダ関数は、両方のデータベース接続の作成のために10秒以上かかっています。AWS APIゲートウェイのハンドルタイムアウト

私はAPIゲートウェイタイムアウトが10秒であることを知っていますが、それは私の機能の魔法使いの実行に問題はありませんが、1秒未満かかりますが、問題は開始する必要があるときです。 このタイムアウト例外をキャッチして、リクエストを再度開始する必要があることをユーザーに通知する方法を知りたいと思います。

Node.jsに移動したり、ラムダ関数に直接アクセスしたりすることなく、そうする方法はありますか?

答えて

1

リレーショナルデータベースへの接続のコストは非常に高いので、(ハンドラの外側の)ラムダ関数の初期化コードで接続を開くことをお勧めします。

ラムダコンテナの存続期間中、複数の呼び出しでデータベース接続が再利用されます。 Lambda関数ハンドラ内では、接続が確実に実行され、タイムアウトしていないことを確認し、必要に応じて再度開くことができます。

APIゲートウェイ経由の最初の呼び出しはタイムアウトになることがありますが、後続の呼び出しでは、コンテナの有効期間中に接続が再利用されます。

もう1つのトリックは定期的に関数を呼び出してコンテナを「暖かい」状態に保つスケジュールされた関数を作成することです。

乾杯、 ライアン

+0

私はすでにハンドラの外のデータベース接続を初期化しています。私は機能を暖かく保つために予定された機能を実装するつもりですが、私はまだ1人の実際のユーザがその機能を起動し、彼が時間切れになることを恐れています。問題は、そのエラーをどのように捕らえてユーザーに通知するかわからないということです。そうする方法はありますか? –

+0

タイムアウトは、特定のエラーメッセージで504エラーとして現れます。アプリケーションでこれらのタイプの応答を確実に捕らえることができ、必要に応じてエラーメッセージを再試行または表示することができます。 –

関連する問題