我需要构建"任务调度程序"使用亚马逊工具。我需要执行任务一次的主要问题是延迟很长(可能是几个小时或几个星期)。
我尝试研究如何使用CloudWatch和Lambda函数构建它。据我所知 - 我需要使用单独的规则进行一次超时执行。 但AWS只允许100个规则/帐户。
可能我走错路,这个工具不适合我的任务。
我也试过SQS,但它确实不允许我超时15分钟。最简单的方法 - 使用自己的mircoservice与crone,但我希望它可以在云中完成)
可能有人有同样的问题,可以与我分享有关此实施的想法吗?
答案 0 :(得分:2)
CloudWatch规则应该有效,您可以将cron表达式用于事件计划。
答案 1 :(得分:2)
我建议您使用disque来延迟消息/重试,并使用apscheduler(python)来安排任务。
您也可以将disque用作群集。
根据您的使用情况,您可以将这两个放入ec2机器中。
如果您需要任何帮助,请告诉我们!
答案 2 :(得分:1)
您可以使用AWS Step Functions Wait State进行此操作。我自己没有使用它,但似乎你可以定义一个状态机,其中lamdba函数的结果可以用来确定等待下一步函数的时间。
或者,我的API https://posthook.io能够在特定时间向定义的端点发出HTTP POST请求。
答案 3 :(得分:0)
正如之前有人指出的那样,您可以使用 AWS step 函数,这是一个示例定义,它将在指定的时间段内延迟 lambda 执行。您可以从云监视事件规则目标或事件桥触发此步骤函数
{
"Comment": "An example of the Amazon States Language using wait states",
"StartAt": "wait_using_seconds",
"States": {
"wait_using_seconds": {
"Type": "Wait",
"Seconds": 450, // time to delay
"Next": "FinalState"
},
"FinalState": {
"Type": "Task",
"Resource": "arn:aws:lambda:<region>:<account-name>:function:<function-name>",
"End": true
}
}
}