2017-06-24 129 views
0

我想在生產中使用AWS Lambda中的Node.js。 問題是如何使這可靠。生產中帶有Node.JS的AWS Lambda

對我來說,可靠性是指:

  1. 重試代碼的某些部分 - 這個存在來自該盒AWS LAMBDA
  2. 異常通知 - 我試圖減速板,但它並不在AWS LAMBDA工作 - process.on('uncaughtException')不起作用
  3. 可能知道是否某個東西壞了,甚至異常通知不起作用 - 在通常的應用程序中,我有健康檢查端點。

那麼我該如何實現2點和3點?

+0

關於第2點,爲什麼你的方法不工作? SO的其他方面可能過於寬泛。 –

+0

@ E_net4我在他們的論壇上看到這個方法停止工作的問題,所以我想他們重寫它。 –

回答

0

一個想法是使用SQS queue作爲Dead Letter Queue,可以爲該lambda設置(http://docs.aws.amazon.com/lambda/latest/dg/dlq.html)。因此,您可以監控該隊列以分析導致該功能失敗並採取一些措施的輸入。

對於日誌記錄,您可以使用winstonhttps://github.com/winstonjs/winston)。適用於AWS lambda表達式。

+0

DLQ是我認爲實施的方式之一。你有一些DLQ的自動處理?您如何使用winston,以及哪種情況比CloudWatch日誌更好? –

+0

由winston生成的日誌記錄已發送到CloudWatch,因此您可以一起使用它們。 –

0

在你的lambda工作流中,我猜你有某種錯誤處理函數,發生什麼事情,它結束了。您可以使用該錯誤處理程序向您發送包含事件和上下文輸入以及其他錯誤描述的電子郵件。

此外,您還可以通過cloudfront監控lambdas,並創建一個警報,在某些錯誤發生時向您發送特定數據。

+0

我來自Ruby,我想有一些錯誤處理程序,可以捕獲任何錯誤。 「我猜你有某種錯誤處理函數,發生什麼事情,它在那裏結束。」 - 我想找到如何把它放在一個地方,忘掉它。 –

+0

我在節點上做的是協調承諾。所以你做一些類似'return Q.fcall(function1).then(function2).then(function3).catch(errorHandler).done()'。錯誤處理程序是一個庫,包含在每個執行一些處理(比如回滾)的lambda中,向我發送一封電子郵件,並根據錯誤發生的原因返回錯誤代碼。 –