Cloud-init无法在用户数据中执行awscli命令

需要帮助来修复错误并使实例能够运行无问题的用户数据脚本。

问题: cloud-init无法执行awscli命令。 我已经提到了一个自定义脚本(它将出现在由我的AMI创build的实例上)作为用户数据的一部分运行。 自定义脚本在提及awscli命令的部分失败。

描述:我试图从某个AMI创build一个实例后立即实现应用程序内容的自动部署。 为此,我将自定义脚本放在实例上,并创build了AMI,作为未来实例的模板。 自定义脚本具有非常简单的部署和pipe理应用程序服务生命周期(app || web || start || stop || status)的逻辑。 当脚本执行aswcli命令从S3存储桶获取战争或静态内容时,问题即将到来。 它给出了以下错误:

从cloud-init-output.log中摘录片段:

Mar 12 04:06:06 ip-XXX cloud-init: Deploying Static Content XXX.zip at location /var/www/html Mar 12 04:06:06 ip-XXX cloud-init: /opt/deploy/deployment_V4.sh: line 94: aws: command not found =================== Mar 12 04:06:06 ip-XXX cloud-init: Deploying WAR XXX.war at location /opt/tomcat/webapps Mar 12 04:06:06 ip-XXX cloud-init: /opt/deploy/deployment_V4.sh: line 80: aws: command not found 

而如果我手动从实例运行相同的自定义部署脚本,它会毫无错误地部署内容。 另外,如果我在实例上手动运行“用户数据”脚本,则部署完成时不会出现任何错误。

片段:

 [root@ip-XXX]# cd /var/lib/cloud/instance/scripts/ [root@ip-XXX scripts]# ./part-001 HTTPD Service is Stopped TOMCAT Service is Stopped VERSION is V4 Deploying Static Content XXX.zip at location /var/www/html download: s3://<PATH>/XXX.zip to ../../../../../www/html/XXX.zip Web Deployment Successful VERSION is V4 Deploying WAR XXX.war at location /opt/tomcat/webapps download: s3://<PATH>/XXX.war to ../../../../../../opt/tomcat/webapps/XXX.war App Deployment Successful HTTPD Service is Started TOMCAT Service is Started 

用户数据:

 #!/bin/sh VERSION=V4 AD=/opt/deploy #Run auto-deployment script sh /opt/deploy/deployment_${VERSION}.sh stop sh /opt/deploy/deployment_${VERSION}.sh web sh /opt/deploy/deployment_${VERSION}.sh app sh /opt/deploy/deployment_${VERSION}.sh start 

注意:

1)OS是CentOS7_64Bit

2)实例在启动时被注册为s3启用angular色。

3)AWSCLI安装在实例上,是AMI的一部分。

 aws --version aws-cli/1.11.56 Python/2.7.5 Linux/3.10.0-514.6.2.el7.x86_64 botocore/1.5.19 

aws二进制文件在哪里?

 which aws 

我的猜测是aws所在的目录不在path中。

感谢@ Robo这个问题已经解决了。

根据他的指示,我已经添加了“export PATH =〜/ .local / bin:\ $ PATH”作为“用户数据”的一部分,这就是诀窍。