Windows 10にWSL2をインストールしAWS CLIを実行する

記事タイトルとURLをコピーする

f:id:swx-kitani:20220413135732p:plain コーヒーが大好きな木谷映見です。
生まれてこの方生粋のWindowsユーザーなのですが、ついに手元のWindows端末にWindows Subsystem for Linux(以下、WSL)をインストールしました。
今回は手元のWindows 10端末にWSL2をインストールしAWS CLIを使えるようにするまでに私が行った手順を記載します。

手順1.前提条件

今回WSL2をインストールしてAWS CLIを実行する環境は以下の通りです。

  • Windows 10 Pro バージョン21H2(OSビルド19044.1526)
  • WSL未インストール

手順2.WSL2インストール

「WSL のインストール」を参考に、WSLをインストールしていきます。 管理者権限のPowerShellで以下コマンドを実行し、WSL2をインストールします。1

wsl --install

このコマンドでは以下が実行されます。

  • 必要なオプション コンポーネントの有効化
  • 最新 Linux カーネルのダウンロード
  • WSL 2 の既定としての設定
  • Linux ディストリビューション(既定では Ubuntu)のインストール

以下のように再起動を求められるので、PowerShellを閉じて端末を再起動します。f:id:swx-kitani:20220308121828p:plain

再起動すると以下のようにデフォルトのUNIXユーザアカウントを作成するよう求められます。Windowsのユーザ名と一致する必要はないので、自由にユーザ名を入力します。 f:id:swx-kitani:20220308122034p:plain パスワードを求められるので2回入力します。 f:id:swx-kitani:20220308122339p:plain これで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

f:id:swx-kitani:20220308122631p:plain

3-2.AWS CLI v2のパッケージをダウンロード

curlコマンドでAWS CLI v2のパッケージをダウンロードします。

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

f:id:swx-kitani:20220308122907p:plain

unzipコマンドで展開します。

unzip awscliv2.zip

f:id:swx-kitani:20220308123024p:plain

3-3.AWS CLI v2のインストール

以下コマンドでAWS CLI v2をインストールします。

sudo ./aws/install

以下バージョン確認コマンドが実行できるか試し、AWS CLI v2がインストールできたか確認します。

aws --version

f:id:swx-kitani:20220308123257p:plain

バージョン確認コマンドが実行でき、バージョンが表示され、AWS CLI v2がインストールされたことが確認できました。

手順4.AWS CLIを使用するIAMユーザのアクセスキー・シークレットアクセスキーを作成

AWS CLIを使用するために、IAMユーザのアクセスキーとシークレットアクセスキーが必要なので作成します。 AWSマネジメントコンソールのIAMから、CLIを使用したいユーザを選択し「アクセスキーの作成」をクリックします。 f:id:swx-kitani:20220308123551p:plain アクセスキーとシークレットアクセスキーが生成されます。シークレットアクセスキーは二度と表示できないのでここで必ずコピーしておいてください。.csvファイルをダウンロードしておくのもよいです。 f:id:swx-kitani:20220308123700p:plain

★アクセスキーとシークレットアクセスキーのセットが漏洩するとそのユーザの権限で何でも操作ができてしまうので、絶対に外部に漏らさないようにご注意ください。★

手順5.WSLで認証情報の登録

手順4で作成したアクセスキーとシークレットアクセスキー情報をWSLで登録していきます。 今回は「クイックセットアップ」を参考に実施します。

以下コマンドを実行します。

aws configure

対話形式で以下情報を入力していきます。

  • アクセスキー
  • シークレットアクセスキー
  • リージョン(今回は東京リージョンを指定します)
  • デフォルトフォーマット(今回はjsonを指定します)
AWS Access Key ID [None]: AKIAxxxxxxxxxxxV2CL
AWS Secret Access Key [None]: xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Default region name [None]: ap-northeast-1
Default output format [None]: json

f:id:swx-kitani:20220308124306p:plain

登録した情報は~/.aws配下のconfigcredentialsに保存されています。 詳細は手順6以降で再度記載します。

以下AWS CLIコマンドを実行し、EC2情報を取得してみます。

aws ec2 describe-instances

f:id:swx-kitani:20220308124550p:plain EC2の情報が取得できました。

※アクセスキーとシークレットアクセスキーを発行したIAMユーザにEC2の参照権限があるのでEC2情報が取得できています。うまく情報が取得できない場合はIAMユーザの権限を確認してみてください。

手順6.CLIを実行するIAMユーザを切り替える

「Named profiles for the AWS CLI」を参考に、認証情報を追加で登録し、CLIコマンドを実行するIAMユーザを切り替えてみます。(プロファイルの切り替え)

6-1.CLI用のIAMユーザを作っておく

プロファイル切り替え用のIAMユーザを作成します。 今回は以下のユーザを作成し、アクセスキーとシークレットアクセスキーを生成しました。

  • IAMユーザ名:cli-test-user
  • 権限:IAMReadOnlyAccessだけアタッチ f:id:swx-kitani:20220308125116p:plain

6-2.認証情報の追加登録

WSLを開き、~/.aws配下のconfig(構成プロファイル)を編集します。 viエディタで~/.aws配下のconfigを開きます。

vi .aws/config

viエディタで開くと、configは以下のように設定されています。 手順5で登録した構成プロファイル情報が反映されているのが確認できます。

[default]
region = ap-northeast-1
output = json

iで編集モードに移行し、手順6-1で新しく作成したCLI用IAMユーザの情報を以下のように追記し、escで編集モードを抜け、:wqで保存します。

[profile cli-test-user]
region=ap-northeast-1
output=text

f:id:swx-kitani:20220308125436p:plain リージョンは東京のまま、フォーマットをテキストにしてみました。

続いて~/.aws配下のcredentials(クレデンシャルプロファイル)を編集します。 viエディタで~/.aws配下のcredentialsを開きます。

vi .aws/credentials

viエディタで開くと、credentialsは以下のように設定されています。 手順5で登録したクレデンシャルプロファイル情報が反映されているのが確認できます。

[default]
aws_access_key_id = AKIxxxxxxxxxxxxxV2CL
aws_secret_access_key = xxxxxxxxxxxxxxxxxxxxxxxxxxxx

iで編集モードに移行し、手順6-1で新しく作成したCLI用IAMユーザの認証情報を以下のように追記し、escで編集モードを抜け、:wqで保存します。

[cli-test-user]
aws_access_key_id = AKIxxxxxxxxxxxxxV2CL
aws_secret_access_key = xxxxxxxxxxxxxxxxxxxxxxxxxxxx

f:id:swx-kitani:20220308125659p:plain

6-3.名前付きプロファイルの使用

CLIコマンドに--profile <IAMユーザ名>オプションを追加することで、CLIコマンドを実行するIAMユーザを切り替えることができます。 次のコマンドで、手順6-2のプロファイルで定義されたクレデンシャルと設定を使用して、AWSアカウント内すべてのIAMユーザ一覧をテキスト形式で表示してみます。

aws iam list-users --profile cli-test-user

f:id:swx-kitani:20220308130106p:plain

cli-test-userIAMReadOnlyAccessしか権限がないため、EC2の情報を取得しようとすると失敗します。

aws ec2 describe-instances --profile cli-test-user

f:id:swx-kitani:20220308130241p:plain

6-4.(参考)環境変数でのプロファイル指定

以下のように環境変数を設定することにより、コマンドを実行するたびに--profile <ユーザ名>オプションでプロファイルを指定する必要がなくなります。

export AWS_PROFILE=cli-test-user

f:id:swx-kitani:20220308130516p:plain

--profile <ユーザ名>オプションでプロファイルを指定しなくても、テキスト形式でIAMユーザのリストが取得されている(=cli-test-userでAWS CLIコマンドが実行されている)のが確認できます。

終わりに

セキュリティの観点からクレデンシャル(アクセスキー・シークレットアクセスキーのペア)の発行はできる限りやらない方がいいということで、主にAWS CLIはCloud9で使っていました。
Cloud9はIAMロールで権限制御ができるためセキュアで良いのですが、料金がかかることを考えると手元の端末にAWS CLIをインストールした方がいいケースもあり、今回はLinuxの勉強もかねてWSLをインストールしAWS CLIを使えるようにしてみました。
くれぐれもクレデンシャルの扱いには気を付けましょう!

参考

Linux 用 Windows サブシステムとは

WSL のインストール

WSL の開発環境を設定する

Installing or updating the latest version of the AWS CLI

クイックセットアップ

Named profiles for the AWS CLI


  1. このコマンドはWSL がインストールされていない場合にのみ機能する。

emi kitani(執筆記事の一覧)

AS部LX課。2022/2入社、亀の歩みで頑張っています。コーヒーとサウナが好きです。AWS認定11冠