CDK

【VPC外リージョンサービス】

CDK(Cloud Development Kit)は、プログラミング言語でAWSリソースを定義・構築できる IaC(Infrastructure as Code)ツール です。

TypeScript / Python / Java / C# / Go などの一般的な言語に対応し、抽象化された Construct(コンストラクト) を活用して、AWS CloudFormation の Template を自動生成します。

App / Stack / Resource / L1~L3 Construct といった構造でコードを整理でき、cdk init / synth / deploy / diff / destroy / context のCLIコマンドを利用して、環境構築・差分デプロイ・削除を容易に実行できます。また、Construct Library によるモジュール化・再利用性・抽象化を通じて、宣言的かつ テスト可能 なインフラ設計を実現します。

開発者は、再利用可能な構成要素を使って効率的にスタックを管理でき、チーム開発での一貫性確保やCI/CD(CodePipeline / CodeBuild連携)を含む自動化を促進する、柔軟で拡張性の高いインフラ管理基盤を構築できます。

重要用語

App
Stack
Resource
L1~L3 Construct

ユースケース

プログラミング言語でのインフラ定義TypeScriptやPythonなどの一般的な言語を使ってインフラ構成を定義し、コードとして再利用しやすいモジュール化を行う。
アプリケーションとインフラの一体管理アプリケーションコードと同じリポジトリでCDKコードを管理し、アプリの変更とインフラ変更を一緒にレビュー・デプロイできるようにする。
ベストプラクティスを組み込んだコンストラクトの再利用セキュリティ設定やログ設定などをあらかじめ組み込んだCDK Constructを社内ライブラリとして用意し、毎回同じパターンで安全な環境を構築する。

ベストプラクティス

コードとしてのインフラ管理CloudFormationテンプレートをコードで記述し、レビューとテストを行う。
コンストラクトの再利用共通パターンをカスタムコンストラクトとして再利用する。
バージョン管理とCI/CDCDKアプリをリポジトリで管理し、パイプラインで自動デプロイする。

セキュリティ

関連サービス設定内容
CloudTrail(操作履歴の記録・監査・追跡)【自動記録】
作成・更新・削除・設定変更は自動記録される。(コントロールプレーンAPI)
データ操作は追跡できない(データプレーンAPI)
Config(リソースの構成状態・設定変更を記録)-
GuardDuty(脅威を自動検出)【GuardDutyが有効な場合】
IaCデプロイを通じた不正なリソース変更のAPI異常検知
制限値(固定値/ハードリミット/ソフトリミット)
固定値制限値
デプロイサイズCloudFormation制限に従う

ソフトリミット制限値
CDKスタック内に定義できるリソース数500(CloudFormation制限)

AWS CLIのサンプルコード

CloudFormationのサンプルコード

Terraformのサンプルコード

料金計算

課金項目説明
AWS CDK 自体は無料デプロイされるリソースに課金

公式ページ

AWSドキュメント CDK