web-dev-qa-db-ja.com

cygwinで動作するようにAWSコマンドラインインターフェイスを取得する方法

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という名前の新しいファイルを作成したことです。このファイルには、そのディレクトリのファイルconfigcredentialsの内容が統合されています。次に、AWS_CONFIG_FILEという名前の新しいWindowsシステム環境変数を作成しました。この変数の値はconfig_credentialsへのパスです。成功:cygwinから発行されたAWS CLIコマンドが機能するようになりました。

より良い解決策があるのだろうか?

AWS CLIがconfigおよびcredentialsファイルの正しいホームディレクトリで最初に検索に失敗した理由を知りたいです。また、それを修正する方法があるのだろうか(これはAWS_CONFIG_FILE env varの必要性を排除するだろう)。

20
HaroldFinch

同じ問題がありました。 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」を実行できるようになり、すべてが正常に機能するようになりました。

31
Craig Heath

これに多くの時間を費やした後、私は機能する解決策を見つけました。

主な問題は、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

  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_
  6. _python get-pip.py_
  7. _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では、次のコマンドを実行してこれらの行末を削除します。

  1. _apt-cyg install dos2unix_
  2. _dos2unix setup_p2.sh_
  3. _dos2unix setup_instance.sh_
  4. そして最後に、_bash setup_p2.sh_

これでうまくいくはずです。

7
Ryan Chase

DOS cmdウィンドウからaws configureを使用してcfgファイル(configおよびcredentials)を作成し、サンプルのaws cmd(DOSウィンドウ)でテストしました。次に、Users\.awsフォルダーをコピーして、cygwinがユーザーのホームフォルダー(私の場合はc:\ cygwin64\home \)であると考える場所を見つけました。次に、TextPadを使用して行末を変換しました(file> save-asを使用し、UNIXの行末を選択します。ファイルの名前がx.txtに変更されないようにしてください)。今では動作します。

1
Tom Murphy

私の場合、私は:

# 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のインストールは実行されませんでした。残念ながら、エラーメッセージは保存しませんでした。

0
rio197