WSLにインストールしたAWS CLI v2 の認証にIAM Identity Center を設定してみた

# １．はじめに

Amazon Q Developer for CLI でAWS環境を操作できるようにしたく、WSL（Windows Subsystem for Linux）にAWS CLI v2 をインストールしました。

この一連の作業を記事に書きます。まずは、WSLのセットアップとAWS CLIのインストールまでを書きます。

:::note warn
本記事の内容は、2025年5月6日現在のAWS環境で試したものです。また、個人のAWSアカウントで検証した結果であり、個人の見解です。参考程度にとどめていただき、試す場合は自己責任でお願いいたします。
:::

# ２．各種サービスについて

### ①WSL

https://ja.wikipedia.org/wiki/Windows_Subsystem_for_Linux

Wikipediaの記事を簡単にまとめると、「Windowsマシン上でLinux仮想マシンを実行する仕組み」です。

### ②AWS CLI

https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/cli-chap-welcome.html

コマンドラインでAWSを管理するツールで、v1（バージョン１）とv2（バージョン２）があります。

今回試そうとする、AWS CLIからAWS Identity Center を使ってシングルサインオン接続するためには、AWS CLI v2 が必要です。他にもv1とv2の違いは以下がありますが、今回は割愛します。

# ３．WSLのセットアップ

今回はUbuntuを実行できるようにします。

①PowerShellを管理者として実行します。

②WSLをインストールします。

```
wsl --install
```

インストールが完了したら以下の通り表示されますので、PCを再起動します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/402789/fe02f6b7-0fb9-496f-b3be-0bf5e1d9ab36.png)

③再起動後、再びPowerShellを実行します。

:::note info
ここからは管理者権限でなくても問題ありません。
:::

④Ubuntuをインストールします。

```
wsl --install -d Ubuntu
```

⑤Ubuntuがインストールされたことを確認します。

```
wsl -l -v
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/402789/943d805d-8495-4405-bb12-c3b20efe5ace.png)

STATEが[STOP]と表示されていますので、起動する必要があります。

⑥Ubuntuを実行します。

```
wsl -d Ubuntu
```

以下のように表示されたら完了です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/402789/79e7f23f-bc43-4c37-9bc9-b2ffd842ffce.png)


# ４．AWS CLI v2のインストール及び認証設定

:::note warn
**前提条件**
 - WSLのセットアップが終わっていること
 - WSLを起動していること
 - AWS IAM Identity Centerを利用中であること
 - IAM Identity Center のユーザアカウントにMFA認証設定していること

PCにアクセスキー、シークレットアクセスキーを保存するのではなく、IAM Identity Centerでシングルサインオン（SSO）認証するよう設定します。
なお、本稿ではIAM Identity Centerの導入説明、MFA認証設定の説明は割愛します。
:::

## ４－１．AWS CLI v2 のインストール

①インストーラーをダウンロードします

```
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
```

以下のような表示になったら、ダウンロード完了です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/402789/41817fd2-904a-437c-9870-94c9e7b0e56a.png)


②ダウンロードしたファイルを解凍します

```
unzip awscliv2.zip
```

③インストールスクリプトを実行します

```
sudo ./aws/install
```

:::note info
少し時間がかかります。インストール完了したら、コマンドが打てるようになりますので、終わるまで待ちます。
:::

④WSLを再起動します

```
sudo reboot
```

:::note info
再起動せずに⑤を実行したところ、バージョンが表示されませんでした。一度再起動してから実行した方が良いと思います。
:::

⑤インストールの確認をするために、AWS CLIのバージョンを確認します。

```
aws --version
```

以下のようにバージョンが表示されたら完了です。

```
aws-cli/2.27.8 Python/3.13.2 Linux/5.15.167.4-microsoft-standard-WSL2 exe/x86_64.ubuntu.22
```

## ４－２．シングルサインオン（SSO）設定

①SSO設定をするため、以下のコマンドを入力します。

```
aws configure sso
```

②以下の通り入力します。

| 項目名 | 入力内容 | 入力値例 | 備考 |
|:-|:-|:-|:-|
| SSO session name (Recommended) | SSOセッション名 | 任意の文字列 | |
| SSO Start URL | IAM Identity CenterのトップURL | https[:]//XXXXXX.awsapps.com/start | リンクにならないよう : を[]で囲いました。実際にURLを入力する時には不要です。|
| SSO region | IAM Identity Centerで使っているリージョン | ap-northeast-1 |  |
| SSO registration scopes | スコープ | sso:account:access | 特に指定が無い場合は空欄で入力すれば、左記の値で設定されます。 |

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/402789/f6a44f7c-feca-43a7-8bdd-75f23111ba26.png)

:::note info
SSO registration scopes の意味が、AWS公式ドキュメントを読んでも見当たりませんでした。今のところ、上記表の値（空欄）でも問題なさそうですが、この項目の意味と必要なシーンをご存じの方いらっしゃいましたら、教えていただけますと幸いです。
:::

③コマンドラインに表示されるURLをブラウザで開きます。

④アクセス許可可否画面が表示されたら、「アクセスを許可」をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/402789/ed4c72c3-85b6-463d-81e9-960b407b78ae.png)

⑤以下のような画面が表示されたらOKです。コマンドラインに戻ります。

![スクリーンショット 2025-05-06 145903.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/402789/5486775d-a8e2-464d-aa11-2e86ca1ecd64.png)

⑥シングルサインしたいアカウントを選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/402789/5a55399f-1698-43fd-9575-945e5ff611fa.png)

⑦SSOのプロファイルを入力します。

| 項目名 | 入力内容 | 具体的な値の例 | 備考 |
|:-|:-|:-|:-| 
| default client Region [None] | 普段使っているリージョン | ap-northeast-1 など | |
| CLI default output format | アウトプットフォーマット | JSON | 何も指定しなければ、JSON |
| Profile name | SSOプロファイル名 | 任意の文字列 | |

⑧以下の通り表示されたら設定完了です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/402789/ec20a04c-064e-4e05-aab2-6b7cdf47f833.png)

⑨プロファイル設定されたことを確認します。

```
cat ~/.aws/config
```

以下のように表示されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/402789/766bfbb8-028f-48ae-877e-2239e4fc9e2a.png)


## ４－３．IAM Identity Center ログイン

①以下のコマンドを実行し、SSOログインします（以下のXXXXXXXにはプロファイル名を入れます）。

```
aws sso login --profile XXXXXX 
```

②コマンドラインに表示されるURLをブラウザで開きます。

③サインイン画面が表示されたら、IAM Identity Centerのユーザアカウントでサインインします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/402789/1923f6e4-a08a-4227-ae50-4229e98570cf.png)

④サインイン完了したら、コマンドラインに以下のように表示されます。

```
Successfully logged into Start URL: https://XXXXXXXX.awsapps.com/start
```

以上が、AWS CLI v2インストール～SSO設定～ログイン の手順です。

# ５．試しにAmazon S3 の一覧を取得してみた

今回、私がSSO設定したIAM Identity Centerの権限セットは、Amazon S3（以下、S3）へのアクセスが可能なポリシを付与しています。試しに、S3のバケットの一覧を取得してみました。

まず、以下のようにS3バケットを準備します（S3バケットの作り方は割愛します）。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/402789/20179fff-ead5-4224-b63b-3a4275d46f1d.png)

以下のコマンドを実行します（以下のXXXXXXXにはプロファイル名を入れます）。

```
aws s3 ls --profile XXXXXX
```

以下のようにS3バケットの一覧が表示されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/402789/1a6f6eb4-9ef0-4e5a-b94d-99626da53cc9.png)

これで、WSLからAWS CLI v2 にてAWS環境を管理することができるようになりました。

# ６．まとめ

WSLにAWS CLIをインストールし、IAM Identity Centerで認証するまでの手順を書きました。

AWS CLIをPCで実行するためとはいえ、アクセスキーとシークレットアクセスキーを作ってPCに保存するのは、今のIAMのベストプラクティスに反してセキュアではないので、やるのは躊躇していました。IAM Identity Centerでも認証情報の扱いには注意しなければなりませんが、アクセスキーを作るよりは安全だと思いました。

次回の記事では、Amazon Q Developer CLI をインストールする手順をまとめます。

最後まで読んでいただき、ありがとうございました！