如何让AWS命令行界面在cygwin中工作

我在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的新文件,其中包含该目录的文件configcredentials的内容的联合。 然后,我创build了一个新的名为AWS_CONFIG_FILE的Windows System env var,其值是config_credentials的path。 成功:从cygwin发布的AWS CLI命令现在可用。

我想知道是否有更好的解决scheme?

我很好奇为什么AWS CLI最初无法在正确的主目录中searchconfigcredentials文件。 我也想知道是否有一种方法来纠正(这将消除对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 )

  1. pip uninstall awscli
  2. wget rawgit.com/transcode-open/apt-cyg/master/apt-cyg
  3. install apt-cyg /bin
  4. apt-cyg install python
  5. 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中,运行以下命令来删除这些行尾:

  1. apt-cyg install dos2unix
  2. dos2unix setup_p2.sh
  3. dos2unix setup_instance.sh
  4. 最后, 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)。 现在起作用了。