代码部署失败,没有任何错误信息。

24

我一直在尝试为我的应用程序设置代码部署,但它一直失败。最初,在存储库中没有appspec.yml文件,因此我收到了错误消息,指出appspec.yml文件不存在。

我现在已经包含了一个appspec.yml文件,但它仍然不起作用,并且没有提供任何错误消息。没有提到任何事件,就像在添加appspec文件之前那样。

当涉及创建appspec.yml文件时,我几乎没有入门知识,但我从YouTube教程中得到了提示,以下是该文件。

version: 0.0
os: linux
files:
 - source: /
   destination: /var/www/cms

如果有帮助的话,这个 ec2 实例正在运行一个 Ubuntu 服务器,/var/www/cms 是 nginx 应该提供文件的目录。


3
请确认代码部署代理正在实例上运行。此外,您可以在Ubuntu ec2实例上检查代码部署代理日志获取更多信息,也许错误就在那里:/var/log/aws/codedeploy-agent。最后,您还可以在这里检查特定的部署步骤:less +F /opt/codedeploy-agent/deployment-root/{deployment-group-ID}/{deployment-ID}/logs/scripts.log - Luke Hutton
4个回答

46
你面临的最有可能的问题是代理程序未安装或实例没有足够的权限。当部署实例上没有事件启动时,表示 CodeDeploy 由于某些原因无法与主机通信。
以下是我会采取的步骤:
  1. 确认是否安装了 CodeDeploy 代理程序
  2. 确认是否已创建 IAM 服务角色
  3. 确认是否有 IAM 实例配置文件,并且它已与实例关联
  4. 检查是否能从该实例访问您所在地区的 CodeDeploy 命令端点。例如:ping codedeploy.us-east-1.amazonaws.com,否则可能是您的网络设置过于严格。
  5. 查看主机日志以了解发生了什么情况

2
在我的情况下,是错误的安全组(不允许进行HTTP调用)。 - Stepan Suvorov
2
@StepanSuvorov 这是一个很好的观点。正确设置安全组可能会有些棘手。更新答案以进行检查。 - EmptyArsenal
救命稻草,老兄! - AhmadWabbi
3
在我的情况下,在将IAM实例角色与实例关联后,重启CodeDeploy代理服务解决了问题(在Ubuntu 18上)。谢谢! - SebaGra
@SebaGra - 有时候你会偶然发现一些评论,你知道它们为你节省了4个小时的痛苦和煎熬,所以我由衷地感谢你。 - koosa

20

我曾经遇到过这个问题,原因如下: 如果我们在创建并开启EC2实例时没有设置IAM服务角色,并且之后我们添加了服务角色,那么直到我们重新启动实例之前,它都不会生效。


5
经过5个多小时的故障排除,这解决了我的问题。谢谢。 - Hassan Al-Jeshi
同样的问题,我也经过了3-4个小时的挣扎,最终这个解决方案对我起作用了。AWS应该在他们的文档中提到这一点。 - umer
非常感谢!我甚至想不到之后编辑了IAM角色会导致我的问题。 - James Yoo

0
如果有帮助的话,我遇到了同样的问题,原因是 ec2 实例上未安装 codedeploy 代理。 安装后,一切都像魔法一样正常运行。

0

我已经将 IAM 角色附加到 EC2 实例上,但我没有重新启动我的 systemd 服务。这就是失败的原因。

此外,在不重启实例的情况下,您可以只重启 codedeploy-agent 的 systemd 服务。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接