2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【#awscli】管理者権限を持たないWindows環境に「AWSコマンドラインインターフェイス(AWS CLI v2)」をインストールする #AWS #awscliv2 #jawsug #環境構築 #環境設定

Last updated at Posted at 2020-03-20

AWS CLI v2では「Pythonがなくてもインストールできるようになった!」というのがウリなのですが、 相変わらずWindows MSI インストーラ形式で提供されているので管理者権限を持たないWindows端末にインストールすることができません。

というわけで管理者権限を持たないWindows端末に「AWSコマンドラインインターフェイス(AWS CLI v2)」をインストールした際の内容を自分用のメモとしてまとめました。

環境情報

OS/ソフトウェア バージョン 入手元
Windows 10 pro バージョン1903(May 2019) Microsoft Corporation
Python3 3.8.2 https://www.python.org/downloads/windows/
pip 20.0.2
botocore 2.0.0dev6 https://github.com/boto/botocore/archive/v2.tar.gz
aws-cli 2.0.2 https://github.com/aws/aws-cli/archive/v2.tar.gz

1. Python3 のインストール

まず「Python3」をインストールします。

□手順 1-1: 公式URLからPythonのexecutable installerをダウンロードします

■URL
https://www.python.org/downloads/windows/

■ファイル名
python-3.8.2-amd64.exe

□手順 1-2: ダウンロードしたexecutable installerを実行します

□手順 1-3: Add Python 3.8 to PATHチェックボックスにチェックを入れた後Customize installationをクリックします

[ ] Install launcher for all users(recommended)
[✔] Add Python 3.8 to PATH
capture_004_08032020_111112.jpg

□手順 1-4: 次の Optional Features にチェックを入れてNextボタンをクリックします

[✔] Documentaion
[✔] pip
[✔] tcl/tk and IDLE
[✔] py launcher
[ ] for for all users(requires elevation)
capture_005_08032020_111127.jpg

□手順 1-5: 次の Advanced Options にチェックを入れてInstallボタンをクリックします

[ ] Install for all users
[ ] Associate files with Python (requires the py launcher)
[✔] Create shortcuts for installed applications
[✔] Add Python to environment variables
[✔] Precompile standard library
[ ] Download debugging symbols
[ ] Download debug binaries (requires VS 2015 or later)

7c0e1a4c-07d5-abc5-8792-64530fba6d48.jpeg

□手順 1-6: Closeボタンをクリックしexecutable installerを終了します

capture_005_23072019_013724.jpg

□手順 1-7: スタートメニューからPowershellを起動し次のコマンドを実行、Pythonがインストールされて、パスが通っていることを確認します

PS C:\> & python --version
Ptyhon 3.8.2

2. botocore と aws-cli のインストール

AWS CLI v1 の時は、Python3 インストール後は pip で比較的に簡単にインストールできたのですが、
v2 になってから意図的に PyPI 上にも公開しないことになったようで、少し工夫が必要です。
https://github.com/aws/aws-cli/issues/4947

Not publishing CLI v2 to PyPI has been a conscious decision
and for the time being we have no plans to publish to PyPI.
In the long term we want the fact that the AWS CLI is written
in Python to be more of an implementation detail than a feature.

□手順 2-1: まず pipを最新バージョンにアップグレードします

PS C:\> & easy_install.exe -U pip

□手順 2-2: 次にpipを使ってGitHubレポジトリ上からbotocoreをインストールします

PS C:\> & pip install --trusted-host pypi.org --trusted-host files.pythonhosted.org --trusted-host github.com --trusted-host codeload.github.com https://github.com/boto/botocore/archive/v2.tar.gz

Collecting https://github.com/boto/botocore/archive/v2.tar.gz
  Downloading https://github.com/boto/botocore/archive/v2.tar.gz
     | 5.1 MB 43 kB/s
Collecting jmespath<1.0.0,>=0.7.1
  Downloading jmespath-0.9.5-py2.py3-none-any.whl (24 kB)
Collecting docutils<0.16,>=0.10
  Downloading docutils-0.15.2-py3-none-any.whl (547 kB)
     |████████████████████████████████| 547 kB 6.8 MB/s
Collecting python-dateutil<3.0.0,>=2.1
  Downloading python_dateutil-2.8.1-py2.py3-none-any.whl (227 kB)
     |████████████████████████████████| 227 kB 6.4 MB/s
Collecting urllib3<1.26,>=1.20
  Downloading urllib3-1.25.8-py2.py3-none-any.whl (125 kB)
     |████████████████████████████████| 125 kB 6.4 MB/s
Collecting six>=1.5
  Downloading six-1.14.0-py2.py3-none-any.whl (10 kB)
Installing collected packages: jmespath, docutils, six, python-dateutil, urllib3, botocore
    Running setup.py install for botocore ... done
Successfully installed botocore-2.0.0.dev6 docutils-0.15.2 jmespath-0.9.5 python-dateutil-2.8.1 six-1.14.0 urllib3-1.25.8

####試した環境ではプロキシの影響で--trusted-hostオプションを付与せずに実行すると次のエラーメッセージが出力されてしまいました

PS C:\> & pip install https://github.com/boto/botocore/archive/v2.tar.gz

Collecting https://github.com/boto/botocore/archive/v2.tar.gz
  WARNING: Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self signed certificate in certificate chain (_ssl.c:1108)'))': /boto/botocore/archive/v2.tar.gz
  WARNING: Retrying (Retry(total=3, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self signed certificate in certificate chain (_ssl.c:1108)'))': /boto/botocore/archive/v2.tar.gz
  WARNING: Retrying (Retry(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self signed certificate in certificate chain (_ssl.c:1108)'))': /boto/botocore/archive/v2.tar.gz
  WARNING: Retrying (Retry(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self signed certificate in certificate chain (_ssl.c:1108)'))': /boto/botocore/archive/v2.tar.gz
  WARNING: Retrying (Retry(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self signed certificate in certificate chain (_ssl.c:1108)'))': /boto/botocore/archive/v2.tar.gz
ERROR: Could not install packages due to an EnvironmentError: HTTPSConnectionPool(host='github.com', port=443): Max retries exceeded with url: /boto/botocore/archive/v2.tar.gz (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self signed certificate in certificate chain (_ssl.c:1108)')))

□手順 2-3: 次にaws-cliをGitHubレポジトリからインストールします

PS C:\> & pip install --trusted-host pypi.org --trusted-host files.pythonhosted.org --trusted-host github.com --trusted-host codeload.github.com https://github.com/aws/aws-cli/archive/v2.tar.gz

Collecting https://github.com/aws/aws-cli/archive/v2.tar.gz
  Downloading https://github.com/aws/aws-cli/archive/v2.tar.gz
     - 3.0 MB 15 kB/s
Requirement already satisfied: botocore==2.0.0dev6 in c:\users\kukita\appdata\local\programs\python\python38\lib\site-packages (from awscli==2.0.2) (2.0.0.dev6)
Collecting colorama<0.4.4,>=0.2.5
  Downloading colorama-0.4.3-py2.py3-none-any.whl (15 kB)
Requirement already satisfied: docutils<0.16,>=0.10 in c:\users\kukita\appdata\local\programs\python\python38\lib\site-packages (from awscli==2.0.2) (0.15.2)
Collecting cryptography<=2.9.0,>=2.8.0
  Downloading cryptography-2.8-cp38-cp38-win_amd64.whl (1.5 MB)
     |████████████████████████████████| 1.5 MB 3.2 MB/s
Collecting s3transfer<0.4.0,>=0.3.0
  Downloading s3transfer-0.3.3-py2.py3-none-any.whl (69 kB)
     |████████████████████████████████| 69 kB 4.5 MB/s
Collecting ruamel.yaml<0.16.0,>=0.15.0
  Downloading ruamel.yaml-0.15.100.tar.gz (318 kB)
     |████████████████████████████████| 318 kB 6.4 MB/s
Collecting prompt-toolkit<3.0.0,>=2.0.0
  Downloading prompt_toolkit-2.0.10-py3-none-any.whl (340 kB)
     |████████████████████████████████| 340 kB 6.4 MB/s
Requirement already satisfied: jmespath<1.0.0,>=0.7.1 in c:\users\kukita\appdata\local\programs\python\python38\lib\site-packages (from botocore==2.0.0dev6->awscli==2.0.2) (0.9.5)
Requirement already satisfied: python-dateutil<3.0.0,>=2.1 in c:\users\kukita\appdata\local\programs\python\python38\lib\site-packages (from botocore==2.0.0dev6->awscli==2.0.2) (2.8.1)
Requirement already satisfied: urllib3<1.26,>=1.20 in c:\users\kukita\appdata\local\programs\python\python38\lib\site-packages (from botocore==2.0.0dev6->awscli==2.0.2) (1.25.8)
Requirement already satisfied: six>=1.4.1 in c:\users\kukita\appdata\local\programs\python\python38\lib\site-packages (from cryptography<=2.9.0,>=2.8.0->awscli==2.0.2) (1.14.0)
Collecting cffi!=1.11.3,>=1.8
  Downloading cffi-1.14.0-cp38-cp38-win_amd64.whl (177 kB)
     |████████████████████████████████| 177 kB 6.8 MB/s
Collecting wcwidth
  Downloading wcwidth-0.1.8-py2.py3-none-any.whl (17 kB)
Collecting pycparser
  Downloading pycparser-2.20-py2.py3-none-any.whl (112 kB)
     |████████████████████████████████| 112 kB 3.2 MB/s
Installing collected packages: colorama, pycparser, cffi, cryptography, s3transfer, ruamel.yaml, wcwidth, prompt-toolkit, awscli
    Running setup.py install for ruamel.yaml ... done
    Running setup.py install for awscli ... done
Successfully installed awscli-2.0.2 cffi-1.14.0 colorama-0.4.3 cryptography-2.8 prompt-toolkit-2.0.10 pycparser-2.20 ruamel.yaml-0.15.100 s3transfer-0.3.3 wcwidth-0.1.8

□手順 2-4: aws --versionコマンドを実行し正常にインストールされていることを確認できれば完了です

PS C:\> & aws --version

拡張子 .py のファイルの関連付けが見つかりません
aws-cli/2.0.2 Python/3.8.2 Windows/10 botocore/2.0.0dev6

おまけ:拡張子 .py のファイルの関連付けが見つかりませんという警告メッセージへの対応

管理者権限を有しているアカウントで下記コマンドを実行してもらうことができれば解決できるはずです。。。

PS C:\> & assoc .py=Python.File
PS C:\> & ftype Python.File="%USERPROFILE%\AppData\Local\Programs\Python\Python37\python.exe" "%1" %*

おまけ(その2): 「AWS CLI v2」実行時のMFA(Multi-Factor Authentication:多要素認証)の有効化

「AWS CLI」を使用するためにはアクセスキー(アクセスキーIDとシークレットキーのキーペア)が必要になるのですが、このアクセスキーが漏洩すると怖いことが起こるので、ちゃんとMFA(Multi-Factor Authentication:多要素認証)を有効にしましょう ↓

【#awscli】あらかじめ指定した接続元IPアドレス以外からの「AWS CLI v2」実行時はMFA(ワンタイムパスワードでの認証)が必要になるようIAMを設定する #AWS #awscliv2 #jawsug #環境構築 #環境設定
https://qiita.com/kukita/items/1a4f9c35a956eb37003d


以上、管理者権限を持たないWindows端末に「AWSコマンドラインインターフェイス(AWS CLI v2)」をインストールする手順でした。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?