🏗️ AWS CDK

家づくり設計で理解する超入門ガイド

🎨 設計者 → 💻 CADソフト → 📋 設計図 → 🏠 完成した家

AWS CDKを、身近な家づくりの設計プロセスで例えて分かりやすく説明します!

🤔 まず、CDKって何?

📝 簡単に言うと...

プログラミング言語 (Python、JavaScript等)で書いた 設計指示書 を、 AWSが読める 正式な設計図面 (CloudFormation)に自動変換してくれるツールです

🏠 従来の家づくり

設計者 が手書きで
詳細な設計図 を一から作成


👆 時間がかかる...
👆 ミスも起きやすい...
📐 手作業 で図面を描く

💻 CDKを使った家づくり

設計者 が簡単な指示を
CADソフト に入力するだけ


✨ 自動で図面生成!
✨ ミスも少ない!
🎯 コード で指示を出す

🏗️ 4つの重要な要素を家づくりで理解

🎨

設計者
= あなた(開発者)

どんな家を建てたいか を決める人です。
「リビングは20畳、寝室は3つ、ガレージ付き」
といった 要件をPythonコード で書きます。

app = cdk.App()
house = House(app, "MyHouse")
# 家の設計指示をコードで記述
💻

CDK
= CADソフト

高性能な設計ソフト です。
設計者の簡単な指示を受けて、
詳細な設計図面を自動生成 してくれます。

特徴: Python → CloudFormation変換
📋

CloudFormation
= 正式な設計図面

建築業者が読める形式 の図面です。
材料の寸法、配置、配線など、
全ての詳細情報 が含まれています。

形式: JSON/YAML(機械が読める形式)
🏠

AWSリソース
= 完成した家

実際に建てられた家 です。
EC2(部屋)、S3(倉庫)、RDS(地下室)など、
設計図通りに構築 されます。

例: EC2, S3, Lambda, RDS等

🔄 設計から完成までの流れ

🎨

1. 設計者(あなた)

Pythonコード で家の要件を記述

from aws_cdk import aws_ec2 as ec2

vpc = ec2.Vpc(self, "MyVpc",
max_azs=2,
nat_gateways=1
)
💻

2. CDK(CADソフト)

自動変換処理 でCloudFormation形式に

cdk synth コマンドで変換実行
📋

3. CloudFormation

JSON/YAML形式 の詳細設計図

{
"Type": "AWS::EC2::VPC",
"Properties": {
"CidrBlock": "10.0.0.0/16",
"EnableDnsHostnames": true
}
}
🏠

4. AWSリソース

実際に構築 されたインフラ

VPC、EC2、RDS等が自動作成

📊 従来の方法 vs CDKの比較

📐 従来のCloudFormation直書き

😰 大変なポイント:

  • JSON/YAMLを手書き
  • 数百〜数千行のコード
  • 文法ミスでエラー頻発
  • 再利用が困難
  • テストが大変

💀 例: 簡単なVPCでも100行以上!

🚀 CDKを使った場合

✨ 楽になるポイント:

  • Pythonの簡潔な記述
  • 数十行で済む
  • IDEで自動補完
  • 関数化で再利用可能
  • ユニットテスト対応

例: 同じVPCが10行程度!

💡 具体的な違いを見てみよう

📐 CloudFormation(従来)

{
"AWSTemplateFormatVersion": "2010-09-09",
"Resources": {
"MyVPC": {
"Type": "AWS::EC2::VPC",
"Properties": {
"CidrBlock": "10.0.0.0/16",
"EnableDnsHostnames": true,
"EnableDnsSupport": true
}
},
"PublicSubnet": {
"Type": "AWS::EC2::Subnet",
"Properties": {
"VpcId": {"Ref": "MyVPC"},
"CidrBlock": "10.0.1.0/24",
"AvailabilityZone": "us-east-1a"
}
}
// さらに100行以上続く...
}
}

🚀 CDK(Python)

from aws_cdk import aws_ec2 as ec2

class MyStack(Stack):
def __init__(self, scope, id):
super().__init__(scope, id)

# VPCを作成(自動でサブネット等も作成)
vpc = ec2.Vpc(self, "MyVpc",
max_azs=2,
nat_gateways=1
)

# たったこれだけ!

📋 実際の設定手順(超簡単版)

1

設計環境を準備する

CDK開発環境のセットアップ
→ 設計ソフト(CDK)をパソコンにインストール
→ AWSアカウントの設定(設計事務所への登録)

npm install -g aws-cdk # CDKインストール
pip install aws-cdk-lib # Python用ライブラリ
2

設計プロジェクトを開始

新しいCDKプロジェクトを作成
→ 新しい家づくりプロジェクトフォルダを作成
→ 基本的なファイル構成が自動生成される

mkdir my-house-project
cd my-house-project
cdk init app --language python
3

家の設計をコードで書く

Pythonコードで設計指示を記述
→ 「こんな家が欲しい」をコードで表現
→ VPC、EC2、RDS等の構成を定義

# EC2インスタンス(部屋)を追加
instance = ec2.Instance(self, "WebServer",
instance_type=ec2.InstanceType("t3.micro"),
machine_image=ec2.AmazonLinuxImage(),
vpc=vpc
)
4

設計図面を生成する

CDKでCloudFormation形式に変換
→ CADソフトで正式な図面を生成
→ Python → JSON/YAMLの自動変換

cdk synth # 設計図面を生成
# cdk.out/フォルダにCloudFormationファイル作成
5

実際に家を建てる

AWSに実際のリソースを構築
→ 設計図面を建築業者(AWS)に渡して施工開始
→ EC2、VPC等が自動的に作成される

cdk deploy # 実際にAWSリソースを作成
# ※初回は「cdk bootstrap」が必要
6

完成・運用開始

インフラ完成!
→ 設計通りの家が完成
→ Webアプリケーション等の運用開始可能

✅ AWSコンソールで作成されたリソースを確認

🏠 実際のコード例:シンプルなWebアプリ環境

🎯 今回作る家の間取り

Webサーバー(リビング)+ データベース(地下室)+ ネットワーク(基礎・配管)

from aws_cdk import (
Stack,
aws_ec2 as ec2,
aws_rds as rds
)
from constructs import Construct

class MyWebAppStack(Stack):
def __init__(self, scope: Construct, construct_id: str, **kwargs):
super().__init__(scope, construct_id, **kwargs)

# 1. 基礎工事:ネットワーク(VPC)を作る
vpc = ec2.Vpc(self, "MyVpc",
max_azs=2,  # 2つの区域に分ける
nat_gateways=1  # インターネット接続用の入口
)

# 2. リビング:Webサーバー(EC2)を設置
web_server = ec2.Instance(self, "WebServer",
instance_type=ec2.InstanceType("t3.micro"),
machine_image=ec2.AmazonLinuxImage(),
vpc=vpc,
security_group=web_sg
)

# 3. 地下室:データベース(RDS)を設置
database = rds.DatabaseInstance(self, "Database",
engine=rds.DatabaseInstanceEngine.mysql(),
instance_type=ec2.InstanceType("t3.micro"),
vpc=vpc
)

# メインファイル(app.py)
app = cdk.App()
MyWebAppStack(app, "MyWebAppStack")
app.synth()
🏠

VPC(基礎)

家の基礎部分
すべてのリソースが
安全に配置される土台

💻

EC2(リビング)

Webサーバー
お客さんを迎える
メインの居住空間

🗄️

RDS(地下室)

データベース
重要なデータを
安全に保管する場所

🔌

セキュリティ

防犯システム
不正アクセスから
家全体を守る仕組み

❓ よくある質問

🤔 なぜCDKを使うの?CloudFormationじゃダメ?
💰 CDKは無料?お金はかかるの?
🐍 Pythonが苦手でも大丈夫?
🔧 CDKの学習はどうやって始める?
⚠️ CDKのデメリットはある?

✨ CDKのメリット

🚀

開発速度向上

100行のCloudFormationが10行のPythonで書ける

🔄

再利用性

関数化・クラス化で同じ構成を何度でも使い回し可能

🛡️

型安全性

IDEの自動補完で設定ミスを事前に防止

🧪

テスト可能

ユニットテストでインフラの品質を保証

📚

バージョン管理

Gitでインフラの変更履歴を完全に追跡

🌍

マルチ環境

開発・検証・本番環境を同じコードで管理

🎯 まとめ

🎨 設計者(あなた) = 家づくりの要件をPythonで記述

💻 CDK(CADソフト) = 簡単な指示を詳細な設計図に自動変換

📋 CloudFormation(設計図) = AWS用の正式な建築図面

🏠 AWSリソース(完成した家) = 実際に動く本番インフラ


この4つの連携により、 コードでインフラを管理 できます!


🎯 初心者へのアドバイス:

  • まずは公式チュートリアルから始める
  • 簡単なVPC+EC2構成から実践
  • 分からないことはコミュニティで質問
  • 小さく始めて徐々に複雑な構成にチャレンジ

🚀 次のステップ

1. AWS CDK公式ワークショップを試す
2. GitHubでサンプルプロジェクトを探す
3. 実際に簡単なWebアプリ環境を構築してみる

Created by SSuzuki1063

AWS SAP Learning Resources

Created by SSuzuki1063

AWS SAP Learning Resources