2017-06-24 130 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中,向我发送一封电子邮件,并根据错误发生的原因返回错误代码。 –