1

我在 AfterInstall 挂钩中执行 install_dependencies.sh 脚本时遇到问题-

在 AfterInstall 挂钩期间,我的 CodeDeploy 代理尝试从中运行脚本的部署存档似乎还不存在。

我收到此错误,导致我的部署失败:

ERROR [codedeploy-agent(2643)]: InstanceAgent::Plugins::CodeDeployPlugin::CommandPoller: Error during perform: 
InstanceAgent::Plugins::CodeDeployPlugin::ScriptError - 
Script does not exist at specified location: /opt/codedeploy-agent/deployment-root/432f58a2-27d7-46c0-8091-1625eb8733af/d-Q3DGM6LPU/deployment-archive/scripts/install_dependencies.sh - 
/opt/codedeploy-agent/lib/instance_agent/plugins/codedeploy/hook_executor.rb:118:in `block (2 levels) in execute'...

我的 appspec.yml 文件如下所示:

version: 0.0
os: linux
files:
  - source: /
    destination: /home/ec2-user/myApp
hooks:
  AfterInstall:
    - location: scripts/install_dependencies.sh
      timeout: 300
      runas: root
  ApplicationStop:
    - location: scripts/stop_server.sh
      timeout: 300
      runas: root
  ApplicationStart:
    - location: scripts/start_server.sh
      timeout: 300
      runas: root

为了在部署尝试失败后访问部署存档文件夹,我确实在正确的路径中获取文件(与错误日志中出现的路径相同):

[ec2-user@ip-172-31-10-87 scripts]$ cd  /opt/codedeploy-agent/deployment-root/432f58a2-27d7-46c0-8091-1625eb8733af/d-Q3DGM6LPU/deployment-archive/scripts/
[ec2-user@ip-172-31-10-87 scripts]$ ls -ln
total 12
-rwxrwxrwx 1 0 0 261 Aug 21 13:33 install_dependecies.sh
-rwxrwxrwx 1 0 0  69 Aug 21 13:33 start_server.sh
-rwxrwxrwx 1 0 0  56 Aug 21 13:33 stop_server.sh

我的 EC2 实例操作系统是-

[ec2-user@ip-172-31-10-87 ~]$ cat /etc/issue
Amazon Linux AMI release 2018.03
[ec2-user@ip-172-31-10-87 ~]$ uname -a
Linux ip-172-31-10-87 4.14.62-65.117.amzn1.x86_64 #1 SMP Fri Aug 10 20:03:52 
UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

我已经检查了执行权限,并且我的脚本文件的内容是空的(只有“exit 0”语句),以帮助沙箱问题。

据我在所有示例中看到的 - 脚本文件夹应该在我的部署包中,而不是在我的部署之外。

我的 appspec.yml 在我的项目的根文件夹中,我的脚本文件夹也是如此。

  • 如果我从我的 appspec 中消除 AfterInstall/BeforeInstall 挂钩,则不会发生问题。

我错过了什么?为什么在 AfterInstall/BeforeInstall 挂钩期间无法访问这些文件?

请帮忙,谢谢

4

0 回答 0