【AWS CLI】Red Hat Enterprise Linux 8でAWS CLIを使用可能にする

##目標
・Red Hat Enterprise Linux 8 ベースのEC2インスタンスにAWS CLIをインストールする。
・AWS CLIを利用して対象AWSアカウント内のリソース操作を可能にする。

##利用環境
ハードウェア　：　**AWS EC2サーバ**
OS（AMI）　:　**Red Hat Enterprise Linux 8 (HVM), SSD Volume Type**
その他ソフトウェア： 
**Python 3.8.0**
**aws-cli/1.18.81 Python/3.8.0 Linux/4.18.0-193.el8.x86_64 botocore/1.17.4**


##作業の流れ
| 項番 | タイトル |
|:----:|:-------------|
| 1 | [pythonのインストール](#1-pythonのインストール) |
| 2 | [AWSCLIのインストール](#2-awscliのインストール)|
| 3 | [アクセスキーIDとシークレットアクセスキーの発行](#3-アクセスキーidとシークレットアクセスキーの発行)|
| 4 | [AWSCLI動作確認](#4-awscli動作確認)

##手順
###1. pythonのインストール
AWS CLIはpythonがベースとなっているため、まずはpythonの実行環境がインストールされている必要があります。
しかしRed Hat Enterprise Linux 8ではデフォルトでpythonがインストールされていないようで、
まずそれをインストールします（※）。
2020/6/17現在最新のpython3.8をyumでインストールしました。

※参考にさせて頂いたサイト
Red Hat Enterprise Linux 8にPythonをインストールする
https://dev.classmethod.jp/articles/in-search-of-lost-python-at-rhel-8/

**①python3.8のインストール**
`yum install python38`実行
⇒`Complete!`と出力されること。

```bash
[root@ip-172-31-45-222 ~]# yum install python38
Installed:
  python38-3.8.0-6.module+el8.2.0+5978+503155c0.x86_64                       python38-libs-3.8.0-6.module+el8.2.0+5978+503155c0.x86_64
  python38-pip-19.2.3-5.module+el8.2.0+5979+f9f0b1d2.noarch                  python38-pip-wheel-19.2.3-5.module+el8.2.0+5979+f9f0b1d2.noarch
  python38-setuptools-41.6.0-4.module+el8.2.0+5978+503155c0.noarch           python38-setuptools-wheel-41.6.0-4.module+el8.2.0+5978+503155c0.noarch

Complete!
```

**②pythonコマンド動作確認**
`python3 --version`実行（RHELではバージョンもコマンド内に含める必要があることに注意）
⇒正常にバージョン情報が出力されること

```bash

[root@ip-172-31-45-222 ~]# python3 --version
Python 3.8.0
```

###2. AWSCLIのインストール
**①AWS CLIインストール**
`pip3 install awscli`実行
⇒`Successfully installed`と出力されること。

```bash
[root@ip-172-31-45-222 ~]# pip3 install awscli
WARNING: Running pip install with root privileges is generally not a good idea. Try `pip3 install --user` instead.
Collecting awscli
  Downloading https://files.pythonhosted.org/packages/9f/13/a93f9ef5d6a0820dbd324a222aba7ff299454cbc0f8c8d37d918e3b530fb/awscli-1.18.81.tar.gz (1.2MB)
     |????????????????????????????????| 1.2MB 7.3MB/s
Collecting botocore==1.17.4 (from awscli)
  Downloading https://files.pythonhosted.org/packages/bc/83/e5c0420ed9d628c6cd054c8a0782dece06515a90b63de4e1c3ce2b943dc2/botocore-1.17.4-py2.py3-none-any.whl (6.3MB)
     |????????????????????????????????| 6.3MB 23.7MB/s
Collecting docutils<0.16,>=0.10 (from awscli)
  Downloading https://files.pythonhosted.org/packages/22/cd/a6aa959dca619918ccb55023b4cb151949c64d4d5d55b3f4ffd7eee0c6e8/docutils-0.15.2-py3-none-any.whl (547kB)
     |????????????????????????????????| 552kB 36.8MB/s
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)
     |????????????????????????????????| 51kB 27.9MB/s
Collecting s3transfer<0.4.0,>=0.3.0 (from awscli)
  Downloading https://files.pythonhosted.org/packages/69/79/e6afb3d8b0b4e96cefbdc690f741d7dd24547ff1f94240c997a26fa908d3/s3transfer-0.3.3-py2.py3-none-any.whl (69kB)
     |????????????????????????????????| 71kB 32.6MB/s
Collecting PyYAML<5.4,>=3.10 (from awscli)
  Downloading https://files.pythonhosted.org/packages/64/c2/b80047c7ac2478f9501676c988a5411ed5572f35d1beff9cae07d321512c/PyYAML-5.3.1.tar.gz (269kB)
     |????????????????????????????????| 276kB 37.7MB/s
Collecting colorama<0.4.4,>=0.2.5 (from awscli)
  Downloading https://files.pythonhosted.org/packages/c9/dc/45cdef1b4d119eb96316b3117e6d5708a08029992b2fee2c143c7a0a5cc5/colorama-0.4.3-py2.py3-none-any.whl
Collecting python-dateutil<3.0.0,>=2.1 (from botocore==1.17.4->awscli)
  Downloading https://files.pythonhosted.org/packages/d4/70/d60450c3dd48ef87586924207ae8907090de0b306af2bce5d134d78615cb/python_dateutil-2.8.1-py2.py3-none-any.whl (227kB)
     |????????????????????????????????| 235kB 41.5MB/s
Collecting jmespath<1.0.0,>=0.7.1 (from botocore==1.17.4->awscli)
  Downloading https://files.pythonhosted.org/packages/07/cb/5f001272b6faeb23c1c9e0acc04d48eaaf5c862c17709d20e3469c6e0139/jmespath-0.10.0-py2.py3-none-any.whl
Collecting urllib3<1.26,>=1.20; python_version != "3.4" (from botocore==1.17.4->awscli)
  Downloading https://files.pythonhosted.org/packages/e1/e5/df302e8017440f111c11cc41a6b432838672f5a70aa29227bf58149dc72f/urllib3-1.25.9-py2.py3-none-any.whl (126kB)
     |????????????????????????????????| 133kB 47.5MB/s
Collecting pyasn1>=0.1.3 (from rsa<=3.5.0,>=3.1.2->awscli)
  Downloading https://files.pythonhosted.org/packages/62/1e/a94a8d635fa3ce4cfc7f506003548d0a2447ae76fd5ca53932970fe3053f/pyasn1-0.4.8-py2.py3-none-any.whl (77kB)
     |????????????????????????????????| 81kB 35.4MB/s
Collecting six>=1.5 (from python-dateutil<3.0.0,>=2.1->botocore==1.17.4->awscli)
  Downloading https://files.pythonhosted.org/packages/ee/ff/48bde5c0f013094d729fe4b0316ba2a24774b3ff1c52d924a8a4cb04078a/six-1.15.0-py2.py3-none-any.whl
Installing collected packages: six, python-dateutil, docutils, jmespath, urllib3, botocore, pyasn1, rsa, s3transfer, PyYAML, colorama, awscli
  Running setup.py install for PyYAML ... done
  Running setup.py install for awscli ... done
Successfully installed PyYAML-5.3.1 awscli-1.18.81 botocore-1.17.4 colorama-0.4.3 docutils-0.15.2 jmespath-0.10.0 pyasn1-0.4.8 python-dateutil-2.8.1 rsa-3.4.2 s3transfer-0.3.3 six-1.15.0 urllib3-1.25.9
```

**②AWS CLIインストール確認**
`aws --version`実行
⇒正常にバージョン情報が出力されること

```bash

[root@ip-172-31-45-222 ~]# aws --version
aws-cli/1.18.81 Python/3.8.0 Linux/4.18.0-193.el8.x86_64 botocore/1.17.4
```

###3. アクセスキーIDとシークレットアクセスキーの発行
AWS CLIからAWSアカウント内リソースへアクセスするためには、
アクセスキーIDとシークレットアクセスキーが必要になるため、それをAWSコンソール上で発行します。

**①以下へアクセス**
https://console.aws.amazon.com/iam/home?#/security_credential

**②`新しいアクセスキーの作成`をクリック**
![tempsnip.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647616/9818b65c-3476-a7f6-1d79-bf8ad76c3cae.png)

**③`キーファイルのダウンロード`をクリック**
クリック後、「rootkey.csv」というファイルがダウンロードされ、
その中にアクセスキーIDとシークレットアクセスキーが記載されています。
![tempsnip.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647616/e39aad56-b0cc-bd38-113a-78e2ebe98b4b.png)

###3. アクセスキーIDとシークレットアクセスキーをAWS CLIに読み込ませる
`aws configure`実行
以下のように各項目に値を記入（※）してください。
※Default region nameは東京リージョン（ap-northeast-1）を設定しています。
※Default output formatは「json, text, table」の3種類から選べる様です。

```bash

[root@ip-172-31-45-222 ~]# aws configure
AWS Access Key ID [None]: {rootkey.csv記載のAWSAccessKeyId}
AWS Secret Access Key [None]: {rootkey.csv記載のAWSSecretKey}
Default region name [None]: ap-northeast-1
Default output format [None]: json
```

###4. AWSCLI動作確認
jsonの出力値を切り出すためjqをインストールします。

`sudo yum install jq`実行
⇒`Complete!`と表示されること

```bash

[root@ip-172-31-45-222 ~]# sudo yum install jq

Installed:
  jq-1.5-12.el8.x86_64                                                      oniguruma-6.8.2-1.el8.x86_64

Complete!
```

`aws ec2 describe-instances | jq '.Reservations[].Instances[] | {InstanceId, PrivateIpAddress}'`
（全インスタンスのインスタンスIDとプライベートIPを切り出し表示）を実行
⇒正常に各インスタンスのIDとIPアドレスが表示されること。


```bash

[root@ip-172-31-45-222 ~]# aws ec2 describe-instances | jq '.Reservations[].Instances[] | {InstanceId, PrivateIpAddress}'
{
  "InstanceId": "i-0e2d37561986006ae",
  "PrivateIpAddress": "172.31.42.251"
}
{
  "InstanceId": "i-04b2b0295c4ace2c8",
  "PrivateIpAddress": "172.31.42.211"
}
{
  "InstanceId": "i-05479d1f45744d4e6",
  "PrivateIpAddress": "172.31.33.200"
}
{
  "InstanceId": "i-01996d692bf2eeee6",
  "PrivateIpAddress": "172.31.34.245"
}
{
  "InstanceId": "i-07e3cd75ed7d0e213",
  "PrivateIpAddress": "172.31.34.137"
}
{
  "InstanceId": "i-01ea4405ab69ba0fd",
  "PrivateIpAddress": "172.31.45.222"
}
```