代码之家  ›  专栏  ›  技术社区  ›  JayMore

AWS Fargate vs Batch vs ECS每天一次的批处理过程

  •  2
  • JayMore  · 技术社区  · 6 年前

    我想知道什么是用于调度、执行和监视我的批处理过程的最佳AWS服务:

    • 带有crontab的EC2机器 :这里没有高可用性函数,所以我决定改用更多的PaaS方法。
    • 然后,我用了
    • 但现在,为了提高效率,我决定搬到一些 ECS服务 ,并且采用了一种方法,我不需要让EC2实例在23/24的情况下无缘无故地唤醒。所以我试过法盖特。
    • 我定义了我的任务(Fargate类型,而不是EC2类型),并对其进行了配置。
    • 我创造了一个 集群

    现在,深入法盖特,我想让我的任务每天执行一次。

    • 当我使用 计划任务 ECS特点:容器准时启动,进程运行,容器停止。但是CloudWatch缺少一些指标:CPUReservation和CPUUtilization没有报告。此外,无法知道批处理是否退出,退出代码为0或1(所有执行都已停止,状态为“stopped”)。所以如果容器执行失败,我就不能发送CloudWatch警报。

    • 我使用Fargate的“服务”特性,但它不能处理批处理过程,因为容器每次停止时都会启动。这是正常的,因为容器没有任何守护进程。没有办法安排服务。我希望我的容器只有在需要工作时才处于活动状态(每天一次,最多1小时)。但CloudWatch中正确地报告了缺失的指标。

    下面是我的问题:什么是最合适的AWS托管服务来每天触发一次容器,让它运行来执行任务,并有报告工具来跟踪执行(CPU使用率、批处理持续时间),包括任务失败时的警报(SNS)?

    1 回复  |  直到 6 年前
        1
  •  2
  •   Avi Nehama    6 年前

    我们在识别失败的工作时也遇到了同样的问题。我建议您研究一下AWS批处理,其中在CloudWatch日志中可以找到失败作业的日志;看一看 here .

        2
  •  0
  •   Rjourdan    4 年前

    你看过AWS的Step函数了吗?可以在ECS/Fargate上定义工作流并启动任务(或EKS上的作业),等待结果并发出警报/发送电子邮件。。。

    推荐文章