WSL 上に AWS CLI をインストールする

# 概要
WSL上に AWS CLI をインストールする方法 with pip3

# 環境
Windows10 Pro
バージョン 1803
WSL ... Ubuntu 18.04 LTS

[WSLのインストール方法](https://qiita.com/tkj06/items/b5c195db860241663485)
[WSL への pip3 インストール方法](https://qiita.com/tkj06/items/22947c6fe63acf24ae97)

# インストール
[公式を参考に順番にやります](https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/cli-chap-install.html)

--upgrade オプションは pip 自体のアップデート
[--upgrade オプションについて](https://www.lifewithpython.com/2015/07/pip-upgrade-itself.html)

--user オプションは linux のユーザーディレクトリにインストールするためのオプション。
AWS CLI の場合は /home/username/.local/bin/aws ディレクトリにインストールされる。

```bash
# --upgrade 
$ pip3 install awscli --upgrade --user
Collecting awscli
  Downloading https://files.pythonhosted.org/packages/1c/fc/6de0d0e616db20fbb0bffbed73b4b575b6c5d6632503720760d21b5ec354/awscli-1.16.188-py2.py3-none-any.whl (1.7MB)
    100% |████████████████████████████████| 1.7MB 577kB/s
Collecting colorama<=0.3.9,>=0.2.5 (from awscli)
  Downloading https://files.pythonhosted.org/packages/db/c8/7dcf9dbcb22429512708fe3a547f8b6101c0d02137acbd892505aee57adf/colorama-0.3.9-py2.py3-none-any.whl
Collecting PyYAML<=5.1,>=3.10; python_version != "2.6" (from awscli)
Collecting rsa<=3.5.0,>=3.1.2 (from awscli)
  Downloading https://files.pythonhosted.org/packages/e1/ae/baedc9cb175552e95f3395c43055a6a5e125ae4d48a1d7a924baca83e92e/rsa-3.4.2-py2.py3-none-any.whl (46kB)
    100% |████████████████████████████████| 51kB 1.4MB/s
Collecting s3transfer<0.3.0,>=0.2.0 (from awscli)
  Downloading https://files.pythonhosted.org/packages/16/8a/1fc3dba0c4923c2a76e1ff0d52b305c44606da63f718d14d3231e21c51b0/s3transfer-0.2.1-py2.py3-none-any.whl (70kB)
    100% |████████████████████████████████| 71kB 1.5MB/s
Collecting docutils>=0.10 (from awscli)
  Downloading https://files.pythonhosted.org/packages/36/fa/08e9e6e0e3cbd1d362c3bbee8d01d0aedb2155c4ac112b19ef3cae8eed8d/docutils-0.14-py3-none-any.whl (543kB)
    100% |████████████████████████████████| 552kB 1.0MB/s
Collecting botocore==1.12.178 (from awscli)
  Downloading https://files.pythonhosted.org/packages/98/8f/ca7e67d37570e0dc0c5a495096a9a7428fb01a97fa908f57dcd0739f956b/botocore-1.12.178-py2.py3-none-any.whl (5.6MB)
    100% |████████████████████████████████| 5.6MB 261kB/s
Collecting pyasn1>=0.1.3 (from rsa<=3.5.0,>=3.1.2->awscli)
  Using cached https://files.pythonhosted.org/packages/7b/7c/c9386b82a25115cccf1903441bba3cbadcfae7b678a20167347fa8ded34c/pyasn1-0.4.5-py2.py3-none-any.whl
Collecting python-dateutil<3.0.0,>=2.1; python_version >= "2.7" (from botocore==1.12.178->awscli)
  Downloading https://files.pythonhosted.org/packages/41/17/c62faccbfbd163c7f57f3844689e3a78bae1f403648a6afb1d0866d87fbb/python_dateutil-2.8.0-py2.py3-none-any.whl (226kB)
    100% |████████████████████████████████| 235kB 1.2MB/s
Collecting urllib3<1.26,>=1.20; python_version >= "3.4" (from botocore==1.12.178->awscli)
  Downloading https://files.pythonhosted.org/packages/e6/60/247f23a7121ae632d62811ba7f273d0e58972d75e58a94d329d51550a47d/urllib3-1.25.3-py2.py3-none-any.whl (150kB)
    100% |████████████████████████████████| 153kB 1.1MB/s
Collecting jmespath<1.0.0,>=0.7.1 (from botocore==1.12.178->awscli)
  Downloading https://files.pythonhosted.org/packages/83/94/7179c3832a6d45b266ddb2aac329e101367fbdb11f425f13771d27f225bb/jmespath-0.9.4-py2.py3-none-any.whl
Collecting six>=1.5 (from python-dateutil<3.0.0,>=2.1; python_version >= "2.7"->botocore==1.12.178->awscli)
  Using cached https://files.pythonhosted.org/packages/73/fb/00a976f728d0d1fecfe898238ce23f502a721c0ac0ecfedb80e0d88c64e9/six-1.12.0-py2.py3-none-any.whl
Installing collected packages: colorama, PyYAML, pyasn1, rsa, six, python-dateutil, urllib3, jmespath, docutils, botocore, s3transfer, awscli
Successfully installed PyYAML-5.1 awscli-1.16.188 botocore-1.12.178 colorama-0.3.9 docutils-0.14 jmespath-0.9.4 pyasn1-0.4.5 python-dateutil-2.8.0 rsa-3.4.2 s3transfer-0.2.1 six-1.12.0 urllib3-1.25.3
```

## インストール確認
PATH は通ってました。
もし aws なんてコマンドねーよって言われたら which コマンドでインストールされたディレクトリを確認後 PATH を通してみましょう。

```bash
$ aws --version
aws-cli/1.16.188 Python/3.6.7 Linux/4.4.0-17763-Microsoft botocore/1.12.178

$ which aws
/home/unix_user/.local/bin/aws
```

# 認証情報設定
インストール後そのまま何かコマンド実行すると認証情報がないよって怒られます。

```bash
# iam ユーザーのリスト取得
$ aws iam list-users
Unable to locate credentials. You can configure credentials by running "aws configure".
```

## 設定方法
[とりあえず公式](https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/cli-chap-configure.html)

```bash
$ aws configure
# 以下は対話式で入力していく
AWS Access Key ID [None]: accesskey1
AWS Secret Access Key [None]: secret1
Default region name [None]: ap-northeast-1
Default output format [None]: json
```

### 設定ファイル確認
`~/.aws` ディレクトリが作成されています。
`~/.aws/credentials` は認証情報、`~/.aws/config` は認証情報以外の情報(デフォルトのリージョンとかデフォルトの出力形式とか)が格納されています。

```bash
ls -la ~/.aws/
total 0
drwxrwxrwx 1 unix_user unix_user 4096 Jun 27 13:27 .
drwxr-xr-x 1 unix_user unix_user 4096 Jun 27 13:27 ..
-rw------- 1 unix_user unix_user   48 Jun 27 13:27 config
-rw------- 1 unix_user unix_user  116 Jun 27 13:27 credentials

$ cat ~/.aws/config
[default]
region = ap-northeast-1
output = json

$ cat ~/.aws/credentials
[default]
aws_access_key_id = accesskey1
aws_secret_access_key = secret1
```

環境変数とかでも設定できます。
[ほかの設定方法と優先順位](https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/cli-chap-configure.html#config-settings-and-precedence)

### 設定されたか確認
設定したアクセスキーで取得できるはずの AWS のリソースへアクセスしてみます。

```bash
# 無事取れてます
$ aws iam list-users
{
    "Users": [
        {
            "Path": "/",
            "UserName": "some.one",
            "UserId": "user1",
            "Arn": "arn:aws:iam::123456789:user/some.one",
            "CreateDate": "2019-06-25T11:43:32Z",
            "PasswordLastUsed": "2019-06-26T00:38:36Z"
        },
        {
            "Path": "/",
            "UserName": "some.two",
            "UserId": "user2",
            "Arn": "arn:aws:iam::123456789:user/some.two",
            "CreateDate": "2019-06-25T11:45:32Z",
            "PasswordLastUsed": "2019-06-26T00:40:36Z"
        }
    ]
}
```