コンテンツにスキップ

CloudFormation

CloudFormation は AWS ネイティブの IaC サービス。

どういう場面で使うか

  • AWS だけで完結したいとき
  • AWS 標準機能に寄せて管理したいとき
  • Stack 単位で構成管理したいとき
  • テンプレートを AWS ネイティブに保ちたいとき

まず押さえたいこと

  • YAML / JSON で AWS リソースを定義する
  • Stack 単位で作成・更新・削除する
  • Change Set で差分確認できる

Stack と StackSet の違い

  • Stack: 1 つの AWS アカウント / リージョンに対してテンプレートを適用する単位
  • StackSet: 複数アカウント / 複数リージョンへ同じテンプレートを配る仕組み

どう使い分けるか

  • 単一環境へ作るなら Stack
  • 複数アカウントや複数リージョンへ同じ構成を展開したいなら StackSet
  • Organizations 配下に横展開したい場合は StackSet が効く

ざっくりイメージ

Stack
  -> 1 account + 1 region に作る

StackSet
  -> 同じ template を
     複数 account / 複数 region に配る

見るポイント

  • Parameters / Resources / Outputs の整理
  • Stack の分割粒度
  • 手動変更で drift していないか
  • 複数環境配布が必要なら StackSet を使うべきか

最初の理解で十分なこと

  • Resources が本体
  • Parameters で環境差分を吸収
  • Outputs で他スタック連携
  • Change Set で反映前に確認
  • StackSet は運用対象を複数へ広げる仕組み

よくある注意点

  • 1 スタックに詰め込みすぎると追いにくい
  • 手動変更が入ると drift しやすい
  • AWS の概念をそのまま理解していないと読みづらいことがある

メモ

  • AWS 専用で考えるなら CloudFormation は素直に使いやすい
  • Terraform より AWS 寄りの学習コストで始めやすい一方、他クラウド展開は考えにくい
  • まずは Stack を理解し、その後に複数展開要件が出たら StackSet を考えると入りやすい