AWS EC2启动配置用户数据 - 未找到命令

时间:2017-07-19 17:17:55

标签: node.js amazon-web-services amazon-ec2 user-data

对于AWS EC2(Amazon Linux)启动配置,我设置了一些userdata,其中包含一些命令序列,如下所示。

#!/bin/bash -exv \n", 
"#Execute Init resource\n", 
"whoami\n", 
"pwd\n", 
"npm -v\n",

在实例启动时,用户数据正在执行,并且像“whoami”这样的本机命令在cloud-init-output.log中提供了正确的输出,但它为npm命令提供了错误,并显示错误消息,如“找不到npm命令”。

但是,当我ssh到实例并尝试执行一些npm命令时,它工作正常。

有人可以指导我解决这个问题吗?

由于

2 个答案:

答案 0 :(得分:6)

用户数据以root执行。 npm root的路径可能不在PATH的{​​{1}}中。指定npm的完整路径,它应该有效。

ssh之所以有效,是因为npm中有PATH

答案 1 :(得分:0)

@ helloV的答案很好。感谢@helloV。 尽管如此,我试图在实例启动期间找到更多关于root用户的PATH问题,并且我发现我的AMI中的NVM(节点版本管理器)包的nvm.sh扩展了PATH以添加“npm”和“node”的路径。

这个nvm.sh是从.bash_profile - >触发的。 .bashrc中

有一点很清楚,在实例启动期间执行用户数据脚本之前,没有执行root用户的.bash_profile。所以我在我的用户数据脚本中提供了.bash_profile,现在用户数据脚本中的更多npm命令工作正常。

https://github.com/creationix/nvm/issues/381中找到nvm.sh的详细信息 感谢Ben Creasy。

希望这有帮助。