【问题标题】:Nested Cron Job in AWS Lambda FunctionAWS Lambda 函数中的嵌套 Cron 作业
【发布时间】:2019-11-01 23:12:10
【问题描述】:

要求:在适当的时候向 n 个用户发送提醒。例如,用户 1 在上午 9:10,用户 2 在晚上 10:50,用户 3 在上午 4:20 等等。

Nodejs 中的解决方案 我有一个 Nodejs Cron 作业,每 55 分钟运行一次(即 9:55、10:55、11:55)。首先它会删除所有子 cron 作业,然后从数据库中获取数据并检查用户的提醒设置。根据数据库中的提醒设置,它为所有用户创建子 cron 作业以发送提醒。

AWS Lambda 中的解决方案

我创建了 lambda 函数并将其安排为 55 分钟。在 lambda 内部,我正在做与在 nodejs 中相同的事情,但是由于 lambda 的执行已完成,因此子 cron 作业没有被执行。

我考虑过步进功能,但不确定如何实现,因为它是动态的。也有人建议触发 SNS,但这在我的场景中也不起作用。

请有人帮助我使用 AWS Lambda 实现这一目标。

【问题讨论】:

    标签: node.js amazon-web-services cron aws-lambda aws-step-functions


    【解决方案1】:

    我想您可以使用 aws-sdk 在您的 nodejs cron 作业中动态创建 cloudwatch 规则。

    为了获得更好的对比度,请创建 2 个单独的函数。

    1. 主 Cron 作业(删除 cloud-watch 中的子 cron 作业,从数据库中检索数据,创建在特定时间调用子 cron 作业的 cloudwatch 规则)

    2. 子 Cron 作业(仅发送提醒)

    阅读更多:Nodejs Create CloudWatch

    【讨论】:

      【解决方案2】:

      为什么不让 1 个每分钟运行的 cron 作业根据数据库信息发送所有需要发送的提醒?我真的不明白为什么需要嵌套的 cron 作业?

      无论如何,您也可以使用 DynamoDB 的 time to live attribute 和触发 Lambda 函数的流。创建一条记录,每隔 Y 在 X 发送一次提醒,其中 X 是到期时间。 Lambda 函数触发,完成后您创建一条新的 DDB 记录,到期时间为 X+Y。在这种情况下,您甚至可能不需要 cron 作业 Lambda。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-09-20
        • 2022-09-23
        • 1970-01-01
        • 2022-09-23
        • 2019-08-19
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多