2017-02-12 92 views
2

目前我已經設置了一個由api網關端點觸發的lambda函數。目標是通過形成響應並首先觸發回調來保持低響應時間,然後繼續與sns交互以將工作傳遞給其他lambda函數。但是,我在運行火焰眼鏡對着端點時發現了一些奇怪的現象。主要是響應時間似乎不斷增加,此外有502和504響應代碼返回,但沒有500響應代碼(如果我理解正確,表明調用調節,因爲429響應映射到api網關500)。如果我刪除了異步操作,我會看到合理的響應時間並且沒有錯誤。爲什麼這是觀察到的行爲,當實際觸發響應時,或者在發送響應之前lambda是否等待事件隊列清空時,項目在nodejs事件循環中排隊的順序不起作用?如果是後者,那麼異步交互中的錯誤會成爲響應的原因嗎?lambda + api網關何時實際向客戶端發送響應?

回答

4

確實在哪些項目上取得成功的事件的NodeJS循環排隊不 效果時,反應在實際觸發或不拉姆達只是 等待事件隊列發送響應之前,空出的順序?

默認情況下,在退出並觸發API網關發送響應之前,NodeJS 4.2 Lambda函數將等待NodeJS事件循環爲空。當您調用callback函數時,只需通知Lambda容器即可在事件循環清除後退出。在存在Lambda函數之前,API網關不會返回響應。只要調用callback函數,就可以設置一個選項來觸發Lambda函數退出,但隨後在後臺運行的其他內容將被終止。

如果是後者,那麼將在異步交互的錯誤是 原因502個& 504響應的?

如果「異步交互」你的意思是你正在調用到SNS,則是如果這些失敗,你不處理錯誤正確可能導致整個調用返回一個錯誤。如果您收到502錯誤,您需要檢查您的Lambda function's logs in CloudWatch Logs以查看錯誤是什麼。您也可以在這種情況下提供一些有用的信息enable CloudWatch Logs for API Gateway

+0

你有沒有找到一種方法來觸發ApiGateway,同時保持lambda的拆卸代碼運行? –

相關問題