💻

WSL2+VSCodeで作るCloudFormation開発環境

2024/02/09に公開

快適で効率的なCloudFormationテンプレート開発環境を作りましょう。

キーワード:

  • Windows
  • WSL2 (Windows Subsystem for Linux 2)
  • Ubuntu
  • VSCode (Visual Studio Code)
  • cfn-lint

構築手順

(オプション) Windows Terminalをインストールする

設定豊富なタブ機能付きターミナルです。とりあえず入れておいて損はないでしょう。Microsoft Storeから入手可能です。

WSL2をインストールする

  1. 管理者権限でPowerShellを起動し、wsl --installを実行します。これにより、既定のディストリビューションであるUbuntuがインストールされます

    PowerShell
    PS> wsl --install
    インストール中: 仮想マシン プラットフォーム
    仮想マシン プラットフォーム はインストールされました。
    インストール中: Linux 用 Windows サブシステム
    Linux 用 Windows サブシステム  はインストールされました。
    インストール中: Linux 用 Windows サブシステム
    Linux 用 Windows サブシステム  はインストールされました。
    インストール中: Ubuntu
    Ubuntu はインストールされました。
    要求された操作は正常に終了しました。変更を有効にするには、システムを再起動する必要があります。
    
  2. Windowsを再起動します

  3. Ubuntuを起動します[1]。初回起動時は、セットアップに数分掛かります

    Ubuntu
    Installing, this may take a few minutes...
    
  4. ユーザーの作成を求められたら、指示に従ってユーザー名とパスワードを入力します

    Ubuntu
    Please create a default UNIX user account. The username does not need to match your Windows username.
    For more information visit: https://aka.ms/wslusers
    Enter new UNIX username: username
    New password:
    Retype new password:
    passwd: password updated successfully
    Installation successful!
    

参考:

https://learn.microsoft.com/ja-jp/windows/wsl/install

(オプション) プロキシ設定をする

PCが会社のプロキシ下にある場合は、Ubuntuでプロキシ設定(環境変数とapt用の設定)をします。

VSCodeにWSL拡張機能をインストールする

VSCodeにWSL拡張機能をインストールします。

インストール後、WSLでVSCodeを使用するには、Ubuntuでcode .と実行します。VSCodeのコマンドパレットなどからも使用できます。

参考:

https://learn.microsoft.com/ja-jp/windows/wsl/tutorials/wsl-vscode

cfn-lintをインストールする

Ubuntuでcfn-lintをインストールします[2]

Ubuntu
sudo apt update && sudo apt upgrade -y # apt upgradeしておきます
sudo apt install python3-pip -y
pip install cfn-lint

参考:

https://github.com/aws-cloudformation/cfn-lint

VSCodeにcfn-lint拡張機能をインストールする

VSCodeにcfn-lint拡張機能をインストールします。

インストール後、WSLに接続したVSCodeでCloudFormationテンプレートを開くと、自動的に内容がチェックされ、エラーなどがあれば画面に表示されます。

(オプション) VSCodeにCloudFormation拡張機能をインストールする

必要に応じて、CloudFormation拡張機能をインストールします。

この拡張機能はスニペットを含んでおり、以下のような機能があります:

  • 空のYAMLファイルでstartと入力してTabキーを押すと、テンプレートの雛形が自動入力される
  • ec2-instanceと入力してTabキーを押すと、EC2インスタンスの雛形が自動入力される

なお、この拡張機能が依存しているYAML拡張機能!Refなどの関数の短縮表記をエラーとして検出してしまうため、これを回避するにはyaml.customTagsの設定に以下を追加する必要があります:

https://zenn.dev/dannykitadani/articles/6678819ad7a4db

(オプション) Rainをインストールする

CloudFormationまわりを便利にするCLIツール「Rain」の使用も検討してみるとよいと思います。aws cloudformation deployコマンドより便利なrain deployコマンドが使えたり、rain bulildでCloudFormationテンプレートを生成できたりします。

参考:

https://dev.classmethod.jp/articles/devio2021-cloudformation-rain/

(オプション) VSCodeでAIコードジェネレーター「CodeWhisperer」を使用する

VSCodeにAWS Toolkit拡張機能をインストールすることで、AIコードジェネレーター「CodeWhisperer」を利用できます。

2023年11月に、CodeWhispererのIaC対応が発表されました:

https://aws.amazon.com/jp/about-aws/whats-new/2023/11/amazon-codewhisperer-new-enhancements/

AWS Toolkitには、他にも以下の機能が含まれています:

  • Amazon Q - 対話型AI(ChatGPTみたいなやつ)です。AWSに関する質問やコーディングに強い?
  • Application Composer - GUIでリソースを並べるとCloudFormationテンプレートが作成されます
  • CodeCatalyst - クラウド上の全部入り開発環境にリモート接続して開発できる感じです、多分

私はまだ試せていません!

おまけ:AWS CLIをインストールする

必要な場合、AWS CLIをインストールします。

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

参考:

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

コマンド補完を有効にしたい場合は、~/.bashrcに以下を追記します[5]

~/.bashrc
complete -C '/usr/local/bin/aws_completer' aws

参考:

https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/cli-configure-completion.html

おまけ:.aws.sshディレクトリをWSLとWindowsで共有する

AWS CLIやSSHをWindowsでもWSLでも使用する場合は、この設定をしておくと便利です:

https://dev.classmethod.jp/articles/windows-wsl-share-files/

脚注
  1. Windowsのスタートメニューなどから探して起動してください ↩︎

  2. "Ubuntu版の pip コマンドを使用する場合、非特権ユーザが pip install を実行すると、ホームディレクトリの ~/.local ディレクトリにインストールされます。" - pip: Python環境構築ガイド - python.jp ↩︎

  3. 再起動することで環境変数PATHが再設定され直ることを期待しています ↩︎

  4. おそらく$HOME/.local/bin/ ↩︎

  5. ~/.profileはVSCodeのターミナルではデフォルトで読み込まれないため、~/.bashrc推奨。 ↩︎

Discussion