如何更新由 AWS Auto Scaling 启动的新实例?

How do I update new instances started by AWS auto scaling?

我们使用 AWS cloudformation 服务来初始化我们的堆栈,并设置自动缩放服务以在负载上升时启动新的应用程序服务器。

我的理解是Auto Scaling只能作为新实例启动预定义的AMI。这些实例可能不同于其他 运行 个实例,因为我们可能已经更新了部署在这些实例上的 packages/source 代码。

如何使新实例保持最新? 每次向 运行 实例部署新内容时,我是否应该更新 AMI?或者在自动缩放时是否可以在新实例 (Opsworks) 上触发自动部署?

我是 AWS 的新手,所以请原谅我的问题。

有多种方法可以做到这一点。我的首选方法是从不直接接触服务器,而是在部署新版本的软件时创建一个新的 AMI。

为此,请使用 AutoScalingRollingUpdate 属性 作为自动缩放组。当您随后更改 ImageId 启动配置时,AWS 将自动用新服务器替换您的旧服务器作为滚动升级。

我有一个简单的部署脚本,它创建一个新的 AMI,替换模板中的 ImageId,然后执行堆栈更新 - AWS 负责其余部分。

从 Beanstalk 创建 EC2 实例时,它会根据指定的环境选择自动创建 AutoScaling 组和启动配置。使用自定义代码调用 user data 从基本 AMI 创建实例,其中包括用于创建文件夹和安装相关软件的 shell 脚本。

您可以在其中添加新的 shell 脚本或命令以在启动新实例之前完成您的自定义工作。这样就简单多了。 例如您可以 运行 在启动实例之前进行 yum 更新

查找用户数据部分 转到 EC2 控制台 -> 转到启动配置部分(左侧) -> Select 正确的启动配置并复制它 -> 单击查看用户数据 -> 根据需要添加脚本和命令 -> 修改相关的自动缩放组以指向新的启动配置