【发布时间】:2018-06-04 12:14:11
【问题描述】:
我正在使用 CodeDeploy 将我的应用程序部署到由 Auto Scaling 组创建的 EC2 实例。
应用程序部署良好并被移动到正确的文件映射位置,但是我的AfterInstallation 脚本从未执行。我可以在日志中看到它试图使脚本可执行并通过该阶段,但它从未被执行。
这是我的 appspec.yml
version: 0.0
os: linux
files:
- source: /
destination: /opt/lobby
hooks:
AfterInstall:
- location: bootstrap.sh
timeout: 30
runas: root
这是脚本
#!/bin/bash
nohup nodejs lobby.js &
echo "finished"
我没有看到打印的回声,也没有看到任何与 lobby.js 相关的进程正在运行。我可以通过在部署后键入 ./bootstrap.sh 来验证此脚本是否有效,并且可以正常工作。不过这个钩子应该为我做这个。
这需要是一项后台任务,因为我将在此脚本中运行多个应用程序,但现在只显示一个以使其正常工作。
编辑:
我参考了http://docs.aws.amazon.com/codedeploy/latest/userguide/reference-appspec-file-structure-hooks.html#appspec-hooks-server 并尝试将 AfterInstall 替换为 ValidateService 和 AfterAllowTraffic(但我没有使用 LoadBalancer)
问题
为什么我的 AfterInstallation 脚本没有被调用,或者看起来是这样?
【问题讨论】:
-
您确定该文件与 appspec.yml 位于同一文件夹中吗?如果是这样,请尝试位置:./bootstrap.sh
-
是的,经过一番挖掘,我发现了这个问题。执行日志中抛出了一些错误,然后我不得不将后台进程的输出重定向到 /dev/null 或部署失败。
标签: amazon-web-services amazon-ec2 aws-code-deploy