AWS CDK(Cloud Development Kit)は、インフラストラクチャをコードで管理するためのツールです。
CDKを使用することで、AWSリソースを特定のプログラミング言語で定義し、構築していくことができます。
本記事では、「Dockerを使って、CDKプロジェクトを作成する」最初の1歩を、実際に手を動かしながら身につけていきましょう!
本記事の使い方
記事は、問題と解答で構成されています。
- 問題は、上から順に進めてください。
- 分からない問題があった場合は、先に解答を確認してください。
- できれば、1つの問題も3回ぐらい手を動かして解いて、理解度を深めてください。
本記事を通して身につくスキル
本記事では、問題を通して、下記のスキルを身につけることができます。
- 簡単なDockerfileの作成
- Dockerコンテナのビルド/起動/接続
- CDKプロジェクトの作成
前提
- 作業端末上のプロジェクトディレクトリに「aurora-cdk」ディレクトリを作成してください。
問題
要件を満たす、Dockerfileを作成してください。
要件
- ベースイメージに「node:20.15.1-slim」を使ってください。
- TypescriptとAWS CDKをnpmコマンドで、グローバルインストールしてください。
- WORKDIRに「aurora-cdk」ディレクトリを指定してください。
1で作成したコンテナをビルドした後、コンテナに接続してください。
要件
- 1で作成したコンテナをビルドしてください。コンテナには、タグ名として「cdk-ts」を付与してください。
- ビルドしたコンテナを起動させ、接続してください。なお、以下も合わせて実現させてください。
- 「コンテナを停止させると自動的にコンテナが削除される」オプションを使って、コンテナを起動させてください。
- ローカルディレクトリ「aurora-cdk」とコンテナ内の「aurora-cdk」ディレクトリを同期させてください。
- bashを起動させて、シェルにアクセスしてください。
CDKプロジェクトを作成してください。
要件
- CDKプロジェクトのテンプレートタイプに「app」を指定してください。
- プログラミング言語は、Typescriptを指定してください。
解答
(解答)要件を満たす、Dockerfileを作成してください。
FROM node:20.15.1-slim
RUN npm install -g typescript aws-cdk
WORKDIR /aurora-cdk
(解答)1で作成したコンテナをビルドした後、コンテナに接続してください。
タグ名「cdk-ts」を付与して、Dockerイメージをビルドします。
$ docker build -t cdk-ts .
次は、ビルドしたDockerイメージからコンテナを起動させます。
$ docker run --rm -v ./aurora-cdk:/aurora-cdk -it cdk-ts bash
runコマンドに使用した、各オプションを解説します。
オプション | 解説 |
---|---|
–rm | コンテナを停止させると、自動的にコンテナが削除されるオプションです。一時的なコンテナを起動させたい場合に有効です。 今回は、CDKプロジェクトを作成するための一時的なコンテナを作成したいので、このオプションを利用しました。 |
-v [ホストのパス]:[コンテナのパス] | 「ホストのパス」で指定されたディレクトリを「コンテナのパス」にマウントします。(=指定されたディレクトリがホストとコンテナ間で同期することが可能になります) |
-it | シェルを起動させ、コンテナ内に接続するためのオプションです。(本来のオプションの説明とは少し異なりますが、今回はこの捉え方で大丈夫です。) |
なお、「cdk-ts」は起動させるDockerイメージ名、「bash」はコンテナ内で起動させるコマンドになります。
(解答)CDKプロジェクトを作成してください。
/aurora-cdkディレクトリ内で、cdk initコマンドを実行してCDKプロジェクトを作成します。
$ pwd
/aurora-cdk
$ cdk init app --language typescript
今回はCDKアプリケーションを作成するため、テンプレートのタイプに「app」を指定します。 他にもライブラリやサンプルアプリケーションなどもあるので、気になる方は以下のリンクを参照してください。
cdk init – AWS Cloud Development Kit (AWS CDK) v2
おわりに
お疲れ様でした。以上で、本記事は終了となります。
他にも問題を用意していくので是非ご覧ください。