AWS CodeDeploy部署在事件ApplicationStop中失败



我正在尝试使用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中获取工件的必要权限。

  1. 您的EC2实例必须附加IAM角色,该角色赋予它足够的权限从S3 bucket下载工件
  2. 您的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