我在Windows 7上安装了AWS命令行界面,当我从DOS shell调用命令时,它立即生效。
但是,DOS是有史以来最糟糕的语言,对于任何严重的脚本来说都是可怕的。 所以,我想通过cygwin从bash使用AWS CLI。
就我而言,安装的AWS CLI是Windows版本。 原则上,这不应该是一个问题,因为Windows命令可以从cygwin中执行。 ( cygwin在自己的环境中包含你的Windows环境variables ,比如PATH)。
不幸的是,当我第一次尝试从cygwin / bash执行AWS CLI命令时,出现错误:
$ aws s3 cp code.tgz s3://xyz/ upload failed: .\code.tgz to s3://xyz/code.tgz Unable to locate credentials
此错误很可能是因为AWS CLI正在查看credentials
文件的错误目录。 在Windows上,它希望该文件位于%UserProfile%.aws
并且位于~/.aws
中的unix中。
一个解决方法是,在我的主目录中,我创build了一个名为config_credentials
的新文件,其中包含该目录的文件config
和credentials
的内容的联合。 然后,我创build了一个新的名为AWS_CONFIG_FILE
的Windows System env var,其值是config_credentials
的path。 成功:从cygwin发布的AWS CLI命令现在可用。
我想知道是否有更好的解决scheme?
我很好奇为什么AWS CLI最初无法在正确的主目录中searchconfig
和credentials
文件。 我也想知道是否有一种方法来纠正(这将消除对AWS_CONFIG_FILE
env var的需求)。
我有同样的问题。 我通过在Cygwin中安装AWSCLI的新副本来解决这个问题。 你首先需要安装“curl”和“python”Cygwin包,然后你可以安装AWSCLI,如下所示:
$ curl -O https://bootstrap.pypa.io/get-pip.py $ python get-pip.py $ pip install awscli
如果您正在运行bash,并且以前执行过Windows AWS命令行,则需要按照以下步骤清除缓存的路径:
$ hash -d aws
“aws –version”会看起来类似于这个:
aws-cli/1.8.1 Python/2.7.10 CYGWIN_NT-10.0/2.2.1(0.289/5/3)
而不是Windows命令行输出,这看起来类似于:
aws-cli/1.8.1 Python/2.7.9 Windows/8
我现在可以在Cygwin下执行“aws configure”,一切正常。
在花了很多时间之后,我发现了一个可行的解决方案。
主要的问题是,cygwin没有安装python,也不知道在哪里可以找到你机器上现有的Windows Anaconda版本。 这可以通过在cygwin中运行哪个python来验证 – 它无法找到python的保存位置。 请注意,这可能会令人困惑,因为运行pip install awscli可能不会引发错误消息。 Cygwin实际上是在Windows的Anaconda安装中安装awscli(我觉得这很奇怪,因为我们没有运行conda install awscli)。
但是,而不是尝试将cygwin指向已经安装的版本的Anaconda python在你的机器上,它会为你节省大量的头痛,只是安装一个特定于cygwin的python实例。 这样做的步骤记录在这里: http : //wiki.fast.ai/index.php/Awscli_in_cygwin )
pip uninstall awscli
wget rawgit.com/transcode-open/apt-cyg/master/apt-cyg
install apt-cyg /bin
apt-cyg install python
wget https://bootstrap.pypa.io/get-pip.py
python get-pip.py
pip install awscli
…但是,请注意,第一个命令pip uninstall awscli
“挂断”为我。 所以只需使用quit()
它并按顺序继续。
你可以检查一切工作,如果你在cygwin中运行which python
,它指向cygin版本(即/ usr / bin / python,而不是:/users/…/Anaconda2/)。
此外,如果您恰好在查看fast.ai课程的设置视频时( http://course.fast.ai/lessons/aws.html ),则下一步对于Windows用户来说是CRITICAL :当您从Github安装文件夹( https://github.com/fastai/courses/tree/master/setup )下载所有shell脚本时,Windows会自动添加CRLF行结束符! 因此,在cygwin中,运行以下命令来删除这些行尾:
apt-cyg install dos2unix
dos2unix setup_p2.sh
dos2unix setup_instance.sh
bash setup_p2.sh
这应该做的伎俩。
我使用DOS cmd窗口中的aws配置来创建cfg文件(config和credentials),并用样例aws cmd(在DOS窗口中)对它们进行测试。 然后,我复制Users \ .aws文件夹,以发现cygwin认为用户主文件夹(在我的情况下是c:\ cygwin64 \ home \)。 然后,我使用TextPad来转换行结束符(使用file> save-as;选择unix行尾;确保文件不会被重命名为x.txt)。 现在起作用了。