【问题标题】:Long-running AWS Lambda tasks with progress and cancellation具有进度和取消的长时间运行的 AWS Lambda 任务
【发布时间】:2019-01-07 16:29:50
【问题描述】:

我有一个应用程序,我希望将计算负载卸载到 AWS,并且正在寻求一些架构指导。用户将启动一个主任务,其中包含约 100 个计算量大的子任务,可以并行运行。

我认为一个合适的解决方案是让桌面应用程序访问 API 网关端点以创建一个新任务,然后该任务会调用许多 Lambda,每个子任务一个。我希望每个子任务都有单独的进度报告,以及用户取消整个任务的能力。用户还可以使用 API 来查询创建的任务/点击另一个端点来取消它。

调用和管理这些 Lambda 子任务、访问每个 Lambda 的中间进度信息、最终结果并允许用户请求取消的合适架构/服务是什么?

【问题讨论】:

  • 我强烈建议不要将 Lambda 函数用于长时间运行的进程。成本分配会伤害你很多。 Lambda 函数应该是快速函数,可以对发生的其他事情做出反应,等等。如果您需要使用长时间运行的 AWS lambda,那么您的设计肯定有问题。我建议使用 EC2/ECS 和 SQS 来实现这一目标。

标签: amazon-web-services architecture aws-lambda


【解决方案1】:

您可能对 AWS Step Functions (https://aws.amazon.com/step-functions/) 感兴趣,用于查询和编排整体进度,并可能使用 DynamoDB (https://aws.amazon.com/dynamodb/) 或其他一些数据存储来监控各个子任务中的进度.

【讨论】:

    猜你喜欢
    • 2019-10-25
    • 1970-01-01
    • 2017-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-19
    • 1970-01-01
    相关资源
    最近更新 更多