AWS - Batch 与 Fargate

AWS - Batch vs Fargate

我有一张 docker 图片。我想通过创建 CloudWatch Rule.

定期创建一个容器并作为一项工作执行,比如每 1 小时执行一次

因为我们使用的是 AWS 云,所以我正在查看 AWS Batch 服务。有趣的是还有一个 ECS Scheduled task.

这两个有什么区别?

注意:我有一个初始容器 - 即我有 2 个 docker 容器一个接一个 运行。 ECS Scheduled Task 似乎是可行的。但不是 Batch.

AWS Batch 用于 批处理作业,例如并行处理大量图像或视频(每个 image/video 一个容器)。这在用于研究目的的批处理类型工作负载中非常有用。

AWS Batch 基于 ECS(也支持 EC2),它允许您简单地 运行 您的容器。它没有特定的用例,它更通用。如果您没有批处理类型的项目,那么 ECS 可能是您更好的选择。

如果您想要使用 AWS Fargate 按顺序 运行 两个容器,那么您可能想要使用 AWS Step Functions 对其进行编排。 Step Functions 将允许您连续调用任意任务,并且它与 AWS Fargate 直接集成。

Amazon EventBridge Rule (hourly) ----- uses AWS IAM role to gain permission to trigger Step Functions

|
| triggers
|

AWS Step Functions ----- Uses AWS IAM role to gain permission to trigger Fargate

|
| triggers
|

AWS Fargate (Amazon ECS) Task Definition

AWS Batch 专为需要跨多个节点横向扩展的数据处理任务而设计。如果您的用例只是简单地按顺序启动几个容器,那么 AWS Batch 就太过分了。

CloudWatch 事件规则

仅供参考 CloudWatch 事件规则仍然有效,但该服务已更名为 Amazon EventBridge。我建议以后使用 Amazon EventBridge 控制台和 API,而不是 Amazon CloudWatch Events API。

其他答案都正确。我只想补充一点,我们(AWS 容器团队)运行 去年 re:Invent 的 session 涵盖了这些选项,并提供了有关何时使用其中一个选项的提示。 session 涵盖了 ECS、EC2 和 Fargate 之间的关系(经常被遗漏的东西)以及何时使用“原始”ECS,Vs Step Functions Vs Batch 作为 运行 批处理的入口点职位。 This 是 link 到 session。