在我第一次涉足云计算领域时,我能够关注 Mark West 的 instructions关于如何使用 AWS Rekognition 处理来自安全摄像头的图像,这些图像被转储到 S3 存储桶中,并在检测到人员时提供通知。他的代码是为 Raspberry Pi 摄像头设置的,但我能够通过让它将触发的图像通过 FTP 传输到我的 Synology NAS 并使用 CloudSync 将其镜像到 S3 存储桶,从而使其适应我的 IP 摄像头。一个步骤函数根据下图调用 Lambda 函数,我在 15 秒内收到一封电子邮件,其中包含检测到的标签列表和附加的图像。
问题是只要条件被触发,摄像头就会每秒上传一张图像,如果摄像头前有很多事件,我可以快速收集几百封电子邮件。
我想在 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/