最終更新:
TerraformとCloudFormationの違いは?状態管理と変更確認で比較
IaCは同じ環境を必ず再現する仕組み?
TerraformとCloudFormationの違いは?
書き方も違うの?
Terraformのstateは何?
stateをGitに置いてもいい?
planや変更セットを見れば安全?
事前確認には役立つけれど、実行成功や無停止を保証するものではないよ。追加だけでなく削除・置換、データ保持、権限、依存関係を見る。planの確認後に別の変更が入った場合にも注意が必要だね。
手動変更は全部検出できる?
Terraformではplanなど、CloudFormationではドリフト検出を利用できるけれど、管理対象や取得可能な属性に範囲があるよ。CloudFormationも非対応リソースはNOT_CHECKEDになる。差分がないことを、システム全体が完全一致している証明にしないでね。
AWSだけならCloudFormation一択?
管理責任の違い
| 観点 | Terraform | CloudFormation |
|---|---|---|
| 管理範囲 | プロバイダーで複数サービスへ対応 | AWS中心。拡張の対応範囲も個別確認 |
| 状態の保管 | バックエンド・権限・復元を設計 | AWS側がスタック状態を管理 |
| 事前確認 | plan | 変更セット |
| 並行操作 | バックエンドのロック対応を確認 | スタックの操作と状態を確認 |
| 手動変更の検知 | 取得・管理する属性に依存 | リソースとプロパティの対応に依存 |
適用前に確認すること
- リソースの更新か、作り直す置換か、削除か。
- データのバックアップ、保持設定、旧構成へ戻す際の条件。
- 対象アカウント・リージョン・認証情報・実行者の権限。
- 使用するプロバイダー、モジュール、テンプレートの版。
- planやstateに秘密情報が含まれる可能性と保存先。
別のIaCツールへ移る場合、設定ファイルの変換だけでは既存リソースの所有権・状態管理は移りません。同じリソースを二つのツールで同時に変更しないよう、インポートや管理解除の手順を事前に検証します。
参考資料
確認日:2026年9月27日。製品の仕様・料金・対応環境は導入時にも確認してください。
- Terraform: State:構成と実リソースの対応付け。
- Terraform: Sensitive data:state・planの秘密情報と保護。
- Terraform: State locking:バックエンドごとのロック対応。
- AWS: CloudFormation:テンプレートとスタックの管理。
- AWS: Change sets:変更確認と実行成功の保証の違い。
- AWS: Drift detection:検出対象と非対応リソース。