我有一个Node.js 应用程序,它使用CodeDeploy AWS 部署系统通过Codeship自动部署到 Amazon Web Service。
在部署过程中,我在appspec.yml中设置了要停止当前运行的 Web 应用程序。部署完成后,我希望再次启动 Web 应用程序。
os: linux
files:
- source: /
destination: /var/www/app2
hooks:
AfterInstall:
- location: bash_scripts/stop_forever.sh
runas: ec2-user
ApplicationStart:
- location: bash_scripts/start_forever.sh
runas: ec2-user
但是,我还不能在部署期间从 appspec.yml 文件中成功调用这些脚本中的任何一个。
我在 AWS 部署代理日志中看到的当前错误是
Error CodeScriptMissing
Script Name /var/scripts/stop_forever.sh
MessageScript does not exist at specified location: /var/scripts/stop_forever.sh
Log TailLifecycleEvent - ApplicationStop
这似乎指的是旧版本的 appspec.yml 文件,它试图在不同的位置运行这些脚本。即使我更改了已部署包中 appspec.yml 文件的内容,此错误消息在每次部署时都保持不变。
除了上面列出的 appspec.yml 文件之外,我还尝试进行以下更改:
- 没有列出每个钩子的runas参数
- 引用已部署目录中的脚本
- 引用部署目录之外的脚本
- 将版本参数初始设置为0.0
不幸的是,除了AWS 文档之外,关于 appspec.yml 故障排除的在线文档很少。
我做错了什么非常明显的事情?