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

Node.js AWS Step/Lambda-在运行之间存储变量,node.js,amazon-web-services,amazon-s3,aws-lambda,Node.js,Amazon Web Services,Amazon S3,Aws Lambda,在我第一次涉足云计算领域时,我就能够跟随马克·韦斯特(MarkWest)学习如何使用AWS Rekognion来处理安全摄像头中的图像,这些图像被放入S3存储桶中,并在检测到人时发出通知。他的代码是为Raspberry Pi摄像头设置的,但我能够通过将触发的图像FTP到我的Synology NAS并使用CloudSync将其镜像到S3存储桶,使其适应我的IP摄像头。step函数根据下图调用Lambda函数,我在15秒内收到一封电子邮件,其中包含检测到的标签列表和附加的图像 问题是,只要条件被触

在我第一次涉足云计算领域时,我就能够跟随马克·韦斯特(MarkWest)学习如何使用AWS Rekognion来处理安全摄像头中的图像,这些图像被放入S3存储桶中,并在检测到人时发出通知。他的代码是为Raspberry Pi摄像头设置的,但我能够通过将触发的图像FTP到我的Synology NAS并使用CloudSync将其镜像到S3存储桶,使其适应我的IP摄像头。step函数根据下图调用Lambda函数,我在15秒内收到一封电子邮件,其中包含检测到的标签列表和附加的图像

问题是,只要条件被触发,相机就会每秒上传一张图像,如果相机前面有很多活动,我可以很快收集几百封电子邮件

我想在make alert decision和NodeEmailer send notification之间插入一个函数,该函数将检查电子邮件通知是否在最后一分钟内发送,如果没有,则立即转到NodeEmailer send notification,如果是,则存储标签列表,和数组中附件的路径,然后在60秒后发送一封包含所有附件的电子邮件

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

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

谢谢

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

lambda
nodemailer发送通知
将是该队列的使用者,但不是


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

这会降低邮件发送速度吗?我试图在不丢失任何邮件的情况下减少邮件总量。抱歉@MattD。起初我误解了你的问题。我只是用一个不同的建议编辑了我的答案,仍然使用SQS队列,但也使用具有常规时间表的lambda从该队列中读取。这可能对你有用:)听起来很有希望!我浏览了一下文档,虽然它远远超出了我的理解范围,但我希望我能拼凑一些东西。我如何确保序列中的第一条消息立即被处理,其余消息进入队列?也许FIFO SQS队列()可以帮助解决这个问题