Amazon web services AWS CodeDeploy问题:无法在appspec文件中运行挂钩

Amazon web services AWS CodeDeploy问题:无法在appspec文件中运行挂钩,amazon-web-services,amazon-ec2,deployment,aws-code-deploy,codeship,Amazon Web Services,Amazon Ec2,Deployment,Aws Code Deploy,Codeship,我刚刚开始与AWS合作。我正在尝试使用codeship和AWS codedeploy部署nodejs应用程序。我成功地将应用程序从codeship部署到Ec2实例。但问题是我无法运行appspec.yml中的hooks文件。我的appspec.yml如下所示: --- version: 0.0 os: linux files: - destination: /home/ec2-user/node-project source: / hooks: ApplicationStar

我刚刚开始与AWS合作。我正在尝试使用codeship和AWS codedeploy部署nodejs应用程序。我成功地将应用程序从codeship部署到Ec2实例。但问题是我无法运行appspec.yml中的hooks文件。我的appspec.yml如下所示:

--- 
version: 0.0
os: linux
files: 
  - destination: /home/ec2-user/node-project
    source: /
hooks:  
ApplicationStart: 
  - location: bin/app-start.sh
    runas: root
    timeout: 100   
在app-start.sh中,我有:

#!/bin/bash
npm install
app-start.sh从不工作,也从未安装节点模块。我还尝试在代码部署的日志路径/var/log/aws/codedeploy agent/codedeploy-agent.log中进行调试,但没有出现错误和警告。我还尝试了多种方法,但都没有效果


该项目已成功安装在Ec2实例中,但appspec.yml从未启动app-start.sh。任何帮助都将不胜感激。

问题是您正在将文件移动到/home/ec2 user/node项目,这发生在您的app-start.sh在ApplicationStart生命周期挂钩上运行之前。在运行npm安装之前,您需要将cd放入正确的目录中

更新的应用程序启动脚本:


另一方面,您可能希望使用AfterInstall lifecycle钩子来运行npm install(仅用于组织目的),但它在功能上没有什么不同。

Codedeploy对部署状态有何说明?@Rodrigo在AWS管理控制台code deploy中说它成功了。
#!/bin/bash
cd /home/ec2-user/node-project
npm install
# You'll need to start your application too.
npm start