WSL2+VSCodeで作るCloudFormation開発環境
快適で効率的なCloudFormationテンプレート開発環境を作りましょう。
キーワード:
- Windows
- WSL2 (Windows Subsystem for Linux 2)
- Ubuntu
- VSCode (Visual Studio Code)
- cfn-lint (CloudFormation Linter)
構築手順
(オプション) Windows Terminalをインストールする
設定豊富なタブ機能付きターミナルです。とりあえず入れておいて損はありません。
Microsoft Storeから入手できます。
WSL2をインストールする
-
管理者権限でPowerShellを起動し、
wsl --install
を実行します。これにより、既定のディストリビューションであるUbuntuがインストールされますPowerShellPS> wsl --install インストール中: 仮想マシン プラットフォーム 仮想マシン プラットフォーム はインストールされました。 インストール中: Linux 用 Windows サブシステム Linux 用 Windows サブシステム はインストールされました。 インストール中: Linux 用 Windows サブシステム Linux 用 Windows サブシステム はインストールされました。 インストール中: Ubuntu Ubuntu はインストールされました。 要求された操作は正常に終了しました。変更を有効にするには、システムを再起動する必要があります。
-
Windowsを再起動します
-
Ubuntuを起動します[1]。初回起動時は、セットアップに数分掛かります
UbuntuInstalling, this may take a few minutes...
-
ユーザーの作成を求められたら、指示に従ってユーザー名とパスワードを入力します
UbuntuPlease 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: ubuntu New password: Retype new password: passwd: password updated successfully Installation successful!
参考:
(オプション) プロキシ設定をする
PCが会社のプロキシ下にある場合は、Ubuntuでプロキシ設定(環境変数とapt用の設定)をします。
環境変数は、~/.profile
か~/.bashrc
に追記します。VSCodeのターミナルは、デフォルトではログインシェルとして起動しない(~/.profile
を読み込まない)ので、VSCodeのターミナルでもプロキシ設定を適用するには環境変数を~/.bashrc
に書くと楽です。
export http_proxy=http://proxy.example.com:8080
export https_proxy=http://proxy.example.com:8080
export no_proxy=example.com
export HTTP_PROXY=$http_proxy
export HTTPS_PROXY=$https_proxy
export NO_PROXY=$no_proxy
apt
用のプロキシ設定は、/etc/apt/apt.conf.d/
内に以下を記述したファイルを設置します。
Acquire::http::proxy "http://proxy.example.com:8080";
Acquire::https::proxy "http://proxy.example.com:8080";
VSCodeにWSL拡張機能をインストールする
VSCodeにWSL拡張機能をインストールします。
インストール後、WSLでVSCodeを使用するには、Ubuntuでcode .
と実行します。他にも、VSCodeのコマンドパレットや左下のリモート接続ボタンなどからもWSLに接続できます。
参考:
cfn-lintをインストールする
Ubuntuでcfn-lintをインストールします[2]。
sudo apt update && sudo apt upgrade -y
sudo apt install python3-pip -y
pip install 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
の設定に以下を追加する必要があります:
(オプション) Rainをインストールする
CloudFormationまわりを便利にするCLIツール「Rain」の使用も検討してみるとよいと思います。aws cloudformation deploy
コマンドより便利なrain deploy
コマンドが使えたり、rain bulild
でCloudFormationテンプレートを生成できたりします。
参考:
(オプション) VSCodeでAIコードジェネレーター「CodeWhisperer」を使用する
VSCodeにAWS Toolkit拡張機能をインストールすることで、AIコードジェネレーター「CodeWhisperer」を利用できます。
2023年11月に、CodeWhispererのIaC対応が発表されました。
AWS Toolkitには、他にも以下の機能が含まれています:
- Amazon Q:対話型AIです
- Application Composer:GUIでリソースを並べてCloudFormationテンプレートが作成できます
- CodeCatalyst:CodeCatalystのDev Environments(開発環境)にVSCodeからリモート接続できます
おまけ:AWS CLIをインストールする
必要な場合、AWS CLIをインストールします。
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install
参考:
コマンド補完を有効にしたい場合は、~/.bashrc
に以下を追記します。
complete -C '/usr/local/bin/aws_completer' aws
参考:
.aws
や.ssh
ディレクトリをWSLとWindowsで共有する
おまけ:AWS CLIやSSHをWindowsでもWSLでも使用する場合は、この設定をしておくと便利です:
おまけ:今いるGitブランチ名をプロンプトに表示する
Gitを利用する際は、作業中のブランチ名をプロンプト(user@host:~/repo$
の部分)に表示すると便利です。
例えば、(main)user@host:~/repo$
のように表示するには、~/.bashrc
に以下を追記します。
PS1='$(__git_ps1 "(%s)")'$PS1
もっと凝った表示をしたい場合は、検索すると色々出て来ますので調べてみてください。
-
Windowsのスタートメニューなどから探して起動してください ↩︎
-
"Ubuntu版の pip コマンドを使用する場合、非特権ユーザが pip install を実行すると、ホームディレクトリの ~/.local ディレクトリにインストールされます。" - pip: Python環境構築ガイド - python.jp ↩︎
-
再起動することで環境変数
PATH
が再設定され直ることを期待しています ↩︎ -
おそらく
$HOME/.local/bin/
↩︎
Discussion