问题描述
我有一个环境,可以根据需要创建新的EC2 worker实例。 我使用现有实例的快照AMI创建了启动模板,然后在RunInstances调用中使用它来启动新的EC2实例。
每次更新应用程序时,都会使用AWS Code Deploy将其部署到正在运行的EC2。问题在于,以编程方式创建的任何新EC2都使用原始的启动模板,该模板的映像中具有旧应用程序的版本。因此,新的EC2获得应用程序的原始快照,而不是最新部署的版本。
有没有办法克服这个问题? (基本上将最新的代码部署应用于新实例,或者获取每个部署要使用的更新的启动模板...)
let params = {
MaxCount: count,MinCount: 1,LaunchTemplate: {
LaunchTemplateName: "<original-launch-template>"
},TagSpecifications: [{
ResourceType: "instance",Tags: [
{ Key: "Name",Value : "<code-deploy-tag>"},]
}],};
let data = await new AWS.EC2({ region: "<region>"}).runInstances(params).promise();
解决方法
您可以使用在启动时运行的用户数据脚本来安装/更新软件,而不必依赖AMI上安装的软件。
这样,在启动新的EC2实例时,它将始终获得最新版本。
,这有效
-----------