コーヒーが好きな木谷映見です。
生まれてこの方生粋のWindowsユーザーなのですが、ついに手元のWindows端末にWindows Subsystem for Linux(以下、WSL)をインストールしました。
今回は手元のWindows 10端末にWSL2をインストールしAWS CLIを使えるようにするまでに私が行った手順を記載します。
- 手順1.前提条件
- 手順2.WSL2インストール
- 手順3.AWS CLI v2インストール
- 手順4.AWS CLIを使用するIAMユーザのアクセスキー・シークレットアクセスキーを作成
- 手順5.WSLで認証情報の登録
- 手順6.CLIを実行するIAMユーザを切り替える
- 終わりに
- 参考
手順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を閉じて端末を再起動します。
再起動すると以下のようにデフォルトの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のインストール
以下コマンドでAWS CLI v2をインストールします。
sudo ./aws/install
以下バージョン確認コマンドが実行できるか試し、AWS CLI v2がインストールできたか確認します。
aws --version
バージョン確認コマンドが実行でき、バージョンが表示され、AWS CLI v2がインストールされたことが確認できました。
手順4.AWS CLIを使用するIAMユーザのアクセスキー・シークレットアクセスキーを作成
AWS CLIを使用するために、IAMユーザのアクセスキーとシークレットアクセスキーが必要なので作成します。 AWSマネジメントコンソールのIAMから、CLIを使用したいユーザを選択し「アクセスキーの作成」をクリックします。 アクセスキーとシークレットアクセスキーが生成されます。シークレットアクセスキーは二度と表示できないのでここで必ずコピーしておいてください。.csvファイルをダウンロードしておくのもよいです。
★アクセスキーとシークレットアクセスキーのセットが漏洩するとそのユーザの権限で何でも操作ができてしまうので、絶対に外部に漏らさないようにご注意ください。★
手順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
登録した情報は~/.aws
配下のconfig
とcredentials
に保存されています。
詳細は手順6以降で再度記載します。
以下AWS CLIコマンドを実行し、EC2情報を取得してみます。
aws ec2 describe-instances
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
だけアタッチ
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
リージョンは東京のまま、フォーマットをテキストにしてみました。
続いて~/.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
6-3.名前付きプロファイルの使用
CLIコマンドに--profile <IAMユーザ名>
オプションを追加することで、CLIコマンドを実行するIAMユーザを切り替えることができます。
次のコマンドで、手順6-2のプロファイルで定義されたクレデンシャルと設定を使用して、AWSアカウント内すべての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コマンドが実行されている)のが確認できます。
終わりに
セキュリティの観点からクレデンシャル(アクセスキー・シークレットアクセスキーのペア)の発行はできる限りやらない方がいいということで、主にAWS CLIはCloud9で使っていました。
Cloud9はIAMロールで権限制御ができるためセキュアで良いのですが、料金がかかることを考えると手元の端末にAWS CLIをインストールした方がいいケースもあり、今回はLinuxの勉強もかねてWSLをインストールしAWS CLIを使えるようにしてみました。
くれぐれもクレデンシャルの扱いには気を付けましょう!
参考
Installing or updating the latest version of the AWS CLI
Named profiles for the AWS CLI
-
このコマンドはWSL がインストールされていない場合にのみ機能する。↩
emi kitani(執筆記事の一覧)
AS部LX課。2022/2入社、コーヒーとサウナが好きです。執筆活動に興味があります。AWS認定12冠。