简体   繁体   中英

AWS CodeDeploy Command Not Found

When trying to deploy a Node.js application I'm getting an error npm: command not found in my post_install.sh AfterInstall script. What's super strange is in my BeforeInstall script I run npm install -g pm2 and it works perfectly fine without any errors.

Both are being run as the ubuntu user. Why would this command work in one CodeDeploy script and fail in another?

Looks like I was able to solve this by adding the following to my script files.

export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"  # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"  # This loads nvm bash_completion

Hopefully this can help someone.

I got the same problem trying to invoke the aws cli in my shell script during the AfterInstall hook, in an ubuntu server with ubuntu user.

This is what happened when I executed my script manually sh ecr-login.sh :

# Works
$(aws ecr get-login --no-include-email --region sa-east-1)

# Works
$(/home/ubuntu/.local/bin/aws ecr get-login --no-include-email --region sa-east-1)

When CodeDeploy executed it:

# Not Work
$(aws ecr get-login --no-include-email --region sa-east-1)

# Works
$(/home/ubuntu/.local/bin/aws ecr get-login --no-include-email --region sa-east-1)

I got the same problem trying to invoke the aws cli in my shell script during the After Install hook, in an ubuntu20 server with ubuntu user.

I have checked inside /usr/bin/ folder on server yarn/pm2/node are running are not If not run below command root@ip-:/# ln -s /root/.nvm/versions/node/v16.17.0/bin/node /usr/bin/ root@ip-:/# ln -s /root/.nvm/versions/node/v16.17.0/bin/pm2 /usr/bin/ root@ip-:/# ln -s /root/.nvm/versions/node/v16.17.0/bin/yarn /usr/bin/

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM