Windows10+WSL2環境のLinuxディストリビューションにAWS CLIをインストールしてみた

Windows 10 バージョン2004 ビルド19041(通称、May 2020 Update)では、WSL(Windows Subsystems for Linux)がバージョンアップしました。WSL2でAWS開発環境を改善してみようと思います。
2020.06.12

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

データアナリティクス事業本部の藤川です。2020年5月下旬に、Windows 10 バージョン2004 ビルド19041(通称、May 2020 Update)が正式にリリースされました。今回のリリースでは、WSL(Windows Subsystems for Linux)がWSL2にバージョンアップし、Linuxカーネルがそのまま動くよう、大幅な進化を遂げています。

これから数回に分けて、WSL2の実力を探りつつ、AWS開発環境を改善してみようと思います。

前提環境

次の環境をご用意ください。Ubuntu 20.04 LTSのインストール手順は後述しますので、インストールされていない状態でも構いません。 また、他のLinuxディストリビューションを使用する場合は、適宜読み替えてください。

  • Windows 10 バージョン2004 ビルド19041(May 2020 Update)以降
  • Windows Subsystem for Linux(Linux用Windowsサブシステム)をインストール済み
  • 仮想マシン プラットフォームをインストール済み
  • WSL2 Linuxカーネル更新プログラムをインストール済み
  • IAMユーザ及びIAMユーザのアクセスキーが発行済み
  • WSL用のLinuxディストリビューション(本記事ではUbuntu 20.04 LTS)を使用

ゴール

本記事では、Windows 10 Home Editionを使用し、WSL2用のUbuntu 20.04 LTSにインストールしたAWS CLIを使用できるようにします。

手順

前提環境を確認

  1. PowerShellコマンドプロンプトを起動し、次のコマンドを実行します。
        dism.exe /online /get-features

  2. 実行結果に次の2点が有効と設定されていれば先へ進んでください。

        機能名 : Microsoft-Windows-Subsystem-Linux
        状態 : 有効
    
        機能名 : VirtualMachinePlatform
        状態 : 有効

Ubuntu 20.04 LTSをインストール

  1. Microsoft StoreからUbuntu 20.04 LTSインストールします。
  2. Ubuntu 20.04 LTS起動します。
  3. Linuxアカウントについて聞かれますので、適当に作成してください。
  4. Windows Explorer%USERPROFILE%\AppData\Local\Packagesフォルダを開きます。
  5. CanonicalGroupLimited.Ubuntu20.04onWindows_*で始まるファイルを探し、[右クリック]-[プロパティ]を開きます。
  6. [詳細設定]ボタンをクリックします。
  7. [内容を圧縮してディスク領域を節約する]のチェックを外し、[OK]ボタンをクリックします。
  8. 元の[プロパティ]ダイアログに戻るので、[OK]ボタンをクリックします。
  9. [属性変更の確認]ダイアログが開くので、[変更をこのフォルダー、サブフォルダーおよびファイルに適用する]が選択されていることを確認し、[OK]ボタンをクリックします。
  10. [属性の適用エラー]ダイアログが開くので、[すべて無視]ボタンをクリックします。
  11. 属性の適用中ダイアログが開いて、変換処理が開始します。
    筆者の環境では、40分程で完了しました
  12. コマンドプロンプトを開きます。
  13. 次のコマンドを実行し、WSLからWSL2に変換します。
    筆者の環境では、5分程で完了しました

        wsl --set-version Ubuntu-20.04 2
        変換中です。この処理には数分かかることがあります...
        WSL 2 との主な違いについては、https://aka.ms/wsl2 を参照してください
        変換が完了しました。

  14. ようやく終わりました。筆者の環境では、元々インストールしていたUbuntuに加えて、Ubuntu-20.04がインストールされました。

        wsl --list --verbose
          NAME                   STATE           VERSION
        * Ubuntu                 Running         2
          Ubuntu-20.04           Running         2

AWS CLIをインストール

※参考:LinuxでのAWS CLIバージョン2のインストールに従い、AWS CLIをインストールしてください。

  1. [スタート]メニュー-[Ubuntu 20.04 LTS]をクリックします。
  2. 依存パッケージをインストールします。
        sudo apt install unzip

  3. AWS CLIをインストールします。

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

  4. AWS CLIがインストールされたことを確認します。

        aws --version

  5. 次のように表示されればインストール完了です。

        aws-cli/2.0.17 Python/3.7.3 Linux/4.19.104-microsoft-standard botocore/2.0.0dev21

credentials/configファイル

※詳細は、設定ファイルと認証情報ファイルの設定をご覧ください。

  1. コマンドプロンプトを開きます。
  2. インストール済みのディストリビューション名を確認します。
        wsl --list --verbose
          NAME                   STATE           VERSION
        * Ubuntu                 Running         2
          Ubuntu-20.04           Running         2

  3. Windows Explorer\\wsl$\<ディストリビューション名>を開きます。

        \\wsl$\Ubuntu-20.04

  4. ルートディレクトリが表示されるので、ホームディレクトリ(/home/<Linuxユーザ名>)を表示します。

        \\wsl$\Ubuntu-20.04\home\<Linuxユーザ名>

  5. Windowsでいつも使用しているcredentialファイルとconfigファイルをコピーしましょう。無ければ、新規作成してください。Windows Explorerで%USERPROFILE%フォルダを開きます。

  6. %USERPROFILE%フォルダ直下にある.awsフォルダを、フォルダごと[Ubuntu 20.04 LTS]のホームディレクトリにコピーしましょう。

        %USERPROFILE%\.aws
        ↓
        \\wsl$\Ubuntu-20.04\home\<Linuxユーザ名>\.aws

  7. 同様に、.sshフォルダも、いつも使用しているconfigファイルやキーペアファイル(*.pem)等をホームディレクトリにコピーしましょう。

        %USERPROFILE%\.ssh
        ↓
        \\wsl$\Ubuntu-20.04\home\<Linuxユーザ名>\.ssh

動作確認

  1. [Ubuntu 20.04 LTS]を開きます。
  2. awsコマンドを実行します。

        aws ec2 describe-instances

  3. EC2インスタンスの一覧が表示されました。

さいごに

Linuxディストリビューションをインストールする際に、最初からWSL2形式でインストールされてくれると楽なのですが、その方法は見つかりませんでした。また、WSL2になっても、一つのLinuxディストリビューションを1環境しかインストールできないため、開発プロジェクトごとに異なる環境を用意しておくことはできないようです。VMwareやDockerほど、使い勝手が良い訳ではありませんが、WindowsでMacのような開発環境を実現できるようになったことは大きな前進と言えるでしょう。

次回は、WSL2環境でAWS SAM CLIを動かしてみたいと思います。