我正在尝试使用EC2设置从GitHub到AWS的自动部署。我使用CodeDeployServiceRole自动策略设置角色
在学习了教程:使用AWS CodeDeploy从GitHub部署应用程序后,我的部署在ApplicationStop事件中失败,尝试了几分钟,错误代码为HEALTH_CONSTRAINT。我不知道如何解决这个问题/在哪里查找。
以下是如何导航的一些提示
-
/var/log/aws/codedeploy-agent
中注释中提到的日志 -
根据AWS支持的建议,您可以添加一次
--ignore-application-stop-failures
,以便在上次失败的情况下跳过该步骤,并查看,因为应用程序停止生命周期事件使用上次成功构建的appspec
文件,因此如果该文件以某种方式损坏,则该步骤将在以下构建中失败 -
(不推荐(您可以删除CodeDeploy用于跟踪以下路径
/opt/codedeploy-agent/deployment-root/deployment-instructions/
中上次成功部署的文件
检查/var/log/aws/codedeploy-agent
的最新日志
如果您的部署在ApplicationStop
事件中失败,那么问题很可能是您的EC2实例没有从S3 bucket中获取工件的必要权限。
- 您的EC2实例必须附加IAM角色,该角色赋予它足够的权限从S3 bucket下载工件
- 您的EC2必须以IAM角色开始。因此,在将角色附加到实例后,您可能需要重新启动实例
从您的配置来看,您似乎已经为CodeDeploy
提供了在EC2上执行某些操作的权限。您可能需要检查您的EC2是否也具有从S3 bucket下载包的必要权限。
此错误的另一个原因是您的计算机上没有运行CodeDeploy服务。在Windows计算机上,代码部署服务有时会终止,因此部署不会在计算机上下载。日志中也没有显示任何内容。运行services.msc并检查代码部署代理服务。如果它没有运行,请启动它并重试部署。
我遇到了同样的问题,并通过解决在我的EC2实例上不工作的codedeploy代理来解决它。
sudo service {httpd/apache2} status
某些原因可能导致代理无法正常运行
希望它能帮助
我遇到了同样的问题。您还需要确保您的EC2实例安装了代码部署代理。
请遵循以下aws指南。它对我有效。
在linux服务器中安装代码代理的AWS指南
检查codedeploy代理是否正在运行。
sudo service codedeploy-agent status
如果没有运行,则使用以下命令运行
sudo service codedeploy-agent start
如果您使用的是awsWindows服务器,请查看以下位置的日志:
C:ProgramDataAmazonCodeDeploylogcodedeploy-agent-log.txt
AWS文档
检查codedeployagent是否在windows中运行。打开powersheel命令窗口并运行这些命令。
powershell.exe -Command Get-Service -Name codedeployagent
最好停下来重新开始。
powershell.exe -Command Stop-Service -Name codedeployagent
powershell.exe -Command Start-Service -Name codedeployagent
或者重新启动也适用
powershell.exe -Command Restart-Service -Name codedeployagent
对我来说,我不得不通过卸载和删除codedeploy的旧文件来卸载windows上的codedeployagent。
在powershell中逐个运行以下命令以卸载。
wmic
product where name="CodeDeploy Host Agent" call uninstall /nointeractive
exit
在此之后,删除此位置的codedeploy文件夹。
C:ProgramData/Amazon/CodeDeploy/
现在安装codedeployagent on windows
。
再次启动codedeployagent。
powershell.exe -Command Start-Service -Name codedeployagent