CloudFormationはコードでAWSの環境を管理できるAWSのツールです。
CloudFormationの概要
CloudFormationはAWSが提供している、AWSの環境をJSON形式またはYAML形式のコードで管理するツールです。
AWS CloudFormationの料金は従量課金で、使用していないときは課金されない
AWSでCloudFormationは利用したときだけ課金が発生し、CloudFormationを使用していないときは特に課金されません。
次の名前空間にあるリソースプロバイダーを AWS CloudFormation で使用する場合は、追加料金は発生しません: AWS::* と Alexa::*。この場合、AWS CloudFormation を使用して作成した AWS リソース (Amazon Elastic Compute Cloud (EC2) インスタンス、Elastic Load Balancing のロードバランサーなど) に対しては、手動で作成した場合と同様、料金が発生します。 お支払いはお客様が実際に使用した分だけで、最低料金や前払いの義務は発生しません。
CloudFormationはCFnと略される
見出しの通り、CloudFormationはCFnと略されます。
AWS公式のCloudFormation資料
AWSが公式に提供しているCloudFormationの資料を掲載します。
https://d1.awsstatic.com/webinars/jp/pdf/services/20200826_AWS-BlackBelt_AWS-CloudFormation.pdf

AWS::とFn::
CloudFormationのAWS::には、CloudFormationで構築したいAWSの環境について記述します。例えばAWS::EC2::InstanceはEC2に関する情報を示します。
Fn::は組み込み関数関数と呼ばれるもので、以下の特徴があります。主にパラメータの参照や値の加工などに利用する関数です。
組み込み関数
- パラメータの参照や値の加工などに利用する関数
- 記法は完全名の「Fn::xxx」と短縮形の「!xxx」の2つ
- 主な組み込み関数
- 値を参照する !Ref, !GetAtt
- 文字列を結合する !Join
- AZを取得する !GetAZs
- エクスポート値取得 Fn::ImportValue
- Base64エンコード Fn::Base64
- 条件関数 Fn::If, Fn::Equals, Fn::Not
Fn::の詳細は以下のAWS公式ドキュメントが参考になります。
CloudFormationの「Outputs」以下に書かれていることは構築後に確認できるパラメータの出力
Outputs以下に書かれているパラメータは、AWSの環境をCloudFormationで構築した後に取得・表示したい情報になります。

- スタック構築後に取得・表示したい情報の定義
- アクセスURLや、DBの通信先情報、作成したIAMユーザー名など、あとで
使用したい情報がある場合に便利
https://d1.awsstatic.com/webinars/jp/pdf/services/20200826_AWS-BlackBelt_AWS-CloudFormation.pdf
詳細は以下のAWS公式ドキュメントが参考になります。
CloudFormationのヘルパースクリプト
CloudFormationには、以下の4つのヘルパースクリプトが用意されています。
- cfn-init
- cfn-signal
- cfn-get-matadata
- cfn-hup
それぞれの使い方については以下の公式ドキュメントからの引用が参考になります。各ヘルパースクリプトの詳細も以下の引用元ドキュメントに詳しく記載があります。
CloudFormation には、スタックの一部として作成する Amazon EC2 インスタンスでソフトウェアをインストールしたりサービスを開始したりするために使用できる、次の Python ヘルパースクリプトが用意されています。
cfn-init – リソースメタデータの取得と解釈、パッケージのインストール、ファイルの作成、およびサービスの開始で使用します。
cfn-signal – WaitCondition または CreationPolicy でシグナルを送信するために使用し、前提となるリソースやアプリケーションの準備ができたときに、スタックの他のリソースを同期できるようにします。
cfn-get-metadata – 特定のキーへのリソースまたはパスのメタデータを取得するために使用します。
cfn-hup – メタデータへの更新を確認し、変更が検出されたときにカスタムフックを実行するために使用します。
テンプレートからスクリプトを直接呼び出します。スクリプトは、同じテンプレートで定義されているリソースメタデータと組み合わされて機能します。スクリプトは Amazon EC2 インスタンスでスタック作成プロセス中に実行されます。
CloudFormationを実際に使ってみる
CloudFormationをAWSで使ってみます。
CloudFormationは以下の方法で実行できます。
- AWSの管理画面(マネージメントコンソール)

CloudFormationでAWSリソースを管理するには、CloudFormationのコードを作成する必要があります。CloudFormationのコードを作成する方法は以下で解説します。
CloudFormationのInfrastructure Composerを使ってコードを作成する
CloudFormationにデフォルトで搭載されているInfrastructure Composerを使用すると、GUIからCloudFormationのコードを作成することができます。

テンプレートの形式はYAML、JSONどちらも対応しています。

例えば、S3のCloudFormationのコードを作成したければ、以下の画像のようにS3のアイコンをドラッグアンドドロップします。

するとテンプレートウィンドウに以下のようにコードが出力されます。

Cursor+AWS MCPでバイブコーディングでCloudFormationを作成する
AWS MCP Server をローカルで立ち上げ、CursorでMCPを使えるようにしてバイブコーディングでCloudFormationを使用することができます。
Amazon QでCloudFormationを作成する
AWSのアカウントで、AWSの管理画面(マネージメントコンソール)にログインして、Amazon Qにチャット形式でCloudFormationの記述を依頼できます。

