3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

初心者向け:AWS CloudFormationで学ぶYAMLテンプレートの基本と備忘録

Last updated at Posted at 2024-12-04

はじめに

インフラのコード化や構成管理の現場では、YAML (YAML Ain't Markup Language) を目にする機会が多くあります。

特に、KubernetesのマニフェストやAnsibleのプレイブックで利用されることが多いフォーマットです。

JSONと比べて、YAMLはより人間が読みやすい形式で記述できるのが特徴です。

また、個人的にAnsibleサーバーを構築しようと考えているため、定義ファイルで使うYAMLの知識を整理していきます。

YAMLとは?

YAMLは、軽量で可読性が高いデータフォーマットです。主に設定ファイルやデータ交換形式として使用されます。

スクリーンショット 2024-12-04 20.19.24.png
引用画像:https://udemyfun.com/python-use-yaml/

YAMLの特徴は、インデントを利用してデータ構造を表現する点にあります。

JSONやXMLと比較すると、構文がシンプルであるため、視覚的に分かりやすく、扱いやすい形式となっています。

YAMLの主なデータ型

YAMLで利用できる主なデータ型は以下の通りです。

マッピング (Mapping):

キーと値のペアで構成されるデータ型。JSONのオブジェクトに相当します。

key: value

シーケンス (Sequence):

順序付けられたリスト形式のデータ。JSONの配列に相当します。

- item1
- item2
- item3

スカラー (Scalar):

単一の値を表します。文字列、数値、真偽値、nullなどが含まれます。

string: "example"
number: 42
boolean: true
null_value: null

YAMLの特徴

インデントや簡潔な記述方法により、直感的に読み書きできることが、YAMLを使用する最大のメリットです。

その他、以下の特徴があります。

コメントが記述可能

JSONと異なり、# を使ってコメントを書くことができます。

# これはコメントです
key: value

柔軟なデータ構造の表現

複雑なネスト構造でも簡単に表現できます。

parent:
  child:
    grandchild: value

さらに、多くのプログラミング言語で扱うためのライブラリが用意されており、言語に依存しないという点も大きなメリットです。

CloudFormationテンプレート形式について

スクリーンショット 2024-12-03 21.04.19.png
引用画像:https://aws.amazon.com/jp/cloudformation/

AWS CloudFormationのテンプレートは、インフラストラクチャをコードとして管理する際に使用される重要な形式です。テンプレートはJSON形式またはYAML形式で記述できます。

CloudFormationの技術検証については、過去の記事で詳しく解説しています。ぜひご覧ください!

個人的には、AWSサービスの中でもCloudFormationが特にお気に入りで、技術検証に力を入れています!(笑)

JSONとYAMLの違いについて

CloudFormationのテンプレートでは、JSON形式とYAML形式のどちらかを選択できます。

それぞれの特徴を簡単に比較してみました。

特徴 JSON YAML
形式 厳格でフォーマットが固定 人間が読みやすいフォーマット
記述量 やや冗長 簡潔
コメント 非対応 対応 (#)
使用場面 プログラム間のデータ交換 設定ファイルや構成管理

JSONは厳格な構文ルールを持ち、機械での解析に適しているため、APIレスポンスやデータ交換に多く利用されます。

一方、YAMLは簡潔で人間にとって読みやすい形式で記述できるため、設定ファイルや構成管理に適しています。

YAMLを使ってテンプレートを書いてみた

以下は、AWS CloudFormationを使用してEC2インスタンスを1台構築するYAMLテンプレートの例です。

AWSTemplateFormatVersion: "2010-09-09"
Description: AWS EC2 Instance Creation Example
Resources:
  MyEC2Instance:
    Type: AWS::EC2::Instance
    Properties:
      ImageId: ami-0abcdef1234567890
      InstanceType: t2.micro
      KeyName: my-key-pair
      Tags:
        - Key: Name
          Value: MyFirstInstance

コードの簡単な説明

このテンプレートでは、AWSの基本的な知識が必要ですが、YAMLを使って簡潔に記述されています。

  • AWSTemplateFormatVersion:
    CloudFormationテンプレートのバージョンを指定します。

  • Resources:
    作成するリソースの定義。

  • Properties:
    リソースの設定内容(AMI ID、インスタンスタイプ、キーペアなど)。

YAMLは人間に優しいフォーマットでありながら、構成管理やテンプレート記述の分野で非常に強力なツールです!

まとめ

YAMLの基本構文から、実践的な利用例までを整理して紹介しました。

今回の記事を通して、YAMLの柔軟性と直感的な記述方法の素晴らしさを再確認することができました。

今回のYAMLに関する知識整理の記事が、誰かの技術的な支えとなれば嬉しいです!

参考記事

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?