備忘：macにてAWS CLIをインストール

超個人メモ
macにてAWS CLIをインストールしたので、備忘録。

■実行環境
```sh
$ sw_vers
ProductName:	Mac OS X
ProductVersion:	10.15.7
BuildVersion:	19H512
```

■導入手順
手持ちのAWSのテキストに書かれている手順
```sh
# pyhonのpipパッケージを入れる
$ curl "https://bootstrap.pypa.io/pip/get-pip.py" -o "get-pip.py"
$ sudo python get-pip.py
$ pip --version

# AWS CLIをインストール
$ sudo pip install awscli
# 正常にインストールされたか確認
$ aws --version
```



しかし、下記のcurlコマンドでエラーになった。。少し調べてみる。
```sh
$ curl "https://bootstrap.pypa.io/pip/get-pip.py" -o "get-pip.py"
```



■調査結果
get-pip.pyは現在python3系の書き方になっているようです。
```py:get-pip.py 行23〜34
import sys

this_python = sys.version_info[:2]
min_version = (3, 7)
if this_python < min_version:
    message_parts = [
        "This script does not work on Python {}.{}".format(*this_python),
        "The minimum supported Python version is {}.{}.".format(*min_version),
        "Please use https://bootstrap.pypa.io/pip/{}.{}/get-pip.py instead.".format(*this_python),
    ]
    print("ERROR: " + " ".join(message_parts))
    sys.exit(1)

```
私はpythonは未勉強ですが、、、おそらく
①import sys　でシステムの環境情報を取得
②this_python　にpythonの実行環境の情報を入れる
③if文で②で代入した変数とmin_versionを比較。pythonのバージョンが3.7.xより古い場合、エラーメッセージを標準出力に表示

・・・という流れでしょうか。pythonのインタプリタで試してみました。

pythonのバージョンの確認
```sh
$ python --version
Python 2.7.16
```
インタプリタでget-pip.pyの一部を実行
```py
>>> import sys
>>> 
>>> this_python = sys.version_info[:2]
>>> min_version = (3, 7)
>>> if this_python < min_version:
...     message_parts = [
...         "This script does not work on Python {}.{}".format(*this_python),
...         "The minimum supported Python version is {}.{}.".format(*min_version),
...         "Please use https://bootstrap.pypa.io/pip/{}.{}/get-pip.py instead.".format(*this_python),
...     ]
...     print("ERROR: " + " ".join(message_parts))
... 
ERROR: This script does not work on Python 2.7 The minimum supported Python version is 3.7. Please use https://bootstrap.pypa.io/pip/2.7/get-pip.py instead.
>>> 
```
どうやら、そうみたいです。


なので、
　　・現在使用しているpythonのバージョンに対応したpipをインストールする
　　・現在使用しているpythonをget-pip.pyに書かれたバージョン以上にして、最新のpipをインストールする

のどちらかの対応を取る必要があります。今回は、pythonのバージョンアップも兼ねて、後者の方法を試してみます。
前者の方法については下記の記事をご参照ください。

https://qiita.com/hsawaji/items/5ec5533e95a42bbfa4b5


#### 導入手順
１．pythonのバージョン確認
２．事前準備（pyenvをインストール）
３．事前準備（シェルにpyenvの環境変数を通す）
４．事前準備（３系のpythonのインストール）
５．pipのインストール
６．AWS CLIのインストール

---

##### １．pythonのバージョン確認
```sh
$ python -V
Python 2.7.16
```
Macで標準搭載されているものは2系なので、３系のインストールが必要
以下手順２〜４で３系のインストールを行う

##### ２．事前準備（pyenvをインストール）
Homebrewを用いてpyenvをインストール
```sh
$ brew install pyenv
```

##### ３．事前準備（シェルにpyenvの環境変数を通す）
現在利用しているシェルを確認
```sh
$ echo $SHELL
/bin/bash
```
・利用しているシェルがbashなら「~/.bash_profile」に環境変数の設定を記載
・利用しているシェルがｚshなら「~/.zshrc」に環境変数の設定を記載
⇛今回利用しているシェルはbashなので.bash_profileに環境変数を記載

```sh:.bash_profile
# 2022/08/20 Pythonインストールのためpyenvをインストール。それに伴い環境変数設定
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"
```

##### ４．事前準備（３系のpythonのインストール）
以下コマンドを実行
```sh:pythonインストール.sh
# インストール可能なpythonのバージョン確認
pyenv install --list

# pyenvのインストール
pyenv install 3.10.4

# pyenvのバージョン確認
pyenv versions

# pyenvコマンドで今使用しているpythonのバージョンを変更する
pyenv global 3.10.4

# 今使用しているpythonのバージョン確認
python --version
```

##### ５．pipのインストール
AWS CLIインストールに必要なpythonパッケージをインストール
```sh
# pipをインストール
sudo python get-pip.py

# versionを確認
pip --version
```

##### ６．AWS CLIのインストール
```sh
# AWS CLI をインストール
sudo pip install awscli
```
正常にインストールされたことを確認
```sh
$ aws --version
aws-cli/1.25.56 Python/3.10.4 Darwin/19.6.0 botocore/1.27.55
```

以上


参考にしたサイト
■.bashrcと.bash_profileの違い
https://techracho.bpsinc.jp/hachi8833/2021_07_08/66396
■３系のpythonのインストール
https://prog-8.com/docs/python-env
■get-pipを使ったpipインストールでエラーが発生
https://qiita.com/hsawaji/items/5ec5533e95a42bbfa4b5
■pyenv,pipの違い
https://oversleptabit.com/archives/2195