为什么我的AWS CodeDeploy在部署后不会运行我的脚本?

时间:2017-12-21 19:14:12

标签: amazon-web-services amazon-ec2 aws-code-deploy

我正在使用CodeDeploy将我的应用程序部署到由Auto Scaling Group创建的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并试图用ValidateService和AfterAllowTraffic替换AfterInstall(但我没有使用LoadBalancer)

问题

为什么我的AfterInstallation脚本没有被调用,或者看起来好像?

1 个答案:

答案 0 :(得分:0)

AfterInstall:AfterInstall脚本包含安装应用程序后需要执行的任务。

BeforeInstall脚本示例:

#!/bin/bash
cd /home/ubuntu/production/weone-backend
sudo chown -R ubuntu:ubuntu /home/ubuntu/production
sudo NODE_ENV=production nohup nodejs app.js > /dev/null 2> /dev/null < /dev/null &

在上面的脚本中,我们正在更改应用程序文件夹的所有权 &安培;开始申请程序。

注意:使用“/dev/null 2> /dev/null < /dev/null &”自动退出nohup shell,否则CodeDeploy将停留在AfterInstall事件中。

https://www.oodlestechnologies.com/blogs/AWS-CodeDeploy