node.js - AWS Step/Lambda - 在运行之间存储变量

标签 node.js amazon-web-services amazon-s3 aws-lambda

在我第一次涉足云计算领域时,我能够关注 Mark West 的 instructions关于如何使用 AWS Rekognition 处理来自安全摄像头的图像,这些图像被转储到 S3 存储桶中,并在检测到人员时提供通知。他的代码是为 Raspberry Pi 摄像头设置的,但我能够通过让它将触发的图像通过 FTP 传输到我的 Synology NAS 并使用 CloudSync 将其镜像到 S3 存储桶,从而使其适应我的 IP 摄像头。一个步骤函数根据下图调用 Lambda 函数,我在 15 秒内收到一封电子邮件,其中包含检测到的标签列表和附加的图像。

Step functions

问题是只要条件被触发,摄像头就会每秒上传一张图像,如果摄像头前有很多事件,我可以快速收集几百封电子邮件。

我想在 make-alert-decision 和 nodemailer-send-notification 之间插入一个函数来检查是否在最后一分钟内发送了电子邮件通知,如果没有,则继续 nodemailer-send-notification right离开,如果是,则将标签列表和附件路径存储在一个数组中,然后在 60 秒后发送一封包含所有附件的电子邮件。

我知道我必须在外部存储数据并遇到了 this article解释不同缓存数据方法的好处,我还认为我可以检查上传到 S3 的文件的时间戳,以比较两个最近上传的文件之间耗时,以决定是继续还是批处理文件以备后用。

作为 AWS 的新手,我正在寻找从复杂性和成本角度来看哪种方法最有意义的建议。我可以忍受文章中讨论的任何方法所涉及的延迟,只是不知道如何继续,因为我从未使用过甚至听说过任何服务。

谢谢!

最佳答案

您可以使用 SQS queue lambda make-alert-decision 向其发送带有每个标签和附件路径的消息。

lambda nodemailer-send-notification 将是该队列的消费者,但为 executed on a regular schedule .

您可以指定每 1 分钟执行一次 lambda,从队列中读取所有消息 - 并立即从队列中删除它们或设置合适的可见时间并在之后删除 - 以获取附件列表并发送单个电子邮件。我们将每 60 秒收到一封包含所有附件的电子邮件。

关于node.js - AWS Step/Lambda - 在运行之间存储变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44792573/

相关文章:

node.js - MEAN 应用程序中项目的单独页面

JavaScript 递归奇怪的行为?

php - Instagram 如何使用 Amazon S3?

amazon-web-services - 如何在 CloudFormation 中指定签名的 S3 URL 作为模板?

amazon-web-services - ECS服务不稳定

php - 从 S3 存储桶中删除大量对象会卡住。为什么?

node.js - 使用 Node.js 将文件上传到 SFTP 服务器时失败代码 4

javascript - 间接调用函数时成员未定义

amazon-web-services - API 网关授权和注销(性能/安全考虑)

mysql - 是否可以在 Amazon RDS 上使用 MySQL UDF?