2016-05-13 124 views
0

我正在使用lambda函數同時連接到關係數據庫和DynamoDB的項目。爲了訪問這個函數,我使用了API網關,但是我發現了一個問題:由於創建了兩個數據庫連接,用Java編寫的我的lambda函數需要超過10秒才能啓動。AWS API網關中的句柄超時

我知道API網關超時時間是10秒,這不是執行我的功能的時間少於1秒的問題,但問題在於它必須啓動。 我想知道如何捕捉這個超時異常,並通知用戶他需要再次啓動請求。

有沒有辦法做到這一點,而不移動到Node.js或直接訪問lambda函數?

回答

1

由於與關係數據庫建立連接的成本非常高,我鼓勵您在Lambda函數的初始化代碼(處理程序之外)中打開連接。

然後,數據庫連接將在Lambda容器的生命週期的多個調用中重複使用。在您的Lambda函數處理程序中,您可能需要確保連接處於活動狀態並且沒有超時,並根據需要重新打開。

通過API網關的第一個調用可能會超時,但隨後的調用將在容器的生命週期中重新使用連接。

另一個訣竅是創建一個預定的函數來定期調用你的函數來保持容器「溫暖」。

乾杯, 瑞安

+0

我已經初始化處理程序之外的數據庫連接。我將執行預定的功能以保持我的功能溫暖,但我仍然擔心一個真正的用戶激活該功能,他會獲得時間。問題是我不知道如何捕捉錯誤並通知用戶,有沒有辦法這樣做? –

+0

超時將顯示爲具有特定錯誤消息的504錯誤。您當然可以在您的應用程序中捕獲這些類型的響應,並根據需要重試或顯示錯誤消息。 –