1.前提条件
今回WSL2をインストールしてAWS CLIを実行する環境は以下の通り。
- Windows10 Pro バージョン21H2(OSビルド19044.1526)
- WSL未インストール
2.WSL2インストール
「WSL のインストール」を参考に、WSLをインストールしていく。
管理者権限のPowerShellで以下コマンドを実行し、WSL2をインストールする。1
wsl --install
このコマンドでは以下が実行される。
- 必要なオプション コンポーネントの有効化
- 最新 Linux カーネルのダウンロード
- WSL 2 の既定としての設定
- Linux ディストリビューション(既定では Ubuntu)のインストール
以下のように再起動を求められるので、端末を再起動する。
再起動すると以下のようにデフォルトのUNIXユーザアカウントを作成するよう求められる。Windowsのユーザ名と一致する必要はない。自由にユーザ名を入力する。
パスワードを求められるので2回入力する。
これでWSL2のセットアップが完了した。
3.AWS CLI v2インストール
「Installing or updating the latest version of the AWS CLI」のLinux OSへのインストール手順を参照し、AWS CLIの最新バージョンであるv2をインストールする。
3-1.unzipコマンドをインストールする
WSL2で実行するUbuntuで作業する。
AWS CLIのパッケージをインストールした後unzipする必要があるので、unzipをインストールしておく。
sudo apt install unzip
3-2.AWS CLI v2のパッケージをダウンロード
curlコマンドでAWS CLI v2のパッケージをダウンロードする。
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzipコマンドで展開する。
unzip awscliv2.zip
3-3.AWS CLI v2のインストール
以下コマンドでインストールする。
sudo ./aws/install
以下バージョン確認コマンドが実行できるか試し、AWS CLI v2がインストールできたか確認する。
aws --version
バージョン確認コマンドが実行でき、バージョンが表示され、AWS CLI v2がインストールされたことが確認できた。
4.CLIを使用するIAMユーザのアクセスキー・シークレットアクセスキーを作成
CLIを使用するのにIAMユーザのアクセスキーとシークレットアクセスキーが必要なので作成する。
AWSマネジメントコンソールのIAMから、CLIを使用する権限のあるユーザを選択し「アクセスキーの作成」をclickする。
アクセスキーとシークレットアクセスキーが生成される。シークレットアクセスキーは二度と表示できないのでここで必ずコピーしておく。.csvファイルをダウンロードしておいてもよい。
アクセスキーとシークレットアクセスキーのセットが漏洩するとそのユーザの権限で何でも操作ができてしまうので、絶対に外部に漏らさないようにする。
5.WSLで認証情報の登録
手順4で作成したアクセスキーとシークレットアクセスキー情報をWSLで登録する。
今回は「クイックセットアップ」を参考に実施する。
以下コマンドを実行する。
aws configure
対話形式で以下情報を入力していく。
- アクセスキー
- シークレットアクセスキー
- リージョン
- デフォルトフォーマット
AWS Access Key ID [None]: AKIAxxxxxxxxxxxV2CL
AWS Secret Access Key [None]: xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Default region name [None]: ap-northeast-1
Default output format [None]: json
登録した情報は~/.aws
配下のconfig
とcredentials
に保存されている。
以下AWS CLIコマンドを実行し、EC2情報を取得する。
aws ec2 describe-instances
6.CLIを実行するIAMユーザを切り替える
「Named profiles for the AWS CLI」を参考に、認証情報を追加で登録し、CLIコマンドを実行するIAMユーザを切り替える。(プロファイルの切り替え)
6-1.CLI用のIAMユーザを作っておく
プロファイル切り替え用のIAMユーザを作っておく。
今回は以下のユーザを作成し、アクセスキーとシークレットアクセスキーを生成しておく。
6-2.認証情報の追加登録
WSLを開き、~/.aws
配下のconfig
(構成プロファイル)を編集する。
viエディタで~/.aws
配下のconfig
を開く。
vi .aws/config
viエディタで開くと、config
は以下のように設定されている。
[default]
region = ap-northeast-1
output = json
i
で編集モードに移行し、新しく作成したCLI用IAMユーザの情報を以下のように追記し、esc
で編集モードを抜け、:wq
で保存する。
[profile cli-test-user]
region=ap-northeast-1
output=text
続いて~/.aws
配下のcredentials
(クレデンシャルプロファイル)を編集する。
viエディタで~/.aws
配下のcredentials
を開く。
vi .aws/credentials
viエディタで開くと、credentials
は以下のように設定されている。
[default]
aws_access_key_id = AKIxxxxxxxxxxxxxV2CL
aws_secret_access_key = xxxxxxxxxxxxxxxxxxxxxxxxxxxx
i
で編集モードに移行し、新しく作成したCLI用IAMユーザの認証情報を以下のように追記し、esc
で編集モードを抜け、:wq
で保存する。
[cli-test-user]
aws_access_key_id = AKIxxxxxxxxxxxxxV2CL
aws_secret_access_key = xxxxxxxxxxxxxxxxxxxxxxxxxxxx
6-3.名前付きプロファイルの使用
CLIコマンドにオプションを追加することで、CLIコマンドを実行するIAMユーザを切り替えることができる。
次の例では、手順6-2のプロファイルで定義されたクレデンシャルと設定を使用して、アカウント内すべてのIAMユーザ一覧をテキスト形式で表示する。
aws iam list-users --profile cli-test-user
cli-test-user
はIAMReadOnlyAccess
しか権限がないため、EC2の情報を取得しようとすると失敗する。
aws ec2 describe-instances --profile cli-test-user
6-4.(参考)環境変数でのプロファイル指定
以下のように環境変数を設定することにより、コマンドを実行するたびに--profile
オプションでプロファイルを指定する必要がなくなる。
export AWS_PROFILE=cli-test-user
--profile
オプションでプロファイルを指定しなくても、テキスト形式でIAMのリストが取得されている(=cli-test-userでAWS CLIコマンドが実行されている)。
参考
-
このコマンドはWSL がインストールされていない場合にのみ機能する。 ↩