カテゴリ: AWS 更新日: 2026/02/16

AWS CloudFormationテンプレートの構文を完全解説!YAMLとJSONの書き方を初心者向けにやさしく理解

AWS CloudFormationテンプレートの構文(YAML/JSON)の書き方
AWS CloudFormationテンプレートの構文(YAML/JSON)の書き方

先生と生徒の会話形式で理解しよう

生徒

「AWS CloudFormationって聞いたことはあるんですが、テンプレートの書き方が難しそうで不安です」

先生

「AWS CloudFormationは、インフラ構成を文章で書いて自動化できる仕組みです。構文さえ理解すれば、初心者でも十分に扱えますよ。」

生徒

「YAMLとかJSONって何が違うんですか?」

先生

「それぞれの特徴や基本構文を、順番にわかりやすく見ていきましょう。」

1. AWS CloudFormationとは何か

1. AWS CloudFormationとは何か
1. AWS CloudFormationとは何か

AWS CloudFormation(エーダブリューエス クラウドフォーメーション)は、AWSのインフラ構成を自動で作成・管理できるサービスです。サーバーやネットワーク、ストレージなどを手作業で設定するのではなく、テンプレートと呼ばれる定義ファイルを使って一括で構築できます。

インフラ自動化という考え方は、人の操作ミスを減らし、同じ構成を何度でも再現できる点が大きな特徴です。AWS CloudFormationを使うことで、作業の効率化と安定した環境構築が可能になります。

2. CloudFormationテンプレートの役割

2. CloudFormationテンプレートの役割
2. CloudFormationテンプレートの役割

CloudFormationテンプレートとは、AWSリソースの設計図のようなものです。テンプレートには、どのサービスを、どの設定で、どの順番で作るかが書かれています。

このテンプレートをAWSに渡すと、内容を読み取って自動的に環境を構築してくれます。テンプレートは人が読む文章としても重要で、後から見返したときに構成が分かりやすいことも大切です。

3. YAMLとJSONの違いを理解しよう

3. YAMLとJSONの違いを理解しよう
3. YAMLとJSONの違いを理解しよう

AWS CloudFormationテンプレートは、YAML(ヤムル)またはJSON(ジェイソン)という形式で記述します。YAMLは見た目がシンプルで、人が読み書きしやすい形式です。一方JSONは、機械処理に向いており、記号が多いのが特徴です。

初心者にはYAMLが人気ですが、JSONも基本構造 known しておくと役立ちます。どちらを使っても、CloudFormationの機能自体に違いはありません。

4. YAML形式の基本構文

4. YAML形式の基本構文
4. YAML形式の基本構文

YAML形式では、インデント(字下げ)を使って構造を表現します。スペースの数が重要で、揃っていないとエラーになります。キーと値は「:」で区切って書きます。


AWSTemplateFormatVersion: '2010-09-09'
Description: サンプルのCloudFormationテンプレート
Resources:
  MyEC2Instance:
    Type: AWS::EC2::Instance
    Properties:
      InstanceType: t2.micro

このように、階層構造が目で見て分かりやすいのがYAMLの特徴です。

5. JSON形式の基本構文

5. JSON形式の基本構文
5. JSON形式の基本構文

JSON形式では、波括弧「{ }」や角括弧「[ ]」を使って構造を表現します。キーと値は必ずダブルクォーテーションで囲みます。


{
  "AWSTemplateFormatVersion": "2010-09-09",
  "Description": "サンプルのCloudFormationテンプレート",
  "Resources": {
    "MyEC2Instance": {
      "Type": "AWS::EC2::Instance",
      "Properties": {
        "InstanceType": "t2.micro"
      }
    }
  }
}

記号が多いため最初は難しく感じますが、構造自体はYAMLと同じ考え方です。

6. よく使うテンプレート構成要素

6. よく使うテンプレート構成要素
6. よく使うテンプレート構成要素

CloudFormationテンプレートには、いくつか決まったセクションがあります。代表的なものが、AWSTemplateFormatVersion、Description、Resourcesです。

Resources(リソーシズ)は、読み方はResources(リソーシズ)で、実際に作成するAWSサービスを定義する重要な部分です。ここにEC2やS3などの設定を書きます。

7. インデントと構文エラーの注意点

7. インデントと構文エラーの注意点
7. インデントと構文エラーの注意点

YAMLでは、インデントのズレがそのままエラーにつながります。タブではなく、スペースを使うことが基本です。JSONでは、カンマの付け忘れや括弧の閉じ忘れに注意が必要です。

エラーが出た場合は、まず構文が正しいかを落ち着いて確認しましょう。多くの場合、ちょっとした記号ミスが原因です。

8. 初心者がつまずきやすいポイント

8. 初心者がつまずきやすいポイント
8. 初心者がつまずきやすいポイント

初心者がつまずきやすいのは、YAMLとJSONの書き方を混同してしまう点です。どちらか一方に慣れてから使うのがおすすめです。

また、CloudFormationは一度作った構成を変更する仕組みも特徴です。テンプレートを修正して再実行することで、インフラを安全に更新できます。

まとめ

まとめ
まとめ

AWS CloudFormation(クラウドフォーメーション)の基本構文や、YAMLとJSONの記述方法について詳しく解説してきましたが、いかがでしたでしょうか。これまで手動で行っていたAWSリソースの構築作業を、プログラムのようにコードで管理する「Infrastructure as Code (IaC)」の概念は、現代のクラウド運用において欠かせないスキルとなっています。

CloudFormation習得のメリットと運用のコツ

CloudFormationを利用することで、誰が実行しても同じ環境が作成できる「再現性」が担保されます。これは、開発環境、テスト環境、本番環境を全く同じ構成で揃えたい場合に非常に強力な武器となります。また、テンプレート自体が「構成図」の役割を果たすため、設計ドキュメントの更新漏れを防ぐことができるのも大きな利点です。

実際に運用を始める際は、まずは小規模なS3バケットの作成や、VPCの構築から手をつけるのがおすすめです。複雑な構成にいきなり挑戦するのではなく、小さなテンプレートを積み重ねていくことで、エラーへの対処法やセクションごとの役割が自然と身についていきます。特に、スタックの作成に失敗した際の「ロールバック」機能などは、実際に手を動かして経験しておくことで、いざという時の安心感に繋がります。

実践的なテンプレート例:VPCとSubnetの構築

ここでは、学んだ内容を復習するために、ネットワークの基盤となるVPCとサブネットを作成する具体的なYAMLテンプレートの例を見てみましょう。インデントの構造や、論理IDの付け方に注目してください。


AWSTemplateFormatVersion: '2010-09-09'
Description: VPC and Public Subnet for Practice

Resources:
  # VPCの定義
  MyVPC:
    Type: AWS::EC2::VPC
    Properties:
      CidrBlock: 10.0.0.0/16
      EnableDnsSupport: true
      EnableDnsHostnames: true
      Tags:
        - Key: Name
          Value: MyPracticeVPC

  # パブリックサブネットの定義
  PublicSubnet:
    Type: AWS::EC2::Subnet
    Properties:
      VpcId: !Ref MyVPC
      CidrBlock: 10.0.1.0/24
      AvailabilityZone: ap-northeast-1a
      Tags:
        - Key: Name
          Value: MyPracticeSubnet

コマンドラインでの操作:AWS CLIの活用

テンプレートが完成したら、AWSマネジメントコンソールからアップロードするのも良いですが、開発効率を上げるためにはAWS CLI(コマンドラインインターフェース)での操作も覚えておくと便利です。以下のコマンドは、作成したテンプレートを検証し、実際にスタックを作成する際の流れです。


aws cloudformation validate-template --template-body file://template.yaml
{
    "Parameters": [],
    "Description": "VPC and Public Subnet for Practice",
    "Capabilities": [],
    "CapabilitiesReason": "",
    "DeclaredTransforms": []
}

エラーがなければ、続けてスタックを作成します。


aws cloudformation create-stack --stack-name my-first-stack --template-body file://template.yaml
{
    "StackId": "arn:aws:cloudformation:ap-northeast-1:123456789012:stack/my-first-stack/abcdefg-1234-5678"
}

さらなるステップアップに向けて

基本をマスターしたら、次は「Parameters」セクションを使って実行時に値を変更できるようにしたり、「Outputs」セクションを使って作成したリソースの情報を他のスタックに渡したりする応用テクニックに挑戦してみましょう。AWS CloudFormationは奥が深いサービスですが、一度覚えてしまえばインフラ管理の負担を劇的に減らすことができます。ぜひ、日々の運用に取り入れてみてください。

先生と生徒の振り返り会話

生徒

「先生、ありがとうございました!YAMLのインデントを正しく揃えるだけで、あんなに複雑な設定がスッキリ見えるなんて驚きです。JSONよりも視覚的に分かりやすくて、初心者の僕にはYAMLの方が取っつきやすい気がしました。」

先生

「そうですね。YAMLはコメントも書けるので、なぜその設定にしたのかをメモしておくのにも適しています。一方で、システム間の自動連携などでプログラムからテンプレートを生成する場合は、JSONの方が扱いやすいこともあるんですよ。適材適所ですね。」

生徒

「なるほど。さっきのサンプルコードにあった『!Ref』という記法は何ですか?初めて見ました。」

先生

「それは『組み込み関数』の一つですね。!Refは他のリソースを参照するときに使います。例えば、VPCを作ってからそのVPCの中にサブネットを作りたい場合、『さっき作ったVPCのIDを使ってね』と指示を出しているんです。これによって、リソース同士の依存関係をCloudFormationが自動で判断して、正しい順番で作ってくれるんですよ。」

生徒

「自動で順番まで考えてくれるなんて賢いですね!もし書き間違えてエラーになっちゃった時はどうすればいいですか?」

先生

「エラーメッセージをよく読むことが一番の近道です。CloudFormationのイベントログを見ると、『どのリソースで何が原因で失敗したか』が詳しく表示されます。さっき紹介したCLIのvalidate-templateコマンドを使えば、事前に構文ミスをチェックできるので、積極的に活用してみてください。」

生徒

「まずは簡単なネットワーク構成から、自分で書いて動かしてみようと思います。実際にAWSの画面でリソースが勝手に出来上がっていくのを見るのが楽しみです!」

先生

「その意気です。実際に動かしてみることで、ドキュメントを読むだけでは得られない気づきがたくさんあります。頑張りましょう!」

カテゴリの一覧へ
新着記事
New1
AWS PrivateLink
AWS PrivateLinkのユースケースと業界別活用事例|セキュアな通信の決定版
New2
AWS PrivateLink
AWS PrivateLinkのログ取得とトラブル対応手順を完全ガイド!初心者でもわかるセキュアな接続確認方法
New3
ファイル・ディレクトリ構造
Linuxの/etcディレクトリとは?設定ファイルの役割を初心者向けに徹底解説
New4
AWS Lambda
AWS Lambdaでログを確認する方法を完全解説!CloudWatch Logsで初心者でも安心運用
人気記事
No.1
Java&Spring記事人気No1
S3(オブジェクトストレージ)
AWS S3の料金体系をわかりやすく解説
No.2
Java&Spring記事人気No2
Linux ディストリビューション
Linuxディストリビューションとは?OSとの関係や初心者におすすめの種類を徹底解説!
No.3
Java&Spring記事人気No3
ELB(ロードバランサー)
AWS ELBでターゲットグループを設定する方法を初心者向けに解説!
No.4
Java&Spring記事人気No4
シェルとターミナル基礎
findコマンドの使い方を完全ガイド!初心者でもわかるLinuxのファイル検索の基本
No.5
Java&Spring記事人気No5
Linux ディストリビューション
Ubuntuとは何か?特徴と向いている用途を初心者向けに徹底解説!
No.6
Java&Spring記事人気No6
AWS 基本
AWSのサービスのステータス確認方法(AWS Health Dashboard)
No.7
Java&Spring記事人気No7
RDS(データベース)
AWS RDSのセキュリティグループ設定方法を解説!初心者でも安心のクラウドデータベース対策
No.8
Java&Spring記事人気No8
ELB(ロードバランサー)
AWSのNetwork Load Balancer(NLB)の特徴と使い方を解説!初心者向けロードバランサー入門