El script AfterInstall de AWS CodeDeploy se ejecuta desde el directorio de agente de despliegue

Estoy intentando ejecutar el script AfterInstall en el despliegue de código de AWS, pero se ejecuta desde el directorio / opt / codedeploy-agent / dir en lugar de mi directorio de aplicaciones.

Así es como se ve el archivo appspec.yml:

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

Como puedes ver es un ejemplo básico.

Ahora, el script de bash se ve así:

 #!/bin/bash npm install 

Sólo quiero instalar npm y eso es todo.

Desafortunadamente me sale el error:

 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 

Estaba intentando diferentes configuraciones de appspec.yml como agregar runas o agregar “/” al comienzo de la ruta de ubicación. Todo el tiempo intenta ejecutarse desde el directorio / opt / codedeoploy-agent /.

Desesperado, he establecido una ruta absoluta al script, pero luego obtuve:

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

Es realmente molesto porque estoy haciendo todo de acuerdo con los documentos, ¡pero probablemente me esté perdiendo algo muy, muy pequeño!

Gracias

De acuerdo,

Así que me he enterado de que codedeoloy-agent está ejecutando AfterInstall (y probablemente todos los demás pasos) desde el directorio temporal creado por el agente en la instancia de implementación, por lo que en mi caso tuve que modificar el script bash cding a el directorio apropiado:

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