- CloudFormationはAWS純正のIaCツール。YAMLでインフラを定義し再現性のある環境構築を実現
- SES案件ではTerraformと並んで求められるスキル。特にAWS専業の現場で採用率が高い
- CloudFormationスキルがあると「運用保守」から「設計・構築」案件へステップアップ可能
SES(客先常駐)でインフラ案件に携わっていると、**「手作業でのリソース構築はもう限界…」と感じる場面が増えてきます。環境の再現性、変更管理、チーム間の共有——これらの課題を解決するのがInfrastructure as Code(IaC)**という考え方です。
中でもAWS CloudFormationは、AWS環境を利用するプロジェクトでは最も身近なIaCツールです。本記事では、SESエンジニアが現場で即活用できるよう、CloudFormationの基礎から実践パターン、他ツールとの使い分けまでを解説します。
IaC全般やTerraform・CDKとの比較については、AWS IaC入門:Terraform・CDK・CloudFormation徹底比較でも詳しく扱っていますので、あわせてご参照ください。
- CloudFormationの基本概念(スタック、テンプレート、リソース)
- YAMLテンプレートの書き方と主要セクション
- SES案件ですぐ使える実践パターン3選
- CloudFormation / Terraform / CDK の使い分け
- CloudFormationスキルで単価を上げる方法
CloudFormationとは?SESエンジニアが知るべき基礎知識
IaC(Infrastructure as Code)の重要性
従来のインフラ構築では、AWSマネジメントコンソールから手作業でリソースを作成していました。しかし、この方法には以下の問題があります。
| 課題 | 手作業の場合 | IaC(CloudFormation)の場合 |
|---|---|---|
| 再現性 | 手順書頼み。環境差異が発生しやすい | テンプレートから完全同一の環境を再現 |
| 変更管理 | 誰が何を変えたか追跡困難 | Gitで変更履歴を管理 |
| レビュー | 設定画面のスクショを共有 | コードベースでPRレビュー可能 |
| スピード | 1環境構築に数時間〜数日 | テンプレート実行で数分〜数十分 |
| ミス防止 | ヒューマンエラーが頻発 | コードで定義するためミスを最小化 |
CloudFormationの基本概念
CloudFormationを理解するために、以下の3つの概念を押さえましょう。
- テンプレート: インフラの設計図。YAMLまたはJSON形式で記述するファイルです
- スタック: テンプレートから作成されたリソースの集合。1つのテンプレートから1つのスタックが作られます
- チェンジセット: スタックの変更を適用する前にプレビューする機能。本番環境での安全な変更に必須です
CloudFormationはAWSの無料サービスです。CloudFormation自体の利用料はかからず、作成されたリソース(EC2、RDSなど)の利用料のみ発生します。
CloudFormationテンプレートの書き方【入門編】
テンプレートの基本構造
CloudFormationテンプレートは、以下のセクションで構成されます。
AWSTemplateFormatVersion: "2010-09-09"
Description: テンプレートの説明文
Parameters:
# 実行時に渡すパラメータ(環境名、インスタンスタイプ等)
Mappings:
# 固定の対応表(リージョン別AMI IDなど)
Conditions:
# 条件分岐の定義
Resources:
# ★ 必須セクション:作成するAWSリソースの定義
Outputs:
# スタック作成後に出力する値(エンドポイントURL等)
主要セクションの解説
| セクション | 必須 | 用途 | 使用例 |
|---|---|---|---|
Parameters | 任意 | 実行時に値を注入 | 環境名、インスタンスサイズ |
Resources | 必須 | AWSリソースの定義 | EC2、VPC、S3等 |
Outputs | 任意 | 作成結果の出力 | ALBのDNS名、S3バケット名 |
Mappings | 任意 | 固定値の対応表 | リージョン別AMI ID |
Conditions | 任意 | 条件分岐 | 本番のみWAFを有効化 |
実践:VPC + EC2を構築するテンプレート例
以下は、VPCとパブリックサブネット、EC2インスタンスを構築する基本テンプレートです。
AWSTemplateFormatVersion: "2010-09-09"
Description: "VPC + Public Subnet + EC2 Instance"
Parameters:
EnvironmentName:
Type: String
Default: dev
AllowedValues: [dev, stg, prod]
Description: "環境名"
InstanceType:
Type: String
Default: t3.micro
Description: "EC2インスタンスタイプ"
Resources:
# VPC
MyVPC:
Type: AWS::EC2::VPC
Properties:
CidrBlock: 10.0.0.0/16
EnableDnsSupport: true
EnableDnsHostnames: true
Tags:
- Key: Name
Value: !Sub "${EnvironmentName}-vpc"
# パブリックサブネット
PublicSubnet:
Type: AWS::EC2::Subnet
Properties:
VpcId: !Ref MyVPC
CidrBlock: 10.0.1.0/24
MapPublicIpOnLaunch: true
Tags:
- Key: Name
Value: !Sub "${EnvironmentName}-public-subnet"
# インターネットゲートウェイ
InternetGateway:
Type: AWS::EC2::InternetGateway
AttachGateway:
Type: AWS::EC2::VPCGatewayAttachment
Properties:
VpcId: !Ref MyVPC
InternetGatewayId: !Ref InternetGateway
# EC2インスタンス
WebServer:
Type: AWS::EC2::Instance
Properties:
InstanceType: !Ref InstanceType
SubnetId: !Ref PublicSubnet
ImageId: ami-0abcdef1234567890
Tags:
- Key: Name
Value: !Sub "${EnvironmentName}-web-server"
Outputs:
VPCId:
Description: "作成されたVPCのID"
Value: !Ref MyVPC
InstanceId:
Description: "EC2インスタンスID"
Value: !Ref WebServer
!Ref: パラメータやリソースの参照!Sub: 文字列内での変数展開!GetAtt: リソースの属性値を取得!Join: 文字列の結合!If: 条件に基づいた値の切り替え

SES案件で使えるCloudFormationの実践パターン
パターン1: 開発/ステージング/本番環境の自動構築
SES案件で最もよく使うパターンです。Parameters で環境名を切り替えるだけで、同一テンプレートから複数環境を構築できます。
Parameters:
Env:
Type: String
AllowedValues: [dev, stg, prod]
Conditions:
IsProd: !Equals [!Ref Env, prod]
Resources:
Database:
Type: AWS::RDS::DBInstance
Properties:
DBInstanceClass: !If [IsProd, db.r6g.xlarge, db.t3.medium]
MultiAZ: !If [IsProd, true, false]
BackupRetentionPeriod: !If [IsProd, 30, 7]
メリット: 環境差異をコードで管理できるため、「本番だけ設定が違う」というトラブルを防止できます。
パターン2: 監視・アラート設定の一括管理
CloudWatchアラームをCloudFormationで管理すれば、監視設定の抜け漏れを防げます。
Resources:
CPUAlarm:
Type: AWS::CloudWatch::Alarm
Properties:
AlarmName: !Sub "${Env}-high-cpu"
MetricName: CPUUtilization
Namespace: AWS/EC2
Statistic: Average
Period: 300
EvaluationPeriods: 3
Threshold: 80
ComparisonOperator: GreaterThanThreshold
AlarmActions:
- !Ref AlertSNSTopic
パターン3: ネステッドスタックによる大規模環境管理
大規模プロジェクトでは、1つの巨大テンプレートではなく、機能単位でテンプレートを分割し、親テンプレートから呼び出すネステッドスタック構成を採用します。
├── main.yaml # 親テンプレート
├── network.yaml # VPC・サブネット
├── security.yaml # セキュリティグループ・IAM
├── compute.yaml # EC2・ECS
└── monitoring.yaml # CloudWatch・SNS
メリット: チームメンバーごとに担当テンプレートを分けられるため、SES現場でのパラレル開発に適しています。
CloudFormation vs Terraform vs CDK:どう使い分ける?
SES案件でIaCツールを選ぶ際、この3つの選択肢をよく比較検討します。
| 比較項目 | CloudFormation | Terraform | CDK |
|---|---|---|---|
| 提供元 | AWS(純正) | HashiCorp | AWS(純正) |
| 記述言語 | YAML / JSON | HCL | TypeScript, Python等 |
| マルチクラウド | AWS専用 | ✅ 対応 | AWS専用 |
| 学習コスト | 中 | 中 | 高(プログラミング必須) |
| SES案件採用率 | 高い(AWS専業現場) | 非常に高い | まだ少ない |
| ステート管理 | AWS管理(自動) | tfstate要管理 | CloudFormation経由 |
| ドリフト検知 | ✅ 標準搭載 | 部分対応 | CloudFormation経由 |
AWS専業の現場ならCloudFormation、マルチクラウドやAWS以外も扱う現場ならTerraform、開発者主導のチームならCDKがおすすめです。なお、CloudFormationの知識はCDKを使う際にも必要になるため、まずCloudFormationを学んでおいて損はありません。
CloudFormationスキルでSES単価を上げるには
面談でのアピールポイント
SES面談でCloudFormationスキルをアピールする際は、以下のポイントを意識しましょう。
- 「手作業→IaC化」の移行経験: 既存環境をコード化した経験は高く評価されます
- テンプレートの設計力: ネステッドスタック構成や再利用可能なモジュール設計ができること
- CI/CD連携: CodePipeline等と組み合わせた自動デプロイ経験
IaCスキルの有無による単価差
| スキルレベル | 案件例 | 月額単価目安 |
|---|---|---|
| IaCスキルなし(手作業運用) | サーバー監視、手順書ベースの構築 | 45〜55万円 |
| CloudFormation基礎 | テンプレートの修正・実行 | 55〜65万円 |
| CloudFormation設計・構築 | テンプレート新規設計、マルチ環境管理 | 65〜80万円 |
| IaC + CI/CD統合 | インフラ自動化パイプライン全体設計 | 75〜95万円 |
インフラエンジニアの単価相場について詳しくは、SESインフラエンジニアの単価相場をご参照ください。
CloudFormation学習ロードマップ
ステップ1: 基本テンプレートの作成(1〜2週間)
- VPC、EC2、S3などの基本リソースをYAMLで定義
aws cloudformation create-stackコマンドでのデプロイを体験- 公式ドキュメントのサンプルテンプレートを写経
ステップ2: パラメータと条件分岐の活用(2〜3週間)
Parametersでテンプレートを汎用化Conditionsで環境別の分岐を実装Mappingsでリージョン対応を実装
ステップ3: 実践的なテンプレート設計(1〜2ヶ月)
- ネステッドスタックの構成
- クロススタック参照(
Outputs+Fn::ImportValue) - カスタムリソース(Lambda-backed)の活用
ステップ4: CI/CDとの連携(1ヶ月〜)
- CodePipelineでテンプレートの自動デプロイ
- チェンジセットによる安全なデプロイフロー
cfn-lintによるテンプレートの静的解析
AWS認定資格の中でも、AWS Certified Solutions Architect - Associate (SAA) はCloudFormationの知識を含む総合的なスキルを証明できます。SES面談での信頼度が大幅に向上するため、学習と並行して取得を目指すのがおすすめです。詳しくはAWS認定資格ガイドをご覧ください。
まとめ:CloudFormationはAWSエンジニアの必須スキル
AWS CloudFormationは、SESエンジニアがインフラ運用から設計・構築へとキャリアアップするための必須スキルです。
- 基本を押さえる: テンプレートの構造、主要セクション、組み込み関数
- 実践で使う: 環境自動構築、監視設定の一括管理、ネステッドスタック
- 他ツールとの使い分け: CloudFormation / Terraform / CDK の特性を理解
- キャリアに活かす: IaCスキルで「設計・構築」案件にステップアップ
まずは簡単なVPC + EC2のテンプレートから始めて、少しずつ実践的な構成に挑戦してみてください。IaCの考え方を身につければ、SESエンジニアとしての市場価値は確実に向上します。
クラウドエンジニアのキャリア全般についてはクラウドエンジニアSES案件ガイドも、ECSやサーバーレスへの発展についてはAWS ECS/FargateガイドやAWSサーバーレスガイドもあわせてご参照ください。