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
□手順 1-4: 次の Optional Features にチェックを入れてNext
ボタンをクリックします
[✔] Documentaion
[✔] pip
[✔] tcl/tk and IDLE
[✔] py launcher
[ ] for for all users(requires elevation)
□手順 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)
□手順 1-6: Close
ボタンをクリックしexecutable installer
を終了します
□手順 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)」をインストールする手順でした。