假设我从我的一个 EC2 实例创建了一个 AMI。现在,我可以手动将其添加到 LB 或让 AutoScaling 组为我执行此操作(基于我提供的条件)。到目前为止,一切都很好。
现在,假设我的开发人员添加了一个新功能,并且我在现有实例上提取了新代码。请注意,AMI 此时未更新,仍然有旧代码。我的问题是我应该如何处理这种情况,以便当自动缩放组从我的 AMI 创建一个新实例时,它将使用最新的代码。
我想到了两种方法,如果您有其他解决方案,请告诉我:
a) 始终保持 AMI 更新;这意味着只要有拉取请求,就应该删除(删除)旧的 AMI 并用新的 AMI 替换。
b) 在 AMI 上有一个启动脚本 (cloud-init),它将在初始启动时从存储库中提取最新代码。(通过将存储库凭据存储在实例上并直接从 git 中提取代码)
这些方法中哪一种更好?如果两者都不好,那么实现这一目标的最佳做法是什么?