【问题标题】:AWS - Batch vs FargateAWS - 批处理与 Fargate
【发布时间】:2021-10-09 01:44:06
【问题描述】:
我有一个 docker 镜像。我想通过创建CloudWatch Rule 定期创建一个容器并作为作业执行,例如每 1 小时一次。
当我们使用 AWS 云时,我正在查看 AWS Batch 服务。有趣的是还有一个ECS Scheduled task。
这两个有什么区别?
注意:我有一个 init 容器——也就是说,我有 2 个 docker 容器可以一个接一个地运行。 ECS Scheduled Task 似乎是可能的。但不是Batch。
【问题讨论】:
标签:
amazon-web-services
aws-fargate
aws-batch
【解决方案1】:
AWS Batch 用于批处理作业,例如并行处理大量图像或视频(每个图像/视频一个容器)。这在用于研究目的的批处理型工作负载中最有用。
AWS Batch 基于 ECS(也支持 EC2),它允许您简单地运行您的容器。它没有特定的用例,它更通用。如果您没有批处理类型的项目,那么 ECS 可能是您更好的选择。
【解决方案2】:
如果您想使用 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。
【解决方案3】:
其他答案都是正确的。我只是想补充一点,我们(AWS 容器团队)去年在 re:Invent 上举办了一次会议,涵盖了这些选项,并提供了有关何时使用其中一个选项的提示。该会议涵盖了 ECS、EC2 和 Fargate 之间的关系(经常被忽略的东西)以及何时使用“原始”ECS、Vs Step Functions Vs Batch 作为运行批处理作业的入口点。 This 是会话的链接。