AWS CDKについて

Infrastructure as Code

AWS CDKを説明する上で外せない内容がInfrastructure as Codeと呼ばれる、インフラをコードで記述することによってバージョン管理、プロビジョニングの自動化 を行うことが可能となる技術についてである。

Infrastructure as Code(以下: IaC)は先述のようにインフラをコードで管理することでインフラのバージョン管理、プロビジョニングの自動化、構成管理等を行うことが出来る。
これにより、以下のような利点がある。

IaCにはさまざまなものが存在している。
以下は、その一例である。

例えば、ansibleはRedHat社が開発しているOpne Source Software(以下: OSS)であり、Python製のIaCである。
PlayBookと呼ばれるYAMLのファイルに設定情報など構成情報を定義し、定義されたPlayBookに従ってインフラの構築を行うIaCである。
そのため他のIaCに比べ学習が容易であり、導入しやすい
また、エージェントなどをサーバ側にインストールする必要がなく、pythonが動き、SSH接続ができる環境であればどのような環境でも実行することが出来、導入することができる。
一方で、複雑な構成を記述するのに向いていなかったり、条件分岐や反復などが重なると複雑化することがある。

このようにそれぞれのIaCごとに特徴などが存在する。
今回はその中でも『 **AWS CDK** 』について述べていく。

AWS CDKとは

AWS CDK (AWS Cloud Development Kit)とは、AWS (Amazon Web Service) が提供しているIaC(Infrastructure as Code)の一つである。
使用言語はTypeScript、Python、Java、Go、C#/.Net のサポートされている汎用言語を使用し、AWS CDK コンストラクトライブラリと呼ばれる再利用可能なと呼ばれる再利用可能なコードに対して再定義を行い短時間でインフラを構築する短時間でインフラを構築するものである。
その後、AWS CDKで記述されたコードはCDKアプリケーションはAWS CloudFormationを介してデプロイ、リリースされる形となる。

AWS CDKによる開発のおおまかな流れは以下のようになる。

  1. PythonやTypeScriptなどのサポートされている言語で構築するAWSリソースをせってする
  2. cdk synthを行い、AWS CloudFormationのテンプレートファイルを生成する
  3. cdk diffを行い、差分チェックを行う。
  4. cdk deployを行い、AWS環境にリソースを作成・反映を行う。

上記のステップを踏むことでインフラの設定や構築を行うことができる。そのためインフラの構築における設定ミスやデプロイメントに関しての負担などが大幅に軽減される。

本記事ではTypeScriptで記述を行っていくこととする。

AWS CDK事始め

1. 前提条件

AWS CDK (以下: CDK) ののインストールには npm (node package manager) を使用するためまず初めに node のインストールを行う。
インストールに関しては node の公式サイトを参照し、v22.x以上のものをインストールする。
インストール完了後、pathが通っておりnodeとnpmが使える状態であることを確認する。
以下、nodeの確認を実施した結果の例である。

$ node --version
v24.12.0

$ npm --version
11.7.0

次にローカル環境での開発においてAWS環境への認証等を行うためにAWS CLIをインストールを行う。 インストールに関しては AWS CLI の公式サイトを参照し、それぞれのOSに合った最新のバージョンをインストールする。
インストール後、pathが通っており、awsコマンドが使える状態であることを確認する。
以下、AWS CLIの確認を実施した例である。

$ node --version
aws-cli/2.27.41 Python/3.11.6 Linux/5.10.205-195.807.amzn2.x86_64

2. AWS CDKのインストール

上記の前提条件が整ったのち、npmを用いてaws cdkをインストールする。
インストールには以下の条件でそれぞれのコマンドを用いて実施する。