通过AWS lambda存储值

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了通过AWS lambda存储值相关的知识,希望对你有一定的参考价值。

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

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

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

我在NodeJS中编写了这个函数

有什么建议 ?

答案

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

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

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

另一答案

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

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

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

另一答案

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

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

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

以上是关于通过AWS lambda存储值的主要内容,如果未能解决你的问题,请参考以下文章

如何通过 AWS HTTP API 向 Lambda 发送参数

通过 AWS Lambda 函数访问 EC2 实例服务

使用nodejs中的AWS Lambda函数上传音频文件

访问 AWS Lambda 的 Amazon CloudWatch 日志

通过AWS lambda在EC2实例上执行python脚本

HTTP 请求正文未通过 AWS API Gateway 访问 AWS lambda 函数