
CloudFormationでAWSリソースを作成しよう!Terraformとの違いも徹底解説
AWSのインフラ管理を自動化するためのツールとして、AWS CloudFormationとTerraformはよく比較されます。本記事では、CloudFormationを使ったAWSリソースの作成手順を解説しつつ、Terraformとの違いを徹底解説します。
どちらを選ぶべきか迷っている方は必見です!
IaC全般に共通の利点
Infrastructure as Code(IaC)は、インフラ環境をコードとして管理・定義する手法です。これにより、手動での設定ミスを防ぎ、効率的なリソース管理が可能になります。本章では、IaC全般に共通する利点について解説します。
リソースデプロイの自動化
IaCを用いることで、AWSリソースのデプロイを自動化できます。コードを実行するだけで、複数のリソースを一貫して作成・設定できるため、手動操作にかかる時間と労力を削減できます。
たとえば、CloudFormationではテンプレートファイルを使用して、EC2インスタンスやS3バケットなどのリソースを一括作成可能です。同様に、Terraformもコードを実行することで同様の自動化を実現します。これにより、インフラ構築のスピードと正確性が大幅に向上します。
再現性の高いリソース作成が可能
IaCではコードとしてインフラ定義を記述するため、同じコードを使用することで何度でも同一の環境を再現できます。これにより、テスト環境や本番環境を容易に複製でき、環境間の整合性を維持できます。
たとえば、CloudFormationではテンプレートファイルをGitリポジトリなどで管理し、環境ごとに異なるパラメータのみを変更することで、複数の環境に対して同じ構成を簡単に展開できます。Terraformも同様に状態ファイルを用いて環境の整合性を管理します。
バージョン管理が可能
IaCはコードとしてインフラ設定を管理するため、Gitなどのバージョン管理システムを活用できます。これにより、設定変更の履歴を追跡し、必要に応じて過去の状態にロールバックすることも容易です。
たとえば、CloudFormationのテンプレートファイルやTerraformのコードをGitHubで管理することで、誰がいつどのような変更を加えたかを把握できます。これにより、チーム内でのコラボレーションが円滑になり、インフラ管理の透明性も向上します。
CloudFormationとTerraformの違い
項目 | CloudFormation | Terraform |
特徴 | AWSのリソースに特化 | マルチクラウド対応 |
言語 | json、yaml | HCL(可読性が高く、初心者にも扱いやすい) |
サポート体制 | AWS公式のサポートを受けられる | オープンソースのため専用サポートはないが、解説記事が豊富 |
管理のシンプルさ | シンプルなリソース管理が可能 | 複雑な構成管理も柔軟に対応可能 |
CloudFormationとTerraformの大きな違いは、使用する言語です。
CloudFormationはjsonもしくはyamlという言語で記述しますが、TerraformはHashiCorpのHCL言語で記述します。json、yamlに比べ、HCLは読みやすく理解しやすい言語と言われています。
また、CloudFormationはAWSリソースに特化したIaCです。一方でTerraformはオンプレミスやAWS、Azureなどマルチベンダーに対応しています。実際にどちらも利用してみた結果、これからIaCを使用してみたいという方にはマルチベンダーに対応しており扱いやすいためTerraformがおすすめです。
IaCではリソース作成時に時間がかかることが多いですが、Terraformは待つだけで作成の成功、失敗の確認が可能です。しかし、CloudFormationはリソース作成が失敗したか成功したか確認するために随時更新が必要です。
TerraformからCloudFormationへの変換が可能
TerraformとCloudFormationは相互変換が可能であり、インフラ構成の柔軟な移行や管理が実現できます。TerraformではTerraformerなどのツールを使用してTerraformコードをCloudFormationに変換でき、逆にCloudFormationのテンプレートをTerraform形式に変換するツールも存在します。
この機能により、既存のコード資産を活用しながら、運用要件やクラウド戦略の変更に柔軟に対応できます。マルチクラウド環境や統合管理を目指す際に非常に有効です。
CloudFormationの主要コンポーネント
テンプレート
CloudFormationのテンプレートは、AWSリソースの構成を定義するファイルです。JSONまたはYAML形式で記述され、リソース、パラメータ、条件、出力値などを指定できます。コード管理により再現性と自動化が強化されます。
スタック
スタックは、テンプレートに基づいて作成されたAWSリソース群の集合体です。まとめて作成・更新・削除が可能で、依存関係も自動的に解決されます。運用や変更管理が効率化されるのが特徴です。
StackSets
StackSetsは、複数のAWSアカウントやリージョンにまたがって同じスタックをデプロイする機能です。グローバル環境や複数アカウントの一元管理に役立ち、統一されたリソース配置を実現します。
ドリフト検出
ドリフト検出は、CloudFormationが管理するリソースと実際のリソース状態に差異(ドリフト)がないかを検出する機能です。手動変更や設定ミスを可視化し、構成の一貫性維持やコンプライアンス管理を強化します。
CloudFormationでリソースを作成する手順
AWSのCloudFormationを使用してリソースを作成する手順を解説します。
AWS Management Consoleを使用してスタックを作成する方法
- テンプレートファイルを作成する
- AWS Management Consoleを使用してスタックを作成する
- スタックの作成状況を確認する
- 必要に応じてスタックを更新する
- スタックを削除する(リソースが不要になった場合
AWSのマネージドコンソールを開く
マネージドコンソールでCloudFomationのページを開きます。

スタックのページで「スタックの作成」をクリックします。

JSONもしくは、YAMLのテンプレートファイルを持っている場合は、「既存のテンプレートを選択」を選択しますが、今回は1からテンプレートを作成するため、「Infrastructure Composer からビルド」を選択します。

JOSNやYAMLのコードの書き方がわからない場合は、Canvas上にドラッグ&ドロップでリソースを配置し、つなげることでテンプレート作成も可能です。

今回は、Templateを選択してyamlでAWSリソースを作成するコードを書きます。

Templateのコード入力画面に以下のコードを記述します。
今回は、MyCloudFormationVPC という名前のVPCを作成するコードを書きます。
AWSTemplateFormatVersion: “2010-09-09” Description: Create a single VPC Resources: MyVPC: Type: AWS::EC2::VPC Properties: CidrBlock: 10.0.0.0/16 EnableDnsSupport: true EnableDnsHostnames: true Tags: – Key: Name Value: MyCloudFormationVPC Outputs: VPCId: Description: The ID of the created VPC Value: !Ref MyVPC |
コードの入力完了後は、Create Templateをクリックします。
テンプレートは Infrastructure Composer から正常にインポートされました。
と、出ていれば正常にコードが記述されているため「次へ」をクリックします。

スタック名に「OpsToday-CF-test」と入力して「次へ」を選択します。

確認して作成の画面で、「送信」をクリックするとリソース作成が始まります。

画像のように、「CREATE_COMPLETE」となればリソース作成が完了です。

VPCのページでMyCloudFormationVPCが作成されていることを確認します。

CloudFormationでのリソース作成手順はこれで終了です。
最後に、今回作成したリソースを削除します。
再びCloudFormationのページに戻り、スタックの「削除」をクリックします。

まとめ
CloudFormationとTerraformは、どちらもインフラをコード化して効率的に管理できるツールです。
CloudFormationはAWSに特化し、AWSサービスとの深い統合や無料で利用できる点がメリットです。一方、Terraformはマルチクラウド対応と柔軟性が強みです。目的や環境に応じて適切なツールを選ぶことで、管理の効率化や運用負荷の軽減が可能です。
この記事を参考に、CloudFormationを使ってAWSリソースを構築し、最適なインフラ管理を目指してください!
別の記事で応用編として、CloudFormationでVPC以外のリソースも作成し、Checkovでセキュリティチェックを行う方法を解説しています。合わせてご覧ください。