はじめに
CloudFormationについて、調べてほしいとの業務指示があったため、調べた内容を残します。
私について
2026年1月からITエンジニア完全未経験でSESに転職しました。
前職は自動車業界に10年程度在籍していました。
保有資格は下記3つ
- AWS CLF
- AWS SAA
- Linuc レベル1
前職在籍中に時間を作って独学で学習し、1年ほどかけて取得しました。
いずれも試験問題を解くだけの知識としては保有しておりますが、実際にAWSマネジメントコンソールやターミナル上での操作をほとんどやったことがない所謂エアプ状態です。
記事の流れ
- CloudFormationとは?
- CloudFormationテンプレート作成
- 実践
CloudFormationとは?
CloudFormation とは?(AWSドキュメント)
CloudFormation は AWS リソースのモデル化およびセットアップに役立つサービスです。リソース管理に割く時間を減らし、AWS で実行するアプリケーションにさらに注力できるようになります。使用するすべての AWS リソース (Amazon EC2 インスタンスや Amazon RDS DB インスタンスなど) を記述するテンプレートを作成すれば、CloudFormation がお客様に代わってこれらのリソースのプロビジョニングや設定を受け持ちます。AWS リソースを個別に作成、設計して、それぞれの依存関係を考える必要はありません。CloudFormation がこれを処理します。次のシナリオは CloudFormation がどのように役立つかを示します。
上記を読んでもピンときませんが、要はAWSが指定した書き方でコードが書かれたファイルをアップロードすると、環境構築できるというサービスです。
私みたいな初心者だと「AWSが指定した書き方でコードを書く」という部分のハードルが高いので忘れないようにしっかり記録していきます。
CloudFormationテンプレート作成
【セクションの理解】
テンプレートには以下のセクションがあり、自分が必要なセクションを記述できます。
AWSTemplateFormatVersion
Description
Metadata
Parameters
Resources #唯一選択必須のセクション
Mappings
Conditions
Transform
Rules
Outputs
CloudFormation テンプレートセクション(AWSドキュメント)
[Resource] セクションはあらゆる CloudFormation テンプレートで必要であり、テンプレートの中核となります。このセクションは、Amazon EC2 インスタンスや Amazon S3 バケットなど、スタックリソースとそのプロパティを指定します。各リソースは、一意の論理 ID、タイプ、および特定の設定の詳細で定義されます。
この記事では[Resource] セクションが中心となるため、他のセクションは上記AWSドキュメントまたは下記リンクで確認します。
【初心者向け】AWS CloudFormation 入門!完全ガイド
[忘備録]AWS CloudFormation 基礎!!テンプレートを書くまでの知識
【Resourcesセクションの理解】
次に必須セクションであるResourcesセクションはどのように記述すればいいのか。
結論からいくとAWSドキュメントに用意されているフォーマットをコピーします。
CloudFormation テンプレートの Resources 構文(AWSドキュメント)
Resources: LogicalResourceName1: #作成するファイル内で一意の名前をつける Type: AWS::ServiceName::ResourceType #次で説明します Properties: #次で説明します PropertyName1: PropertyValue1 ... LogicalResourceName2: #複数リソースを作成する場合は続けて書ける Type: AWS::ServiceName::ResourceType Properties: PropertyName1: PropertyValue1 ...
Resourcesセクションに限らず、他のセクションも下記リンク下部のリンクからフォーマットを取得できます。
ちなみに私はYAML形式を引用していますが、JSON形式のフォーマットも存在します。
お好みの方を選択しましょう。
CloudFormation テンプレートセクション(AWSドキュメント)
【ResourceセクションのPropertiesの理解】
次にResourcesセクションの中のPropertiesの記述方法について(上記コードブロック内で「次で説明します」と言及している個所)
結論からいくとこれもAWSドキュメントに用意されているフォーマットをコピーします。
下記リンク内ページからサービスリソースタイプを選択し、リソースタイプを選択します。
(例)VPCを作成したい場合
サービスリソースタイプ:Amazon EC2
リソースタイプ:AWS::EC2::VPC
AWS リソースおよびプロパティタイプのリファレンス(AWSドキュメント)
Type: AWS::EC2::VPC #リソースタイプ(コピーされた内容のままでOK) Properties: CidrBlock: String #VPCの場合はこれが必須項目(またはIpv4IpamPoolId) EnableDnsHostnames: Boolean EnableDnsSupport: Boolean InstanceTenancy: String Ipv4IpamPoolId: String Ipv4NetmaskLength: Integer Tags: - Tag
コピーした項目はそのリソースタイプで記述できる全てのProperties項目です。
どれが必須項目かどうか、記述方法は上記リンク内で確認します。
※日本語訳と英語訳を見比べないと私はわかりづらかったです。
ちなみに
String:テキスト
Boolean:true/false
Integer:整数
らしいです。
ここまで理解したら、作成できるはずです。
例として、下記がVPCを作成する際のCloudFormationテンプレートの最小構成でこれを使用すれば、VPCが作成されます。
Resources: #必須セクション
testVPC: #このファイル内での一意の名前
Type: AWS::EC2::VPC #リソースタイプ(AWSドキュメントからコピーしたままでOK)
Properties:
CidrBlock: 10.0.0.0/16 #VPCではこれが必須項目
CloudFormationの実行
CloudFormationテンプレート作成後、マネジメントコンソール上でどうやって環境構築するのかがわかりやすく書いてあるリンクを貼っておきます。
AWS CloudFormation テンプレートファイルの初心者向け解説(Serverworks)
まとめ
主にCloudFormationテンプレート作成方法を確認しました。
今回のようにAWSドキュメントからフォーマットを入手して、書き方のルール通りに作成するだけでした。
ちなみに既存のリソースをスキャンして、テンプレート化する「IaCジェネレーター」というものも存在するので機会があれば、また記事を書きます。