エンタープライズクラウド部の松田です。こんにちは。
AWS CDKに入門してみました。
色々触ってみたので、備忘として記事にしておきます。
はじめに
本記事では環境構築の手順をまとめます。
構築後に色々動かしてみるのは別の記事としてまとめる予定ですが、本記事では触れませんのでご容赦ください。
開発環境の概要
今回作る環境ですが、物理はWindowsで、その上にWSL2でUbuntu、更にその上にコンテナ(ここがCDK開発環境!)という構成です。
各レイヤーでは以下をインストールしています。
Windows(11 22H2)
- VS Code
- VS Code 拡張機能
- Remote Deployment
- Dev Containers
- WSL2
Ubuntu(22.04)
- Docker
コンテナ(Debian 11 Bullseye)
- AWS CLI
- AWS CDK
- Git
- Python3.11
- Node.js
- TypreScript
環境構築手順
環境構築の手順を記載します。
環境構築(Windows)
VS Code
下記の公式ページからダウンロードし、ウィザードに従ってインストールします。
以下ブログは参考まで(「VSCodeのインストール」の項に詳しく載っています)。
VS Code拡張機能(Remote Deployment)
VS Codeを起動し、拡張機能のアイコンをクリックして、検索窓から「Remote Deployment」を探します。
私の環境ではインストール済みなので表示されませんが、「Install」で拡張機能がインストールされます。
VS Code拡張機能(Dev Containers)
Remote Deploymentと同様に、検索窓から「Dev Container」を探してインストールします。
WSL2(Ubuntu 22.04)
Powershellを起動し、以下のコマンドを実行します。
wsl --install Ubuntu-22.04
参考までにブログを貼っておきます。Ubuntuのバージョンが違うため多少の差異はありますが、「手順2.WSL2インストール」の項をご参照ください。
セットアップ確認
ここまででWindows上での準備は完了です。
WSL2のコマンドラインで以下を実行し、VS Codeが起動するか確認しておきます。
code .
VS Codeが起動し、左下部に「WSL: Ubuntu-22.04」と表示されていればOKです。
ちなみにGUIからでもUbuntu環境にリモート接続可能です。左下部のアイコンをクリックし、「Connect to WSL」で同じように接続できます。
うまくいかない場合は、以下ページなどを参考に頑張ります。ハマってしまってなんだかよく分からなくなってきたときは、WSL2でインストールしたUbuntuをアンインストールして、最初からもう一度試すなどするとよいです。
環境構築(Ubuntu)
Docker
先んじてパッケージの更新をします。
sudo apt-get update sudo apt-get install ca-certificates curl gnupg
Dockerの公式GPGキーをダウンロードします。
sudo install -m 0755 -d /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg sudo chmod a+r /etc/apt/keyrings/docker.gpg
Dockerのリポジトリを追加します。
echo \ "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \ "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \ sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
Dockerをインストールします。
sudo apt-get update sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
ユーザーをDockerグループに追加し、sudoなしで実行できるようにします。 ※設定が反映されない場合があるため、WSLを再起動すると確実です。
sudo usermod -aG docker $USER
セットアップ確認
Dockerのバージョンが表示されるか確認します。
docker --version
hello-world
イメージををrunしてみます。Hello from Docker!
と表示されればOKです。
docker run hello-world
動作を確認したら、hello-world
は消しておきましょう。Conteiner IDは docker ps -a
で確認できます。
docker rm [hello-worldのContainer ID]
環境構築(コンテナ)
Dev Containerを使ってコンテナを起動します。
Ubuntuに適当なディレクトリを作り、その中に devcontainer/devcontainer.json
ファイルを作成します。
mkdir -p tmp/.devcontainer touch tmp/.devcontainer/devcontainer.json
devcontainer.json
の中身は以下としてください。
// For format details, see https://aka.ms/devcontainer.json. For config options, see the // README at: https://github.com/devcontainers/templates/tree/main/src/typescript-node { "name": "Node.js & TypeScript", // Or use a Dockerfile or Docker Compose file. More info: https://containers.dev/guide/dockerfile "image": "mcr.microsoft.com/devcontainers/typescript-node:1-20-bullseye", "features": { "ghcr.io/devcontainers/features/aws-cli:1": {}, "ghcr.io/devcontainers/features/docker-in-docker:2": {}, "ghcr.io/devcontainers/features/git:1": {}, "ghcr.io/devcontainers-contrib/features/aws-cdk:2": {}, "ghcr.io/devcontainers/features/python:1": { "installTools": true, "version": "3.11" } } }
VS Codeで適当に作ったディレクトリを開きます。
※後続の手順でコンテナのリビルドを行う際、VS Codeで開いたディレクトリの直下に .devcontainer
が無いとエラーになります。
画像の様になっていればOKです。
コマンドパレット(Ctrl + Shift + P)で Dev Containers: Rebuild and Reopen in Container
を実行します。これでコンテナが起動してきます。
左下部が「Dev Container: Node.js & TypeScript」となっていればOKです。コンテナにVS Codeでリモート接続している状態です。
必要な各ツールがインストールされていることを確認しておきます。
# AWS CLI $ aws --version aws-cli/2.13.25 Python/3.11.5 Linux/5.15.90.1-microsoft-standard-WSL2 exe/x86_64.ubuntu.22 prompt/off # CDK $ cdk --version 2.106.0 (build 0d1a333) # Git $ git --version git version 2.42.1 # Node.js $ node --version v20.9.0 # TypeScript $ tsc --version Version 5.2.2
まとめ
環境構築は以上で完了です。
準備だけでこれか...と面倒に感じられるかもしれませんが、Dev Containerを使うと環境の作り直しや複製がとにかく容易になります。かけた手間に見合うメリットはありますので、初学者であっても積極的に使っていくとよいかなと思います。
環境構築だけで思ったより長くなってしまったので、本記事はここまでとなりますが、実際にCDKを使ってリソースを作ったりといった続編も執筆予定です。
ここまでお読みくださりありがとうございました。
松田 渓(記事一覧)
2021年10月入社。散歩が得意です。