Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services aws ec2-运行用户数据时未找到aws命令_Amazon Web Services_Amazon S3_Amazon Ec2 - Fatal编程技术网

Amazon web services aws ec2-运行用户数据时未找到aws命令

Amazon web services aws ec2-运行用户数据时未找到aws命令,amazon-web-services,amazon-s3,amazon-ec2,Amazon Web Services,Amazon S3,Amazon Ec2,我的目标是启动一个实例,以便在启动时触发启动脚本以下载存储在AWS S3中的一些配置文件。因此,在启动脚本中,我设置S3存储桶详细信息,然后触发config.sh,aws S3 sync在其中进行实际下载。但是,aws命令不起作用-找不到要执行的命令 用户数据 启动EC2实例时,我有以下用户数据: #!/bin/bash # Set command from https://stackoverflow.com/a/34206311/919480 set -e -x export S3_PREFI

我的目标是启动一个实例,以便在启动时触发启动脚本以下载存储在AWS S3中的一些配置文件。因此,在启动脚本中,我设置S3存储桶详细信息,然后触发config.sh,aws S3 sync在其中进行实际下载。但是,aws命令不起作用-找不到要执行的命令

用户数据 启动EC2实例时,我有以下用户数据:

#!/bin/bash
# Set command from https://stackoverflow.com/a/34206311/919480
set -e -x
export S3_PREFIX='bucket-name/folder-name'
/home/ubuntu/app/sh/config.sh
AWS CLI与pip一起安装,如中所述

观察 我想,用户数据脚本是用root用户ID运行的。这就是为什么,在用户数据中我有/home/ubuntu/,因为$home没有解析成/home/ubuntu/。实际上,config.sh中的第一个命令是mkdir/home/ubuntu/csv,它创建了一个所有者为root的目录

那么,得出这样的结论是否正确:用户数据在根用户ID下运行

决议
我应该使用下载吗?

作为用户数据输入的脚本作为根用户执行,因此不要在脚本中使用sudo命令

见:


一种解决方案是将PATH env变量设置为包括AWS CLI,并在执行AWS CLI之前添加任何其他必需的路径。

作为用户数据输入的脚本将作为根用户执行,因此不要在脚本中使用sudo命令

见:

一种解决方案是将PATH env变量设置为包括AWS CLI,并在执行AWS CLI之前添加任何其他所需的路径。

解决方案 鉴于AWS CLI是在没有sudo pip的情况下安装的,因此该CLI不适用于root用户。因此,为了使用ubuntu用户运行,我使用了以下用户数据脚本:

#!/bin/bash
su ubuntu -c '$HOME/app/sh/config.sh default`
在config.sh中,参数default用于在调用CLI之前构建完整的S3URI。但是,尽管可以通过正常登录访问aws,但只有使用完整路径$HOME/.local/bin/aws时调用才成功。

解决方案 鉴于AWS CLI是在没有sudo pip的情况下安装的,因此该CLI不适用于root用户。因此,为了使用ubuntu用户运行,我使用了以下用户数据脚本:

#!/bin/bash
su ubuntu -c '$HOME/app/sh/config.sh default`

在config.sh中,参数default用于在调用CLI之前构建完整的S3URI。但是,尽管可以通过正常登录访问aws,但只有使用完整路径$HOME/.local/bin/aws调用才成功。

sudo在任何地方都不使用。将尝试路径选项。或者,只需通过完整路径参考aws,例如/usr/local/bin/aws s3 cp..@JohnRotenstein for me哪个aws显示/home/ubuntu/.local/bin/aws-可能是因为我没有安装sudo pip。因此,我尝试使用su ubuntu-就在脚本的开始,现在我看到了这个,\uuuu init\uuuuuuuupy[WARNING]:未处理的非多部分文本/x-not-multipart userdata:'b'su ubuntu-'…'还提供了完整路径/home/ubuntu/.local/bin/aws没有帮助,因为为root用户导入aws CLI驱动程序失败。因此,在任何地方都不会选择使用su-ubuntu-.sudo。将尝试路径选项。或者,只需通过完整路径参考aws,例如/usr/local/bin/aws s3 cp..@JohnRotenstein for me哪个aws显示/home/ubuntu/.local/bin/aws-可能是因为我没有安装sudo pip。因此,我尝试使用su ubuntu-就在脚本的开始,现在我看到了这个,\uuuu init\uuuuuuuupy[WARNING]:未处理的非多部分文本/x-not-multipart userdata:'b'su ubuntu-'…'还提供了完整路径/home/ubuntu/.local/bin/aws没有帮助,因为为root用户导入aws CLI驱动程序失败。因此,选择使用su-ubuntu-。您所说的AWS CLI与pip一起安装是什么意思?它不在用户数据脚本中。是否安装了它,然后创建了一个AMI,然后将该AMI用于这个新实例?还是在config.sh文件中?您始终可以尝试将sudo su-变为root用户,然后粘贴用户数据以查看其是否运行。@JohnRotenstein AWS CLI安装在AMI上。您所说的AWS CLI与pip一起安装是什么意思?它不在用户数据脚本中。是否安装了它,然后创建了一个AMI,然后将该AMI用于这个新实例?还是在config.sh文件中?您始终可以尝试将sudo su-变为root用户,然后粘贴用户数据以查看其是否运行。@JohnRotenstein AWS CLI安装在AMI上。存在相同的问题-在用户数据环境中找不到AWS s3。但我遇到了这样一个问题:如果在用户数据脚本中使用AWS API(包括AWS CLI),则在启动实例时必须使用实例配置文件。实例概要文件提供用户数据脚本发出API调用所需的适当AWS凭据。这可能有关系吗?有相同的问题-在用户数据环境中找不到aws s3。但我遇到了这样一个问题:如果在用户数据脚本中使用AWS API(包括AWS CLI),则在启动实例时必须使用实例配置文件。实例概要文件提供用户数据脚本发出API调用所需的适当AWS凭据。这有关系吗?