是否有可以可靠地安排在准确时间执行作业的云服务?

Are there a cloud service that was reliably schedule execute a job at exact time?

我正在用无服务器模型编写服务器,目前是 aws lambda。并要求 运行 在确切的日期时间

工作

目前我正在 运行使用 aws cloudwatch 执行 cron 作业以每分钟执行一次我的服务器,找到时间戳早于当前时间戳的所有任务,然后执行这些任务。这既浪费又有时会延迟或比实际需要的时间提前一分钟(因为 cloudwatch 的最大频率每分钟只有一个 ping)。不是一个理想的方法

每天的工作都不一样。客户端ping我的服务器可以是动态日期时间

我希望应该有一些类似消息队列但可以在调度时间戳上主动调用目标 URL 的服务。有类似的东西吗?它可以是 aws 之外的任何服务,如果它可以为请求

放置 URL

非常感谢

您是否考虑过获取小型 EC2 实例,然后在那里设置 cron 作业?然后它可以将事件发布到 SNS 或直接调用所需的任务。而且您还应该能够动态安排新作业。

作为解决方法,为什么不让 lambda 在 Cloudwatch 警报上唤醒,然后每 5 秒检查一次任务,直到 55 秒过去?

为此,您可以将 DynamoDB 与 TTL、DynamoDB Streams 和 AWS Lambda 结合使用。

由于计划是动态的并且来自用户,您可以将这些项目保存在 DynamoDB table 中,并将其 TTL 设置为计划的执行时间。

当某个项目达到 TTL 时,它将创建一个 DynamoDB 流,然后您可以使用它来触发 Lambda 函数。

参考文献:

其他解决方案似乎很有希望,但我发现了另一种解决方案

使用步进函数等待状态

http://docs.aws.amazon.com/step-functions/latest/dg/amazon-states-language-wait-state.html

我所在地区还不能使用,因为我所在地区是新加坡,不能跨区使用。目前我会尝试在上方查看 dynamodb 解决方案

截至 2018 年,step 函数已普遍可用并按预期工作

您可能已经找到了解决方案,但我的服务 https://posthook.io 可能非常适合您的用例。它可以让你安排 'hooks' 与这样的 API 调用:

curl https://api.posthook.io/v1/hooks \
-H 'X-API-Key: ${POSTHOOK_API_KEY}' \
-H 'Content-Type: application/json' \
-d '{
    "path": "/webhooks/ph/event_reminder",
    "postAt": "2018-07-03T01:11:55Z",
    "data": {
        "eventID": 25
    }
}'

然后从您的 lamdba 函数中,您可以使用作为 datahook 的唯一 ID 传入的数据在您的数据库中查找内容并执行所需的工作。免费帐户允许您每月安排 500 个这样的请求。

截至 2018 年,出现了 Azure 逻辑应用程序。与 azure 上的 aws step 函数等效的服务。它包含延迟连接器,可以安排延迟时间

https://docs.microsoft.com/en-us/azure/connectors/connectors-native-delay