変更要約: in-scope サービス網羅: Control Tower, Service Catalog, AWS Proton を s2 に、OpsWorks, License Manager, EC2 Image Builder を s3 に追記
2.1CloudFormation と IaC の基礎
インフラのコード化——CloudFormation(テンプレート/スタック)、変更セット(change set)、ドリフト検出、ネストされたスタック——を理解します。インフラを宣言的・再現可能に管理します。
Infrastructure as Code(IaC) はインフラをコードで宣言し、再現可能に構築します。AWS では CloudFormation が中核です。
2.1.1CloudFormation の仕組み
- テンプレート/スタック:YAML/JSON でリソースを宣言し、スタックとしてまとめて作成・更新・削除。
- 変更セット:更新を適用前にプレビューし、意図しない置換や削除を防ぐ。
- ドリフト検出:実構成がテンプレートからずれていないかを検出する。
- ネストされたスタック:共通テンプレートを部品化して再利用。大規模構成を整理する。
「適用前の差分プレビュー=変更セット」「手動変更などのずれ検出=ドリフト検出」「共通部品の再利用=ネストされたスタック」「失敗時の自動ロールバック」 は DOP-C02 で頻出です。本番は変更セットでレビューしてから実行するのが安全です。
CDK や SAM は最終的に CloudFormation テンプレートを生成します。CDK はプログラミング言語で IaC を書け、SAM はサーバーレス向けの簡潔な構文を提供します。
DOP-C02 ではテンプレートの機能を使いこなす設計力が問われます。Parameters で環境差分を外出しし、Mappings/Conditions でリージョンや環境ごとに分岐、Outputs と エクスポート/Fn::ImportValue や SSM パラメータ参照(dynamic references)でスタック間を疎結合に連携します。更新時の事故防止には、スタックポリシーで重要リソース(DB など)の置換を禁止し、リソース単位の DeletionPolicy: Retain / Snapshot で誤削除を防ぎ、UpdateReplacePolicy で置換時のデータ保全を図ります。更新が途中で失敗すると CloudFormation は前の状態へ自動ロールバックし、UPDATE_ROLLBACK_FAILED に陥った場合は手動での復旧(continue update rollback)が必要です。カスタムリソース(Lambda 実装)や マクロで標準外の処理を組み込め、Registry のサードパーティリソースタイプも扱えます。ドリフト検出は「テンプレート外で行われた手動変更」を洗い出すため、IaC の一貫性を保つ運用上の要です。本番では必ず変更セットでレビュー→実行の手順を踏みます。
| 目的 | 機能 | 要点 |
|---|---|---|
| 更新の差分を事前確認 | 変更セット | 置換/削除を適用前に把握 |
| 手動変更のずれ検出 | ドリフト検出 | 実構成とテンプレートの差分 |
| 重要リソースの保護 | スタックポリシー / DeletionPolicy | 置換禁止・誤削除防止(Retain/Snapshot) |
| 大規模構成の整理 | ネストされたスタック | 共通テンプレートを部品化して再利用 |
シナリオ:本番スタックの更新で、誤って RDS DB インスタンスが置換(=再作成でデータ消失)されるのを防ぎたい。→ まず 変更セットで「Replacement: True」になるリソースがないか確認。DB には DeletionPolicy: Snapshot と UpdateReplacePolicy: Snapshot を設定し、スタックポリシーで DB リソースの更新(置換)を拒否。これで誤った置換を技術的に止められます。
FAQ:スタック間で値を共有するには? 2 通りあります。Outputs のエクスポート+Fn::ImportValue は強い依存(エクスポート中は参照元を削除/変更できない)を作りますが明示的。SSM パラメータ参照(dynamic references)は疎結合で、参照先を後から変えやすいです。密に結びつけたいか、緩く保ちたいかで選びます。
ひっかけ:「手動でコンソール変更した分を CloudFormation に取り込みたい」場面で、ドリフト検出は差分を“検出”するだけで自動修正はしません。是正にはテンプレートを直して更新するか、リソースインポートを使います。また変更セットは「適用前のプレビュー」であって、実行しなければ何も変わりません。
2.1.2この節のまとめ
- IaC=CloudFormation(テンプレート/スタック)
- 安全運用=変更セット+ドリフト検出+ネストされたスタック
進捗の記録にはログインが必要です。
理解度チェック
(軽い確認用)Q1. CloudFormation スタックの更新を、実際に適用する前に変更内容(置換/削除を含む)をプレビューしたい。何を使いますか?
Q2. 誰かがコンソールで手動変更したため、実環境が CloudFormation テンプレートと食い違っているか確認したい。何を使いますか?
Q3. 複数のスタックで共通するネットワーク定義を部品化して再利用したい。何を使いますか?

