AWS CloudFormationテンプレートの構文を完全解説!YAMLとJSONの書き方を初心者向けにやさしく理解
生徒
「AWS CloudFormationって聞いたことはあるんですが、テンプレートの書き方が難しそうで不安です」
先生
「AWS CloudFormationは、インフラ構成を文章で書いて自動化できる仕組みです。構文さえ理解すれば、初心者でも十分に扱えますよ。」
生徒
「YAMLとかJSONって何が違うんですか?」
先生
「それぞれの特徴や基本構文を、順番にわかりやすく見ていきましょう。」
1. AWS CloudFormationとは何か
AWS CloudFormation(エーダブリューエス クラウドフォーメーション)は、AWSのインフラ構成を自動で作成・管理できるサービスです。サーバーやネットワーク、ストレージなどを手作業で設定するのではなく、テンプレートと呼ばれる定義ファイルを使って一括で構築できます。
インフラ自動化という考え方は、人の操作ミスを減らし、同じ構成を何度でも再現できる点が大きな特徴です。AWS CloudFormationを使うことで、作業の効率化と安定した環境構築が可能になります。
2. CloudFormationテンプレートの役割
CloudFormationテンプレートとは、AWSリソースの設計図のようなものです。テンプレートには、どのサービスを、どの設定で、どの順番で作るかが書かれています。
このテンプレートをAWSに渡すと、内容を読み取って自動的に環境を構築してくれます。テンプレートは人が読む文章としても重要で、後から見返したときに構成が分かりやすいことも大切です。
3. YAMLとJSONの違いを理解しよう
AWS CloudFormationテンプレートは、YAML(ヤムル)またはJSON(ジェイソン)という形式で記述します。YAMLは見た目がシンプルで、人が読み書きしやすい形式です。一方JSONは、機械処理に向いており、記号が多いのが特徴です。
初心者にはYAMLが人気ですが、JSONも基本構造 known しておくと役立ちます。どちらを使っても、CloudFormationの機能自体に違いはありません。
4. YAML形式の基本構文
YAML形式では、インデント(字下げ)を使って構造を表現します。スペースの数が重要で、揃っていないとエラーになります。キーと値は「:」で区切って書きます。
AWSTemplateFormatVersion: '2010-09-09'
Description: サンプルのCloudFormationテンプレート
Resources:
MyEC2Instance:
Type: AWS::EC2::Instance
Properties:
InstanceType: t2.micro
このように、階層構造が目で見て分かりやすいのがYAMLの特徴です。
5. JSON形式の基本構文
JSON形式では、波括弧「{ }」や角括弧「[ ]」を使って構造を表現します。キーと値は必ずダブルクォーテーションで囲みます。
{
"AWSTemplateFormatVersion": "2010-09-09",
"Description": "サンプルのCloudFormationテンプレート",
"Resources": {
"MyEC2Instance": {
"Type": "AWS::EC2::Instance",
"Properties": {
"InstanceType": "t2.micro"
}
}
}
}
記号が多いため最初は難しく感じますが、構造自体はYAMLと同じ考え方です。
6. よく使うテンプレート構成要素
CloudFormationテンプレートには、いくつか決まったセクションがあります。代表的なものが、AWSTemplateFormatVersion、Description、Resourcesです。
Resources(リソーシズ)は、読み方はResources(リソーシズ)で、実際に作成するAWSサービスを定義する重要な部分です。ここにEC2やS3などの設定を書きます。
7. インデントと構文エラーの注意点
YAMLでは、インデントのズレがそのままエラーにつながります。タブではなく、スペースを使うことが基本です。JSONでは、カンマの付け忘れや括弧の閉じ忘れに注意が必要です。
エラーが出た場合は、まず構文が正しいかを落ち着いて確認しましょう。多くの場合、ちょっとした記号ミスが原因です。
8. 初心者がつまずきやすいポイント
初心者がつまずきやすいのは、YAMLとJSONの書き方を混同してしまう点です。どちらか一方に慣れてから使うのがおすすめです。
また、CloudFormationは一度作った構成を変更する仕組みも特徴です。テンプレートを修正して再実行することで、インフラを安全に更新できます。