AWS CodeDeploy 在 Auto Scaling 用户数据脚本完成之前执行

问题描述 投票:0回答:2

我正在尝试结合 CodeDeploy 设置 Auto Scaling 组。一切工作正常,除了创建新实例时 CodeDeploy 在用户数据脚本(在启动配置中定义)完成之前启动。

此用户数据脚本的默认值下载并安装代码部署代理,我通过安装几个 Windows 功能、IIS 重写模块和 msdeploy 对其进行了扩展。

在我的 appspec.yml 中,我使用钩子 AfterInstall 来部署我的 IIS 网站,当尚未安装 msdeploy 时,这显然会失败。

我的处理方式是否错误,或者有没有办法让 CodeDeploy 等待用户数据脚本完成?

amazon-web-services amazon-ec2 windows-server aws-code-deploy
2个回答
16
投票

不幸的是,除了实例已加载其操作系统之外,CodeDeploy 无法了解任何其他信息。好处是 CodeDeploy 为主机代理提供了 1 小时的时间来开始轮询自动部署命令。最简单的方法是在安装所有必需的依赖项后安装主机代理。将创建自动部署,但只有在启动 Host Agent 后才能继续。


4
投票

此处详细解释 - https://aws.amazon.com/blogs/devops/under-the-hood-aws-codedeploy-and-auto-scaling-integration/

命令执行启动脚本 – CodeDeploy 代理在启动后立即查找并执行部署。部署执行和启动脚本(例如用户数据、cfn-init 等)之间没有顺序。我们建议您将主机代理安装为启动脚本的一部分(也可能作为最后一步),以便您可以确定在实例安装了不属于 CodeDeploy 部署一部分的依赖项之前,部署不会执行。如果您更喜欢将代理烘焙到基础 AMI 中,我们建议您将代理服务保持在停止状态,并使用启动脚本来启动代理服务。

© www.soinside.com 2019 - 2024. All rights reserved.