【问题标题】:AWS Step/Lambda - storing variable between runsAWS Step/Lambda - 在运行之间存储变量
【发布时间】:2017-06-30 15:24:07
【问题描述】:

在我第一次涉足云计算时,我能够关注 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 正确如果是这样,则将标签列表和附件路径存储在一个数组中,然后在 60 秒后发送一封包含所有附件的电子邮件。

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

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

谢谢!

【问题讨论】:

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


    【解决方案1】:

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

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

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

    【讨论】:

    • 这只会减慢消息的速度吗?我正在尝试减少消息总量而不丢失任何消息。
    • 对不起@MattD。一开始我误解了你的问题。我刚刚用不同的建议编辑了我的答案,仍然使用 SQS 队列,但也使用 lambda 定期从该队列中读取。它可能对你有用:)
    • 这听起来很有希望!我浏览了文档,虽然它离我很远,但希望我可以 find enough examples 拼凑一些东西。如何确保序列中的第一条消息被立即处理,其余的进入队列?
    • 也许 FIFO SQS 队列 (docs.aws.amazon.com/AWSSimpleQueueService/latest/…) 可以帮助解决这个问题
    猜你喜欢
    • 2021-02-01
    • 2020-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-06
    • 1970-01-01
    • 1970-01-01
    • 2017-11-06
    相关资源
    最近更新 更多