对于同一组 EC2 实例,我有两个部署组:一个是就地部署(例如,对于重要性较小的“热”修复),另一个是蓝/绿部署(例如,对于更大的更改,我希望确保我正在运行的应用程序将在新配置的实例上正常运行)。
这种方法运行良好,但我有一个问题:如果我的自动扩展组(用于蓝/绿部署组)需要创建新实例,则新的 EC2 服务器将使用 ASG 在其标签中标记的部署 ID 进行配置CodeDeployProvisioningDeploymentId
。此标签仅在我进行蓝/绿部署时更新。由于这些部署发生的频率较低,这意味着我创建的新实例在创建时通常已经是几个部署之前的了。
我认为我需要做的是找到一种方法来CodeDeployProvisioningDeploymentId
在使用就地部署组部署更改时更新 ASG 上的标签值,以便它始终是最新的。或者,在我运行在所有新实例上的配置脚本中(安装依赖项等),我可以获取最新的部署 ID 并将其安装在实例上。
有人对如何处理这个问题有什么建议或专业提示吗?
答案1
在这两个选项中,更新 ASG 上的标签似乎是解决此问题的更好方法,因为配置过程中的后续生命周期事件仍将尝试部署应用程序的过时版本,从而覆盖它。
但是为什么不使用一个默认为就地部署的部署组,而是在需要进行重大更改时为其创建蓝绿部署呢?这样就无需更新 CodeDeployProvisioningDeploymentId 标签。