【问题标题】:How can I deploy multiple applications to a instance using AWS codedeploy如何使用 AWS codedeploy 将多个应用程序部署到一个实例
【发布时间】:2025-11-24 08:20:03
【问题描述】:

我是 codedeploy 的新手,我计划将多个应用程序部署到一个实例中。我正在使用 cloudformation 模板创建 codedeploy,但找不到部署多个应用程序修订版的任何说明。这是我想做的:

  1. 我想使用相同的 codedeploy 组部署应用程序,每个应用程序源文件位于同一个 S3 存储桶中,但文件名不同。
  2. 我想按顺序部署这些应用程序。 我可以使用 cloudformation 模板吗?

【问题讨论】:

    标签: amazon-web-services amazon-cloudformation aws-code-deploy


    【解决方案1】:

    AWS 不建议将多个部署组关联到同一个 ASG, http://docs.aws.amazon.com/codedeploy/latest/userguide/auto-scaling-integ.html

    【讨论】:

    • 这个问题与 ASG 无关——它具体涉及单个实例,可以使用基于标签的部署组来完成
    【解决方案2】:

    这里有两个选项,这实际上取决于应用程序之间关系的性质以及为什么需要按顺序部署它们。

    1。如果您的应用程序相当独立

    执行此操作的最佳方法是为您的每个应用程序创建一个新的 AWS CodeDeploy 应用程序。每个应用程序都有自己的 AWS CodeDeploy 部署组 - 但是,所有部署组都可以指向同一个自动缩放组(或标签配置,如果这是您识别它的方式)。因此,尽管它们看起来像单独的部署组(因为它们嵌套在每个单独的应用程序中),但它们实际上描述的是同一组服务器。

    结构如下:

    • 应用程序 1
      • 部署组 1
        • ASG-abc
    • 应用程序 2
      • 部署组 2
        • ASG-abc

    如果您想确保应用程序按顺序部署,那么您可以在使用 API 推送新修订时进行管理。我们通常编写脚本来推送修订,然后定期轮询 api 以获取已创建部署的状态,直到它完成(或者如果您使用 AWS CLI,您可以使用 aws deploy wait deployment-successful),然后继续执行下一个应用程序.

    这种结构使您可以灵活地将更新部署到单个应用程序,而无需接触其他应用程序。

    这也意味着每个应用程序将在下一个应用程序开始部署之前完全部署(即启动并运行)。

    2。如果您的应用程序是紧密耦合的

    您最好将所有应用程序捆绑到一个 AWS CodeDeploy 应用程序中,并使用与 AfterInstall 挂钩关联的脚本依次配置和“打开”每个应用程序(例如启动服务/守护程序)。有关如何执行此操作的更多详细信息将取决于您的应用程序的性质,并且可能取决于您需要按顺序部署这些应用程序的原因。

    这使您可以灵活地按顺序执行配置逻辑并推迟“启动”应用程序,直到您确定所有应用程序都已成功复制和配置。

    编辑 20170606 - 删除方法 1

    虽然最初的问题只涉及单个实例,而不是 ASG,但我删除了方法 1,因为它在技术上不正确。

    如果您确实希望在同一个实例上使用多个应用程序,那么现在最好的做法是将它们捆绑到同一个 CodeDeploy 应用程序中。

    【讨论】:

    • 考虑到@nitin-ab 提供的答案和亚马逊推荐,解决方案1 ​​是否解决了这个问题?或者换句话说,亚马逊建议您不要将多个部署组关联到同一个 ASG,但这不是您在解决方案一中建议的,我们可以将多个应用程序关联到同一个 ASG 吗?
    • 不幸的是方法 #1 不起作用。当我使用指向同一实例的不同部署组时,我得到完全相同的错误:Multiple deployments are attempting to run at the same time on an instance;
    • 您如何使用方法 #1 处理自动缩放?添加新实例后,所有应用程序部署都会同时启动...
    • @a--m - applogies,看起来方法 1 是红鲱鱼。不确定 AWS 最近是否改变了这种行为,或者我当时是否弄错了。无论哪种方式,它都不准确,因此编辑了答案。即使您有两个独立的应用程序,如果您希望将它们部署到同一个 ASG,建议将它们捆绑到同一个 CodeDeploy 应用程序中。
    • 感谢您的回复。我们面临的主要问题是自动缩放,部署是一次性启动的,这就是导致问题的原因。正如您可以想象的那样,当您最需要那个额外的实例时会发生这种情况;)
    最近更新 更多