错误:整体部署失败,因为太多的单个实例部署失败

Nor*_*awa 5 amazon-s3 amazon-ec2 circleci aws-code-deploy

我正在尝试使用 CircleCI -> S3 -> CodeDeploy -> EC2 进行部署。我能够将部署映像从 CircleCI 上传到 S3,但无法将 S3 部署到 EC2 实例。这是错误。

整体部署失败,原因是太多的单个实例部署失败,可用于部署的健康实例太少,或者部署组中的某些实例遇到问题。(错误代码:HEALTH_CONSTRAINTS)

该错误是从 CodeDeploy 提供的。我无法弄清楚为什么以及如何。如果您能提供一些建议,我将不胜感激。

kis*_*aru 7

如果您在 Ubuntu 上运行可能有很多原因,这里有一个清单可以验证

检查代码部署代理是否安装在您的 EC2 实例上。请参考本文档安装代码部署代理。 https://docs.aws.amazon.com/codedeploy/latest/userguide/codedeploy-agent-operations-install-ubuntu.html

$ sudo service codedeploy-agent status
Run Code Online (Sandbox Code Playgroud)

如果您正在运行 Ubuntu 版本 20.x 并且您收到此错误

./install:22:in block in method_missing': undefined method path' for #<IO:> (NoMethodError)

尝试通过此脚本运行安装文件

sudo ./install auto > /tmp/logfile
Run Code Online (Sandbox Code Playgroud)
  1. 检查您是否拥有 EC2 实例代码部署角色 -> 创建代码部署角色并将其分配给实例,https://docs.aws.amazon.com/codedeploy/latest/userguide/getting-started-create-service-role。 HTML

如果您在启动后分配 EC2 角色,请重新启动服务器。

  1. 根据最佳答案检查您的 appsec.yml 文件位置,尽量避免其中的任何长时间超时。

  2. 登录您的实例检查您的错误日志

$ tail -f /var/log/aws/codedeploy-agent/codedeploy-agent.log

  • 那个“tail”命令救了我,ty (3认同)

小智 5

appSpec.yml此错误通常是由于或的配置问题造成的appSpec.json(这取决于您使用的格式)。

\n

“如果你有任何 Hook,我建议你删除它们,检查它是否有效,然后你可以一一添加(Hook),这样你就可以识别错误”

\n

appspec.yml文件应位于项目的根目录下:

\n
   \xe2\x94\x82-- appspec.yml\n   \xe2\x94\x82-- index.html\n   \xe2\x94\x94-- scripts\n       \xe2\x94\x82-- install_dependencies\n       \xe2\x94\x82-- start_server\n       \xe2\x94\x94-- stop_server\n
Run Code Online (Sandbox Code Playgroud)\n

在该scripts文件夹中,您必须根据Hook放置要执行的进程

\n

appspec.yml这是该文件的示例

\n
version: 0.0\nos: linux\nfiles:\n  - source: /index.html\n    destination: /var/www/html/\nhooks:\n  BeforeInstall:\n    - location: scripts/install_dependencies\n      timeout: 300\n      runas: root\n    - location: scripts/start_server\n      timeout: 300\n      runas: root\n  ApplicationStop:\n    - location: scripts/stop_server\n      timeout: 300\n      runas: root\n
Run Code Online (Sandbox Code Playgroud)\n

我希望我能帮助你

\n


小智 4

您应该能够通过深入研究部署实例详细信息来找出导致各个实例失败的原因: http://docs.aws.amazon.com/codedeploy/latest/userguide/how-to-view-instance-details。 html

这些应该包含有关应用程序无法部署的原因的更详细信息。

  • 查看 /var/log/aws/codedeploy-agent/codedeploy-agent.log 后,我注意到 IAM 服务角色出现一些错误。但看起来配置正确。CodeDeploy 完全访问权限就在那里。任何想法? (6认同)