AWS CLIのインストール

Amazon ECR(Elastic Container Registry)のプライベートリポジトリにDockerイメージをプッシュするまでの手順を記録します。手順はAWS CLIのインストール、AWSアカウントの作成、IAM Identity Centerでユーザーの追加・設定、AWS SSOの設定、Amazon ECRでDockerイメージのプッシュに分けます。無料枠での利用を想定しています。

# 環境
- CentOS7
- Dockerはインストール済み

# 手順
1\. [AWS CLIのインストール](https://qiita.com/aomrikti/private/0908000f4aa58098c761)（本記事）
2\. [AWSアカウントの作成](https://qiita.com/aomrikti/private/0e63569eeade661cf7b6
)
3\. [IAM Identity Centerでユーザーの追加・設定](https://qiita.com/aomrikti/private/389672d4900989d447ad)
4\. [AWS SSOの設定](https://qiita.com/aomrikti/private/0ebb0bda84d631cd6ea1)
5\. [Amazon ECRでDockerイメージのプッシュ](https://qiita.com/aomrikti/private/241fad7126657439491e)

# AWS CLI のインストール
### AWS CLI(Command Line Interface)とは
>AWS のサービスを管理するための統合ツールです。 ダウンロードおよび設定用の単一のツールのみを使用して、コマンドラインから AWS の複数のサービスを制御し、スクリプトを使用してこれらを自動化することができます。

## 必須項目の確認
### unzip
- 下記コマンドでインストールされていることを確認する
```
$ yum list installed | grep zip
...  
unzip.x86_64                            6.0-24.el7_9                   @updates 
zip.x86_64                              3.0-11.el7
```
### glibc, groff, less
- 下記コマンドでインストールされていることを確認する
    - glibc：GNU C Library「GNU Project」による標準Cライブラリの実装
    - groff：整形コマンドが含まれたプレーンテキストを読み込んで整形された出力を生成する組版システム
    - less：テキストファイルを一画面ずつ表示するコマンド
```
$ yum list installed | grep glibc
$ yum list installed | grep groff
$ yum list installed | grep less
```
### 64ビット版のOS
- 下記コマンドで現在使用しているOSの種類を確認する
    - 「x86_64」が出力されれば64ビット版であることが確認できる
```
$ uname -m
x86_64
```

## インストール
#### インストーラーファルダをダウンロードする
- 下記コマンドでインストーラーフォルダを「awscliv2.zip」のフォルダ名で保存する
```
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
```
----
### （オプション）ダウンロードしたzipフォルダの整合性を確認する
1\. AWSの公式ドキュメントにある公開鍵ファイルの内容を写したテキストファイルを作成し、任意のファイル名で保存する

- 公開鍵ファイルの掲載箇所：
    - AWS 公式ドキュメント [AWS CLI install and update instructions](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html#getting-started-install-instructions) 「Linux」->「Guided installation steps」->「2. (Optional) Verifying the integrity of your downloaded zip file」->「b. To create the public key file, create a text file and paste in the following text.」


2\. 下記コマンドでAWS CLIの公開鍵をインポートする
```
$  gpg --import <保存したファイル名>
gpg: /home/XXX/.gnupg/trustdb.gpg: 信用データベースができました
gpg: 鍵XXXXXXXX: 公開鍵"AWS CLI Team <aws-cli@amazon.com>"をインポートしました
gpg:         処理数の合計: 1
gpg:           インポート: 1  (RSA: 1)
```
3\. 下記コマンドでAWS CLIの署名ファイルをダウンロードし、「awscliv2.sig」のファイル名で保存する
```
$ curl -o awscliv2.sig https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip.sig
```
4\. 下記コマンドで「awscliv2.zip」と「awscliv2.sig」の整合性を確認する
- `"AWS CLI Team <aws-cli@amazon.com>"からの正しい署名` の出力があれば整合性があるということが確認できる
```
$ gpg --verify awscliv2.sig awscliv2.zip
gpg: 2024年06月19日 03時21分39秒 JSTにRSA鍵ID XXXXXで施された署名
gpg: "AWS CLI Team <aws-cli@amazon.com>"からの正しい署名
...
```
----
#### インストーラーフォルダを展開し、インストール用プログラムを実行する
- 下記コマンドでインストーラーフォルダを展開する
```
$ unzip awscliv2.zip
```

- 下記コマンドでインストール用プログラムを実行する
```
$ sudo ./aws/install
```

- 下記コマンドでAWS CLIのインストールを確認する
```
$ aws --version
aws-cli/2.16.11 Python/3.11.8 Linux/3.10.0-1160.102.1.el7.x86_64 exe/x86_64.centos.7
```

# 参考
- AWS CLIについて
https://aws.amazon.com/jp/cli/#:~:text=AWS%20%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%83%A9%E3%82%A4%E3%83%B3%E3%82%A4%E3%83%B3%E3%82%BF%E3%83%BC%E3%83%95%E3%82%A7%E3%82%A4%E3%82%B9%20(AWS,%E3%81%99%E3%82%8B%E3%81%93%E3%81%A8%E3%81%8C%E3%81%A7%E3%81%8D%E3%81%BE%E3%81%99%E3%80%82

- AWS CLIのインストールについて
https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html