260807_cdkでAWSをビルドしよう

Date2026/08/07 Last Modified2026/08/07

概要

これまでAWSのインスタンスを立てるとなったら全部手動でやっていた。
VPCを立てて、ロードバランサー繋いで、ALBで振り分けて……。
これはこれで勉強になったのだが、「原始的すぎる」という声を受けたのでコマンド一つでビルドできる方法を調べてみた。

AWS CDKとは

原始的な世界が今までだとしたら、この設定の一覧をファイル管理にしたのがCloudFormationである。
CloudFormationでは、YAML形式でテンプレートを書いて渡せば、それだけでプロビジョニングしてくれるというのが素晴らしいところ。
しかし、YAMLを自分で組むのは大変……コードで書けるようにしたい!ということでAWS CDKというサービスが生まれた。

全体像を描くとこんな感じ

┌─────────────────────────┐
│ あなた                   │
│ 「VPCとEC2が欲しい」      │
└───────────┬─────────────┘
            │
            ▼
┌─────────────────────────┐
│ CDKコード                │
│ new Vpc()               │
│ new Instance()          │
└───────────┬─────────────┘
            │ cdk synth
            ▼
┌─────────────────────────┐
│ CloudFormation template │
│ AWS::EC2::VPC           │
│ AWS::EC2::Subnet        │
│ AWS::EC2::Instance      │
│ ...                     │
└───────────┬─────────────┘
            │ cdk deploy
            ▼
┌─────────────────────────┐
│ CloudFormation          │
│ AWS APIを呼び出す        │
└───────────┬─────────────┘
            │
            ▼
┌─────────────────────────┐
│ 実際のAWS               │
│ VPC                     │
│ Subnet                  │
│ EC2                     │
└─────────────────────────┘

アカウント管理

CDKを実行するにあたり、通常の個人アカウントでも良いがリスクを下げるにはCDK専用のIAMロール/ユーザーを作成すると良い。
コマンド一つでデプロイが進んでいくので、リスク管理は大事。

  • 操作可能なリソースの制限
  • 既存インスタンスへの操作権限を付与しない

気になること

  • 実行したら勝手に全部プロビジョニングされてしまうのか?
    まずはsynthでCloudFormation設計図(JSON/YAML)に起こすことができるので、段階がある。

  • 間違えて立ててしまったら全部手動で消す?
    設定次第でコマンドで完全に消すことができる。

  • エラーの場合どういう動きになる?(インスタンス数の上限とか)
    失敗時は自動ロールバックされるが、Stack単位であり、全AWSリソースが完全に元に戻るとは限らないらしい。