EC2用户数据未启动我的应用程序

时间:2019-05-16 08:53:29

标签: bash amazon-web-services shell amazon-ec2 user-data

我正在使用ec2实例的用户数据来启动我的自动伸缩实例并运行该应用程序。我正在运行节点js应用程序。

但是它不能正常工作。我已经调试并检查了实例云监视器的输出。所以说

pm2 command not found

经过大量研究和调查,我发现以root身份出现的命令路径不存在。

作为EC2用户数据,当它尝试运行时会找到路径 /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin

ssh作为ec2用户之后是

/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/ec2-user/.local/bin:/home/ec2-user/bin

sshsudo su后是

/root/.nvm/versions/node/v10.15.3/bin:/sbin:/bin:/usr/sbin:/usr/bin

它仅适用于最后一条路径。

那么在启动由用户数据提供的实例期间以root身份运行命令的方式或脚本是什么?

1 个答案:

答案 0 :(得分:0)

不建议所有使用用户数据启动应用程序的想法,因为根据AWS文档,他们不保证实例仅在成功执行用户数据后才会出现。即使用户数据失败,它也会启动您的实例。

对于您的问题,我假设您提供二进制的完整绝对路径,它将起作用。

  

/root/.nvm/versions/node/v10.15.3/bin/pm2

使用这种方法更好的解决方案,为应用程序启动创建服务文件,并使用systemd或service启动应用程序。