【问题标题】:Storing values through AWS lambda通过 AWS lambda 存储值
【发布时间】:2018-03-02 17:41:37
【问题描述】:

我正在使用 AWS Lambda 检查运行状况,然后发送电子邮件。如果健康状况不佳,我希望它只发送一次电子邮件。

这个 Lambda 函数每 20 分钟左右运行一次,如果出现问题,我想防止它间隔发送多封电子邮件。有没有办法在 AWS 生态系统中存储环境变量或其他东西,以便它知道每个 lambda 函数运行之间的状态。 (这样它就不会发送电子邮件并且知道它已经发送了电子邮件)。

我已经研究过创建警报并发送通知,但通过警报发送的电子邮件不起作用,我希望发送自定义电子邮件,因此我通过 lambda 使用 AWS SES。出现错误时会打开一个云监视警报,但我似乎无法通过 aws-sdk 获取警报状态(显然不存在)。

我已经在 NodeJS 中编写了函数

有什么建议吗?

【问题讨论】:

    标签: amazon-web-services aws-lambda aws-sdk


    【解决方案1】:

    我已经实现了这样的一些不同的东西。我也不关心收到每个错误的电子邮件,因为我从 AWS Lambda 收到的错误不需要立即关注。我更喜欢每小时一次。

    所以我将收到的所有错误写入 SQS 队列。我配置了引发错误的 AWS Lambda,以将某些错误(可通过环境变量配置)发送到某些 SQS 队列。 Cloudwatch 规则(随时运行),配置为从 Cloudwatch 规则定义中的特定 SQS 队列中拉取,然后执行 AWS Lambda,传入包含要从中拉取的 SQS 队列的规则定义。 CloudWatch 规则调用的 Lambda 处理从 SQS 队列中读取数据,然后通过电子邮件发送结果。

    对于您的情况,您可以修改该过程以从 SQS 读取所有错误,然后将该数据过滤到您要发送的结果。我使用 SQS 是因为我得到的“错误”不需要保留。

    【讨论】:

    • 谢谢。让我看看SQS..我不熟悉这个。
    【解决方案2】:

    我可以看到两种快速存储“last_email_sent”值的方法。第一个是DynamoDB。这是 AWS“无服务器”环境的一部分,您只需与它交互即可。您没有指明您的开发环境,但支持 multiple development environments

    第二个是SSM Parameter Store。您也可以在那里存储任意数量的参数。

    可能还有其他方法可以做到这一点。这两个都有点矫枉过正,但它们可以用来存储你需要的东西。

    【讨论】:

    • Sorry.. .. 这个函数我用Node.JS写的
    【解决方案3】:

    好的,我找到了一种更好的方法,它更简单,无需处理其他约束。 NodeJS sdk 是有限的。当服务关闭时,通过 sdk 创建警报,并在下次触发 lambda 时检查警报是否存在并发送电子邮件。这样,如果您想通过警报进行一些通知,也可以。

    我认为在我的问题中我说过这是不可能的(最后一部分),我将收回。

    这里是 sdk 参考链接:https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/CloudWatch.html

    【讨论】:

      猜你喜欢
      • 2015-04-30
      • 2016-09-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-06-15
      • 2018-02-23
      • 1970-01-01
      • 2017-12-08
      相关资源
      最近更新 更多