AWS CDK
TypeScript や Python などのプログラミング言語で AWS インフラを定義する IaC フレームワーク
何ができるか
AWS CDK (Cloud Development Kit) は、TypeScript、Python、Java、C#、Go などの汎用プログラミング言語を使って AWS インフラをコードで定義する IaC (Infrastructure as Code) フレームワークです。条件分岐、ループ、関数などのプログラミング言語の機能をフル活用してインフラを記述でき、定義したコードは CloudFormation テンプレートに変換されてデプロイされます。高レベルの抽象化 (Constructs) により、少ないコードで複雑なインフラを構築できます。
どのような場面で使うか
サーバーレスアプリケーションのインフラ定義、マイクロサービスアーキテクチャの環境構築、CI/CD パイプラインの自動構築、複数環境 (開発・ステージング・本番) のインフラ管理などに利用されています。プログラミングに慣れた開発者が、YAML/JSON の記述なしにインフラを構築したい場合に特に適しています。 この分野について体系的に学びたい方は、関連書籍 (Amazon) も参考になります。
身近な例え
レゴブロックに例えるとわかりやすいでしょう。CloudFormation が 1 つ 1 つの小さなブロック (個別リソース) を組み立てる作業だとすると、CDK は完成済みのパーツセット (Constructs) を組み合わせる作業です。「家セット」(Web アプリ構成) を選べば、壁、屋根、ドア (VPC、ALB、ECS) が一式揃っており、少ない手順で完成します。
AWS CDK とは
この記事は約 2 分で読めます。 AWS CDK は、プログラミング言語で AWS インフラを定義するフレームワークです。従来の CloudFormation では YAML や JSON でリソースを記述しますが、CDK では TypeScript や Python などの使い慣れた言語で記述できます。IDE の補完機能やコンパイル時の型チェックが使えるため、設定ミスを早期に発見でき、開発効率が大幅に向上します。
Constructs の仕組み
CDK の中核は Constructs (コンストラクト) と呼ばれる再利用可能なコンポーネントです。L1 Constructs は CloudFormation リソースと 1 対 1 で対応し、L2 Constructs はベストプラクティスが組み込まれた高レベルの抽象化です。たとえば、L2 の Bucket クラスを使えば、暗号化やバージョニングが適切に設定された S3 バケットを数行で作成できます。L3 Constructs (Patterns) は複数リソースの組み合わせを 1 つのコンポーネントにまとめたものです。
CloudFormation との関係
CDK で記述したコードは、cdk synth コマンドで CloudFormation テンプレートに変換 (合成) されます。デプロイは CloudFormation を通じて行われるため、CloudFormation のスタック管理、変更セット、ロールバックなどの機能がそのまま利用できます。CDK は CloudFormation の「上位レイヤー」であり、CloudFormation を置き換えるものではなく、より使いやすくするためのツールです。
はじめかた
npm install -g aws-cdk で CDK CLI をインストールし、cdk init app --language typescript で新しいプロジェクトを作成します。lib/ ディレクトリのスタックファイルにリソースを定義し、cdk deploy でデプロイします。初回は cdk bootstrap コマンドで CDK 用の S3 バケットと IAM ロールを作成する必要があります。cdk diff で変更内容を事前確認できます。
Azure・オンプレミスとの比較
AWS の優位点
- TypeScript、Python、Java など汎用プログラミング言語で記述できるため、IDE の補完、型チェック、リファクタリング機能をフル活用でき、YAML/JSON の記述ミスを防止できる
- L2/L3 Constructs によりベストプラクティスが組み込まれた高レベルの抽象化が提供され、少ないコードで安全なインフラを構築できる
- CloudFormation をバックエンドとして使用するため、スタック管理、変更セット、ドリフト検出、ロールバックなどの成熟した機能をそのまま利用できる
注意点
- CDK 自体は無料のオープンソースツールで、デプロイされた AWS リソースに対してのみ料金が発生する
- CDK のバージョンアップ時に破壊的変更が含まれる場合があるため、バージョンの固定と変更履歴の確認を推奨する
- cdk bootstrap は AWS アカウントとリージョンの組み合わせごとに 1 回実行が必要。チーム開発では最初に 1 人が実行すればよい
さらに詳しく知りたい方は、関連書籍 (Amazon) で理解を深められます。