AWS 上的 Docker - Elastic Beanstalk 和 ECS 之间有什么区别?

use*_*521 5 amazon-web-services amazon-ecs amazon-elastic-beanstalk

我想从 Heroku 迁移到 Amazon AWS,并且想在 Docker 映像中部署我的应用程序。所以该应用程序包括:

  • Web 服务器(node.js -> docker 镜像)
  • 工人(node.js -> docker 图像)
  • Postgres 数据库(亚马逊 RDS)
  • Redis 实例(Amazon ElatiCache?)

使用我的应用程序(Web+Worker):

  • 我必须能够手动或自动扩展 web 和 worker 实例。
  • 以零停机时间更新新图像
  • 查看实时/历史指标
  • 查看实时/历史记录

现在在研究 Amazon 文档时,我发现了“Elastic Beanstalk”和“Amazon EC2 Container Services (ECS)”。我想知道我应该使用哪一个来管理我的应用程序(docker 图像)?它们之间有什么区别?

Ste*_*pel 7

AWS Elastic Beanstalk在其Multicontainer Docker Environments 中使用了Amazon EC2 Container Service,不同之处由 resp 解决。常见问题Amazon ECS 与 AWS Elastic Beanstalk 有何不同?

AWS Elastic Beanstalk [...] 将构建块(例如 EC2、RDS、Elastic Load Balancing、Auto Scaling、CloudWatch)的配置、应用程序部署和健康监控从用户抽象出来,以便他们可以专注于编写代码. 您只需指定要部署的容器映像、CPU 和内存要求、端口映射和容器链接。Elastic Beanstalk 将 [...] 处理所有细节,例如预置 Amazon ECS 集群、平衡负载、自动扩展、监控以及在集群中放置容器。

[...]如果您想要对自定义应用程序架构进行更精细的控制,您可以直接使用 Amazon ECS。 [强调我的]

此外,只有 Elastic Beanstalk 支持 Heroku 的推送部署模型(请参阅EB 命令行界面部署命令),因此对于您的场景,我绝对建议您查看 Elastic Beanstalk 的多容器 Docker 环境,而不是直接使用Amazon ECS