我正在尝试与CodeDeploy结合设置自动缩放组。除了创建新实例时,CodeDeploy在用户数据脚本(在Launch Configuration中定义)完成之前启动之外,一切都很正常。
这个用户数据脚本的默认值下载并安装代码部署代理,我已经扩展了它,安装了几个windows特性,IIS重写模块和msdeploy.
在我的appspec。我正在使用钩子AfterInstall来部署我的IIS网站,当msdeploy未安装(尚未)时,这显然失败了。
我去这个错误的方式或有一种方法使CodeDeploy等待用户数据脚本完成?
不幸的是,CodeDeploy没有办法知道实例加载了它的操作系统之外的任何信息。好在CodeDeploy给主机代理1小时的时间来轮询自动部署的命令。最简单的方法是在安装了所有必需的依赖项之后安装主机代理。自动部署将被创建,但是要在主机代理启动之后才能进行。
这里有详细说明- https://aws.amazon.com/blogs/devops/under-the-hood-aws-codedeploy-and-auto-scaling-integration/
启动脚本的排序执行—CodeDeploy代理在启动时查找并执行部署。部署执行和启动脚本(如用户数据、cfn-init等)之间没有顺序。我们建议您将主机代理安装为启动脚本的一部分(也可能是最后一步),这样您就可以确保在实例安装了CodeDeploy部署之外的依赖项之前不会执行部署。如果您希望将代理置于基本AMI中,我们建议您将代理服务保持在停止状态,并使用启动脚本来启动代理服务。