Amazon web services 为什么赢了';部署后,我的AWS CodeDeploy是否运行我的脚本?

Amazon web services 为什么赢了';部署后,我的AWS CodeDeploy是否运行我的脚本?,amazon-web-services,amazon-ec2,aws-code-deploy,Amazon Web Services,Amazon Ec2,Aws Code Deploy,我使用CodeDeploy将我的应用程序部署到由自动伸缩组创建的EC2实例 应用程序部署良好,并被移动到正确的文件映射位置,但我的安装后脚本从未执行。我可以在日志中看到,它试图使脚本可执行并通过该阶段,但它从未执行 这是我的appspec.yml version: 0.0 os: linux files: - source: / destination: /opt/lobby hooks: AfterInstall: - location: bootstrap.sh

我使用CodeDeploy将我的应用程序部署到由自动伸缩组创建的EC2实例

应用程序部署良好,并被移动到正确的文件映射位置,但我的
安装后
脚本从未执行。我可以在日志中看到,它试图使脚本可执行并通过该阶段,但它从未执行

这是我的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"
我没有看到打印的echo,也没有看到任何与lobby.js相关的进程正在运行。我可以通过在部署后键入./bootstrap.sh来验证该脚本是否有效,并且该脚本工作正常。这个钩子应该可以帮我

这需要是一个后台任务,因为我将在这个脚本中运行多个应用程序,但现在只显示一个,以使其正常工作


编辑:

我已经参考并尝试用ValidateService和AfterAllowTraffic替换AfterInstall(但我没有使用负载平衡器)

问题


为什么我的后安装脚本没有被调用,或者看起来是这样?

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

安装前脚本示例:

#!/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 &
#/bin/bash
cd/home/ubuntu/production/weone后端
sudochown-rbuntu:ubuntu/home/ubuntu/production
sudo NODE_ENV=production nohup nodejs app.js>/dev/null 2>/dev/null
在上面的脚本中,我们正在更改应用程序文件夹的所有权 &启动应用程序进程

注意:使用“
/dev/null 2>/dev/null
”自动退出nohup shell,否则您的CodeDeploy将在后安装事件中卡住


您确定该文件与appspec.yml位于同一文件夹中吗?如果是这样,请尝试位置:./bootstrap.shYeah,我经过一番挖掘后发现了问题。执行日志中抛出了一些错误,然后我不得不将后台进程的输出重定向到/dev/null,否则部署将失败。