通过AWS lambda存储值

问题描述 投票:0回答:3

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

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

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

我在NodeJS中编写了这个函数

有什么建议 ?

amazon-web-services aws-lambda aws-sdk
3个回答
0
投票

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

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

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


0
投票

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

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

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


0
投票

好吧,我发现了一种更简单的方法,而不需要处理其他约束。 NodeJS sdk实际上是有限的。当服务关闭时,通过sdk创建一个警报,并在下次触发lambda时检查警报是否存在并发送电子邮件。这样,如果你想通过警报做一些通知也是可能的。

我想在我的问题中我说这是不可能的(最后一部分),我将撤回。

以下是sdk参考的链接:https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/CloudWatch.html

© www.soinside.com 2019 - 2024. All rights reserved.