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を考えると入りやすい