AWS CodeDeploy AfterInstall脚本正在从代码部署代理目录运行

我试图在AWS代码部署中运行AfterInstall脚本,但是它正在从/ opt / codedeploy-agent / dir而不是我的app目录运行。

这是appspec.yml文件的样子:

version: 0.0 os: linux files: - source: / destination: /tmp/epub hooks: AfterInstall: - location: server/install-packages.sh runas: root 

你可以看到这是一个基本的例子。

现在,bash脚本如下所示:

 #!/bin/bash npm install 

我只是想安装npm,就是这样。

不幸的是我得到的错误:

 LifecycleEvent - AfterInstall Script - server/install-packages.sh [stderr]npm ERR! install Couldn't read dependencies [stderr]npm ERR! Linux 3.13.0-48-generic [stderr]npm ERR! argv "/usr/bin/nodejs" "/usr/bin/npm" "install" [stderr]npm ERR! node v4.2.1 [stderr]npm ERR! npm v2.14.7 [stderr]npm ERR! path /opt/codedeploy-agent/package.json [stderr]npm ERR! code ENOPACKAGEJSON [stderr]npm ERR! errno -2 [stderr]npm ERR! syscall open [stderr] [stderr]npm ERR! package.json ENOENT: no such file or directory, open '/opt/codedeploy-agent/package.json' [stderr]npm ERR! package.json This is most likely not a problem with npm itself. [stderr]npm ERR! package.json npm can't find a package.json file in your current directory. [stderr] [stderr]npm ERR! Please include the following file with any support request: [stderr]npm ERR! /opt/codedeploy-agent/npm-debug.log 

我正在尝试不同的appspec.ymlconfiguration,如添加runas或在位置path的开头添加“/”。 一直试图从/ opt / codedeoploy-agent /目录运行。

无奈之下,我已经设定了脚本的绝对path,但是我得到了:

 Script does not exist at specified location: /tmp/epub/server/install-packages.sh 

这真的很烦人,因为我根据文档做所有事情,但可能我错过了非常非常小的东西!

谢谢

好,

所以我发现codedeoloy-agent在deploy实例上的代理创build的临时目录中运行AfterInstall(可能是所有其他的步骤),所以在我的情况下,我不得不通过cd-ing来修改bash脚本正确的目录:

 #!/bin/bash cd /tmp/epub/server/ npm install