AWS Lambda.延迟调用



我需要用亚马逊工具构建"任务调度程序"。主要问题是我需要以巨大的延迟执行任务一次(可能是几个小时或几周(。

我尝试研究如何使用CloudWatch和Lambda函数构建它。据我了解 - 我需要为一次超时执行使用单独的规则。但 AWS 只允许我 100 个规则/账户。

可能我走错了路,这个工具不适合我的任务。

我也尝试了 SQS,但它不允许我设置超时超过 15 分钟。最简单的方法 - 使用自己的 mircoservice 和 crone,但我希望可以在云中做到这一点(

可能有人有同样的问题,可以与我分享有关实施的想法?

CloudWatch 规则应该有效,您可以对事件计划使用 cron 表达式。

我建议您使用disque来延迟消息/重试,并使用apscheduler(python(来调度任务。

您也可以将 disque 用作集群。

您可以根据您的使用案例将这两个放在 ec2 机器中。

如果您需要任何帮助,请告诉我!

为此,您可以使用 AWS Step Functions Wait State。我自己没有使用过它,但似乎您可以定义一个状态机,其中 lamdba 函数的结果可用于确定等待下一步函数的时间。

或者,我的 API https://posthook.io 能够在特定时间向定义的端点发出 HTTP POST 请求。

正如之前有人指出的那样,您可以使用 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
    }
  }
}

如果您有使用AWS以外的云提供商的灵活性,Google Cloud Tasks API可以提供您正在寻找的功能。有一个简单的演示 Web 服务使用此 API 构建 https://delayedrequest.com

相关内容

  • 没有找到相关文章

最新更新