首先,我必须说我对AWS比较陌生,但发现它非常有用。让我来描述一下我的情景..。
我现在拥有的
一个自动缩放组(ASG) Bitbucket
H 111
我的应用程序代码H 212F 213
)
我的问题
当ASG决定使用我的启动模板和AMI扩展到一个新的EC2实例时,它将使用来自AMI的应用程序代码。但是,如果我在某个时候部署到master,我的AMI将不会被更新,但是ASG中的实例将被更新。什么是确保ASG生成的新实例运行最新代码版本(主版)的最佳方法?
我最初的想法
我正在考虑在启动配置中包含一个bash脚本,该脚本将从Bitbucket中提取最新的代码,并运行以下步骤来运行我的应用程序(如"npm安装“、"npm运行启动”等)。我肯定有人有一个更优雅的解决方案,我想听听一些建议。
发布于 2020-10-01 15:35:19
对于任何来此的人,我确实解决了我的问题。一开始我是对的。启动模板中的“用户数据”字段是启动和运行实例后引导我的应用程序的好地方。它基本上是克隆从远程回购和执行任何必要的步骤,以启动应用程序之后。
例如,在EC2的启动配置中
#cloud-boothook
#!/bin/bash
git clone myremoterepo.git
cd myremoterepo
npm install
npm run start
此外,如果您正在运行一个经典的负载均衡器,CodeDeploy将尝试在您的ASG扩展EC2实例时,根据您在S3中的最新代码回购启动部署。因此,上述解决方案将是多余的。
https://stackoverflow.com/questions/64043143
复制