You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现AWS Lambda非并发调用且两次调用间隔30分钟?

可行实现方案

方案一:Step Functions 串行工作流

固定任务场景

若任务数量和每个任务的自定义事件预先确定,直接构建串行状态机即可:

  • 在Step Functions中定义状态机,按顺序排列任务节点:每个节点调用目标Lambda并传入自定义事件,节点后添加Wait状态(设置为1800秒),最后一个任务节点无需等待直接结束。
  • 触发状态机执行后,所有任务会严格按顺序运行,等待时间从上一个任务完成后开始计算,完全满足30分钟间隔要求。

动态任务场景

若任务数量不固定,结合Lambda生成动态工作流:

  1. 将所有任务的自定义事件按顺序存储到DynamoDB或S3。
  2. 编写Lambda函数读取任务列表,动态生成包含串行任务和等待状态的Step Functions状态机定义。
  3. 调用Step Functions API启动该动态状态机,实现批量任务的串行延迟执行。

方案二:DynamoDB任务队列 + Lambda + EventBridge 链式调度

适合任务数量动态、需严格基于上一个任务完成时间计算间隔的场景:

  1. 用DynamoDB创建任务表,包含字段:任务ID、执行顺序、自定义事件、状态(待执行/执行中/已完成)。
  2. 一次性将所有任务写入表中,按执行顺序排序。
  3. 触发初始Lambda执行:
    • 查询表中第一个待执行任务,标记为执行中。
    • 执行业务逻辑,传入自定义事件。
    • 任务完成后,标记为已完成,并查询下一个待执行任务。
    • 若存在下一个任务,调用EventBridge API创建30分钟后触发的调度,触发同一Lambda并传入下一个任务的事件。
  4. 重复上述流程,直至所有任务执行完毕。

方案三:SQS FIFO队列 + Lambda 手动延迟调度

利用SQS FIFO的串行特性,结合EventBridge实现间隔控制:

  1. 创建SQS FIFO队列,关闭Lambda自动触发,确保消息按顺序存储。
  2. 一次性将所有任务消息按顺序发送到队列。
  3. 触发初始Lambda,手动从队列接收一条消息并处理业务逻辑。
  4. 任务完成后,调用EventBridge创建30分钟后的调度任务,触发同一Lambda。
  5. 后续Lambda重复步骤3-4,直至队列无消息剩余。

内容的提问来源于stack exchange,提问作者Nikhil Gupta

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 09:34:56