使用 AWS Elastic Beanstalk 与 AWS CodeDeploy 实现自动化

Automation using AWS Elastic Beanstalk vs AWS CodeDeploy

我正在使用 AWS Elastic Beanstalk 并在其上部署了我的 nodejs 应用程序。现在我想自动化这个过程,即提交对 Github 的更改,然后自动在应用程序中反映这些更改。现在我有两个选择,使用 Elastic Beanslak 还是使用 Code Deploy。 我搜索了这两种服务,

现在两个服务都可以用了,但是哪个更适合用呢。这将使我的流程自动化,无论是使用 AWS Elastic Beanstalk 还是 AWS Code Deploy。

使用第二个选项而不是使用第三方工具,因为 AWS 平台支持使用 git 或使用基于 python 的脚本的 bitbucket 部署您的应用程序。

最大的区别在于:

  • CodeDeploy 是将您的应用程序部署到现有 EC2 实例的服务。它没有考虑负载平衡或缩放等。
  • ElasticBeanstalk 更像是一种 PaaS 服务,它为您提供扩展应用程序所需的所有包装,因此您无需担心 DevOps 方面。比如监控、缩放等

我发现这张图片很好地描述了差异。还包括 OpsWorks:

如果您想了解更多关于 CodeDeploy、Elastic Beanstalk 或 OpsWorks 的差异,请查看 AWS 自己的文档:https://d0.awsstatic.com/whitepapers/overview-of-deployment-options-on-aws.pdf

答案很简单。 ElasticBeanstalk 基于一组 AWS 通用实践提供千篇一律的自动化部署。 CodeDeploy 具有广泛的可配置性和可定制性。

您应该使用 ElasticBeanstalk,直到找到一个不使用 CodeDeploy 就无法解决的用例(Maksim Luzik 发布的 AWS 文档建议的两个用例是部署到您的组织内部管理的 EC2 实例和部署到 EC2 实例用于第三方集成)。

我使用过这两种工具,它们都非常适合各自的工作。我发现 ElasticBeans 任务很方便,但在使用自定义平台时灵活性较差。

我在当前的应用程序中使用 codeDeploy。我决定这样做是因为以下用例。

  • 我正在使用基于 debian 的平台。 Elastic BeansTalks 不在其可用平台的默认列表中提供该平台。那么如果我需要创建自定义 AMI 有什么意义呢。
  • 我有两种基于相同代码库构建的应用程序。一个是 Web,另一个在后台执行几个队列。我需要在两种类型的应用程序上发布相同的代码,所以我发现 codeDeploy 做得更好。