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

时间:2018-07-26 11:43:22

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

我刚刚开始使用AWS。我正在尝试使用codeship和AWS Codedeploy部署Node.js应用程序。我成功地将应用程序从代码船部署到Ec2实例。但是问题是我无法在appspec.yml中运行钩子文件。我的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。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

问题是您将文件移动到/home/ec2-user/node-project,这是在app-start.sh生命周期钩子上运行ApplicationStart之前发生的。您需要先cd进入正确的目录,然后再运行npm install

更新的ApplicationStart脚本:

#!/bin/bash
cd /home/ec2-user/node-project
npm install
# You'll need to start your application too.
npm start

顺便说一句,您可能想使用AfterInstall生命周期挂钩来运行npm install只是出于组织目的,但是在功能上没有什么不同。