リソース管理の効率化を可能にするAWS CloudFormation

最終更新日: 2026年8月7日

リソース管理の効率化を可能にするAWS CloudFormation

AWS CloudFormationは、AWSリソースのプロビジョニングと管理をコードで自動化できるIaC(Infrastructure as Code)サービスです。JSON/YAML形式のテンプレートに必要なリソース構成を記述するだけで、EC2・VPC・RDS・S3など1,000種類以上のAWSリソースを一括で作成・更新・削除できます。

主な利用目的

AWS CloudFormationは以下の目的でよく利用されています。

  • AWSリソースの構築と管理を効率化したい
  • 開発標準に基づいてインフラストラクチャを作成・変更したい
  • リソースの依存関係やプロビジョニング順序を確実にしたい
  • ソフトウェアのようにインフラをコード化し、バージョン管理・レビューをしたい

AWS CloudFormationとは

Amazon Web Services(AWS)のサービスの1つで、AWSでのプロビジョニングと管理を簡素化するサービスです。利用者はAWSリソースに関するテンプレートを作成してAWS CloudFormationに渡すと、CloudFormationがリソースのプロビジョニングと設定を自動で行います。リソース間の依存関係もテンプレートから自動判定されるため、プロビジョニング順序を意識する必要がありません。

AWS CloudFormationの主な特徴

インフラストラクチャをテキストファイルでモデル化

プロビジョニングされたリソースと設定がテンプレート(テキストファイル)に正確に記述されます。ソースコード管理ツール(GitなどのVCS)でテンプレートを管理することで、インフラ変更の追跡・レビュー・ロールバックが可能です。

安全な自動管理

インフラのプロビジョニングと更新を自動化することで、手動操作によるミスを防ぎます。

変更のプレビュー(変更セット)

スタックを更新する前に「変更セット」を生成して、変更が既存リソースに与える影響をプレビューできます。

依存関係の自動管理

スタックの作成・変更・削除時のリソース間の依存関係はCloudFormationが自動処理します。

クロスアカウント・クロスリージョン管理(StackSets)

1つのテンプレートを使って、複数のAWSアカウントやリージョンに同じリソース構成を一括デプロイできます。

バージョン管理

テンプレートをGit等で管理することで、インフラアーキテクチャのバージョン管理とコードレビューが可能です。

AWS CloudFormationのメリット・デメリット

メリット

  • 一度テンプレートを作成すれば、同じ構成や類似構成の環境を迅速・簡単に再現できる
  • 「ベストプラクティス」テンプレートを保存して繰り返し使用できる
  • テンプレートにより設定の抜け・漏れを防げる
  • CloudFormationがリソースを一括管理するため個別管理が不要、依存関係も自動管理
  • リソースのプロビジョニング・更新が自動化されるためヒューマンエラーが発生しにくい
  • 同じテンプレートを使うため、新しいシステムでも事前にコストを見積もりやすい
  • CloudFormation自体は無料(プロビジョニングされたAWSリソースに対してのみ料金発生)

デメリット

  • 部分的な修正でもテンプレートからスタックを再適用する必要があり、手動修正より時間がかかる場合がある
  • スタックの繰り返し作成・削除でAWSリソースの作成上限に達する可能性がある

TerraformとAWS CloudFormationの比較

項目 AWS CloudFormation Terraform
対応クラウド AWSのみ マルチクラウド対応
記述言語 JSON / YAML HCL(HashiCorp Configuration Language)
料金 無料 OSS版は無料(Enterprise版は有料)
AWSとの統合度 ◎(最新リソースへの対応が早い) ○(プロバイダー更新に若干のラグ)
状態管理(State) AWS側で自動管理 tfstateファイルを自己管理
向いているケース AWS専用環境 マルチクラウド・高度なカスタマイズ

AWS CloudFormationの使い方

テンプレートとスタック

AWS CloudFormationでは「テンプレート」と「スタック」という2つの概念を使います。

  • テンプレート:JSON/YAML形式のテキストファイルで、AWSリソースの設計図。1つのテンプレートから本番・ステージ・開発環境を個別に作成できます。
  • スタック:テンプレートからプロビジョニングされたリソースの集合体。スタック単位でリソースを管理します。

テンプレートの作成からプロビジョニングまでの流れ

  1. テンプレートの準備:以下のいずれかで準備します。
    • JSON/YAML形式でAWSリソース設定を定義するテンプレートファイルを作成
    • AWS CloudFormationが提供するサンプルテンプレートを選択
  2. テンプレートのアップロード:AWSマネジメントコンソール・CLI・SDKからアップロード
  3. パラメータの設定(任意):インスタンス数・インスタンスタイプなどをパラメータで指定
  4. スタックの作成:CloudFormationがリソースの依存関係を自動判定してプロビジョニング
  5. スタックの更新:修正したテンプレートを再アップロードすると差分のみ更新

よくある質問

Q. AWS CloudFormationとAWS CDKの違いは何ですか?
A. AWS CDK(Cloud Development Kit)は、TypeScript・Python・Java等のプログラミング言語でインフラを定義できるフレームワークで、最終的にCloudFormationテンプレートを生成します。より高いプログラミング的表現力が欲しい場合はCDK、シンプルなYAML/JSONで管理したい場合はCloudFormationが向いています。
Q. スタックの更新に失敗した場合はどうなりますか?
A. スタック更新が失敗すると、CloudFormationは自動的にロールバックして変更前の状態に戻します(デフォルト動作)。ロールバック動作はオプションで制御可能です。変更セットを事前確認することで失敗リスクを最小化できます。
Q. StackSetsはどういった場合に使いますか?
A. 複数のAWSアカウント(開発/ステージ/本番など)や複数リージョンに同じリソース構成を展開したい場合に使います。AWS Organizationsとの統合により、組織内の全アカウントへの一括デプロイが可能です。
Q. 既存のAWSリソースをCloudFormationで管理することはできますか?
A. はい。CloudFormation Import機能を使うと、すでに手動で作成したリソースを既存スタックまたは新規スタックにインポートして管理下に置くことができます。リソースをCloudFormationに移行する際に使用します。

まとめ

  • AWS CloudFormationはJSON/YAMLテンプレートでAWSリソースを一括プロビジョニングできるIaCサービス
  • 一度作ったテンプレートを再利用することで、同じ構成の環境を素早く・正確に再現できる
  • 依存関係・プロビジョニング順序はCloudFormationが自動管理するため、手動エラーが大幅に減少
  • 変更セットで変更内容を事前確認でき、問題があればロールバックも自動で行われる
  • AWS専用でマルチクラウド対応が不要な場合は、TerraformよりもCloudFormationがシンプルに使える
  • CloudFormation自体は無料で、課金はプロビジョニングされたAWSリソース分のみ

▼ アクロビジョンについて

👔

一緒に働きましょう

一人ひとりのキャリアに向き合い、
活躍できる現場をご紹介します。

採用サイトを見る →
💻

システム開発のご依頼・ご相談

コンサルティングから運用保守まで、
ワンストップで対応します。

まずはお気軽にご相談ください →

前の記事

Amazon Sumerianでできること

次の記事

Amazon CloudFront について