通过AWS lambda存储值

时间:2018-03-02 17:41:38

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

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

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

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

我已在NodeJS中编写了该函数

有什么建议吗?

2 个答案:

答案 0 :(得分:0)

我实现了类似的东西。我也不关心收到每个错误的电子邮件,因为我从AWS Lambdas收到的错误不需要立即关注。我宁愿每小时拿一次。

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

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

答案 1 :(得分:0)

我可以看到两种快速存储类似“last_email_sent”值的方法。第一个是DynamoDB。这是AWS“无服务器”环境的一部分,除了与之交互之外,它不需要您做更多的事情。您没有指明您的开发环境,但支持multiple development environments

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

也可能有其他方法可以做到这一点。这些都有点矫枉过正,但他们会努力存储你需要的东西。