Windows 7ボックスにAWSコマンドラインインターフェイスをインストールしましたが、DOSシェルからコマンドを呼び出すとすぐに機能しました。
しかし、これまでに発明された中で最悪の言語であるDOSは、本格的なスクリプト作成には恐ろしいものです。したがって、cygwin経由でbashからAWS CLIを使用したいと思います。
私の場合、インストールされているAWS CLIはWindowsバージョンです。原則として、Windowsコマンドはcygwinから実行可能であるため、これは問題になりません。 ( cygwinにはWindows環境変数が含まれます (独自の環境での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
にあり、unixでは~/.aws
にあると想定されています。
回避策の1つは、ホームディレクトリにconfig_credentials
という名前の新しいファイルを作成したことです。このファイルには、そのディレクトリのファイルconfig
とcredentials
の内容が統合されています。次に、AWS_CONFIG_FILE
という名前の新しいWindowsシステム環境変数を作成しました。この変数の値はconfig_credentials
へのパスです。成功:cygwinから発行されたAWS CLIコマンドが機能するようになりました。
より良い解決策があるのだろうか?
AWS CLIがconfig
および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内からwhich pythonを実行することで検証できます-pythonが保存されている場所が見つかりませんでした。 pip install awscliを実行してもエラーメッセージがスローされない可能性があるため、これは混乱を招く可能性があることに注意してください。 Cygwinは、実際にWindowのAnacondaのPythonのインストールにawscliをインストールします(conda install awscliを実行しなかったため、これは奇妙に感じます)。
ただし、cygwinがマシンにインストール済みのAnaconda pythonのバージョンを指すようにするのではなく、pythonのcygwin固有のインスタンスをインストールするだけで多くの頭痛の種を節約できます。そうするためのステップはここに文書化されています: 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バージョン(/users/.../Anaconda2/ではなく/ usr/bin/python)を指す場合、すべてが機能していることを確認できます。
さらに、fast.aiコースのセットアップビデオ( http://course.fast.ai/lessons/aws.html )を見ることに関連してこれを尋ねている場合は、次のstepは[〜#〜] critical [〜#〜]Windowsユーザーの場合:ダウンロードするときGithubセットアップフォルダーのすべてのシェルスクリプト( https://github.com/fastai/courses/tree/master/setup )、Windowsは自動的にCRLF行ターミネーターを追加します!したがって、cygwinでは、次のコマンドを実行してこれらの行末を削除します。
apt-cyg install dos2unix
_dos2unix setup_p2.sh
_dos2unix setup_instance.sh
_bash setup_p2.sh
_これでうまくいくはずです。
DOS cmdウィンドウからaws configureを使用してcfgファイル(configおよびcredentials)を作成し、サンプルのaws cmd(DOSウィンドウ)でテストしました。次に、Users\.awsフォルダーをコピーして、cygwinがユーザーのホームフォルダー(私の場合はc:\ cygwin64\home \)であると考える場所を見つけました。次に、TextPadを使用して行末を変換しました(file> save-asを使用し、UNIXの行末を選択します。ファイルの名前がx.txtに変更されないようにしてください)。今では動作します。
私の場合、私は:
# Run Cygwin64 Terminal by right-clicking on the icon and selecting "Run as Administrator"
pip3.7 install awscli
aws configure
AWS認証情報を設定したら、Cygwinでawscliコマンドを実行できます。Cygwinは、後者が正常に起動した場所、つまり管理者以外のユーザーとして実行できます。
以前に同じ手順を試みましたが、Cygwinを非管理者として起動したため、pipを介したawscliのインストールは実行されませんでした。残念ながら、エラーメッセージは保存しませんでした。