首先,我必须说我对AWS相对陌生,但是发现它非常有用。让我描述一下我的情况...
当ASG决定使用我的启动模板和AMI在新的EC2实例中进行扩展时,它将使用AMI中的应用程序代码。但是,如果我在某个时候部署为主服务器,则不会更新我的AMI,但是会更新ASG中的实例。确保由ASG生成的新实例运行最新代码版本(主版本)的最佳方法是什么?
我正在考虑在启动配置中包含一个bash脚本,该脚本将从Bitbucket中提取最新代码并运行以下任何步骤以使我的应用程序运行(例如“ npm install”,“ npm run start”等)。我敢肯定有人会提供更好的解决方案,并且我很想听听一些建议。
答案 0 :(得分:0)
对于任何人,我确实解决了我的问题。最初我是正确的。实例启动并运行后,启动模板中的“用户数据”字段是引导我的应用程序的好地方。它基本上是从远程仓库中克隆出来的,然后执行所有必要的步骤以启动应用程序。
例如,在EC2的启动配置中
#cloud-boothook
#!/bin/bash
git clone myremoterepo.git
cd myremoterepo
npm install
npm run start
此外,如果您正在运行经典的负载均衡器,则当ASG扩展EC2实例时,CodeDeploy将基于S3中的最新代码存储库尝试启动部署。因此上述解决方案将是多余的。