最終更新:

TerraformとCloudFormationの違いは?状態管理と変更確認で比較


IaCの状態と変更確認 Terraform プロバイダー経由で管理 stateの保管・権限を設計 planで変更案を確認 バックエンドのロックを確認 CloudFormation AWSのスタックとして管理 状態はサービス側で管理 変更セットで変更案を確認 ドリフト検出は対応範囲あり 削除・置換・データ保持を実行前に確認 IaCの状態と変更確認 Terraform プロバイダー経由で管理 stateの保管・権限を設計 planで変更案を確認 バックエンドのロックを確認 CloudFormation AWSのスタックとして管理 状態はサービス側で管理 変更セットで変更案を確認 ドリフト検出は対応範囲あり 削除・置換・データ保持を実行前に確認
削除・置換・データ保持を実行前に確認
ひよこ ひよこ
IaCは同じ環境を必ず再現する仕組み?
ペンギン先生 ペンギン先生
インフラの構成をコードとして管理する考え方だよ。レビューや再利用に役立つけれど、同じコードでも権限、リージョン、外部サービス、プロバイダーの版などで結果は変わる。前提をそろえ、変更内容を確認する必要があるんだ。
ひよこ ひよこ
TerraformとCloudFormationの違いは?
ペンギン先生 ペンギン先生
Terraformはプロバイダーを通じて複数のクラウドやサービスを管理できる。CloudFormationはAWSのスタック管理と深く統合されたサービスだよ。AWS中心か複数サービス横断かは判断材料だけれど、それだけで選択が決まるわけではないね。
ひよこ ひよこ
書き方も違うの?
ペンギン先生 ペンギン先生
Terraformは主にHCL、CloudFormationはYAMLやJSONのテンプレートを使う。どちらも宣言した構成とリソースの対応を管理する。AWS CDKのようにプログラミング言語からCloudFormationのテンプレートを生成する選択肢もあるよ。
ひよこ ひよこ
Terraformのstateは何?
ペンギン先生 ペンギン先生
コード内のリソースと実際のリソースを対応付ける状態情報だよ。単なるキャッシュではない。チームでは保存先、アクセス権、バックアップ、同時実行を防ぐロックの対応を確認する。CloudFormationはサービス側でスタックの状態を管理するんだ。
ひよこ ひよこ
stateをGitに置いてもいい?
ペンギン先生 ペンギン先生
秘密情報が含まれることがあるので、通常のソースコードと同じに扱わないでね。sensitiveで画面表示を隠しても、stateへ保存されない保証ではない。stateやplanの保管、暗号化、アクセス権、履歴への混入を確認しよう。
ひよこ ひよこ
planや変更セットを見れば安全?
ペンギン先生 ペンギン先生
事前確認には役立つけれど、実行成功や無停止を保証するものではないよ。追加だけでなく削除・置換、データ保持、権限、依存関係を見る。planの確認後に別の変更が入った場合にも注意が必要だね。
ひよこ ひよこ
手動変更は全部検出できる?
ペンギン先生 ペンギン先生
Terraformではplanなど、CloudFormationではドリフト検出を利用できるけれど、管理対象や取得可能な属性に範囲があるよ。CloudFormationも非対応リソースはNOT_CHECKEDになる。差分がないことを、システム全体が完全一致している証明にしないでね。
ひよこ ひよこ
AWSだけならCloudFormation一択?
ペンギン先生 ペンギン先生
既存のモジュール、組織の権限・運用、必要なリソース対応を比べよう。TerraformをAWSだけに使うこともある。どちらでも、初めは影響範囲の小さい検証環境で、更新と失敗時の復旧まで確認するのが大事だよ。

管理責任の違い

観点TerraformCloudFormation
管理範囲プロバイダーで複数サービスへ対応AWS中心。拡張の対応範囲も個別確認
状態の保管バックエンド・権限・復元を設計AWS側がスタック状態を管理
事前確認plan変更セット
並行操作バックエンドのロック対応を確認スタックの操作と状態を確認
手動変更の検知取得・管理する属性に依存リソースとプロパティの対応に依存

適用前に確認すること

  • リソースの更新か、作り直す置換か、削除か。
  • データのバックアップ、保持設定、旧構成へ戻す際の条件。
  • 対象アカウント・リージョン・認証情報・実行者の権限。
  • 使用するプロバイダー、モジュール、テンプレートの版。
  • planやstateに秘密情報が含まれる可能性と保存先。

別のIaCツールへ移る場合、設定ファイルの変換だけでは既存リソースの所有権・状態管理は移りません。同じリソースを二つのツールで同時に変更しないよう、インポートや管理解除の手順を事前に検証します。

参考資料

確認日:2026年9月27日。製品の仕様・料金・対応環境は導入時にも確認してください。