𝕏 f B! L
案件・求人数 12,345
案件を探す(準備中) エージェントを探す(準備中) お役立ち情報 ログイン
案件・求人数 12,345
AWS CloudFormation入門!SESエンジニアがIaCを使いこなす方法

AWS CloudFormation入門!SESエンジニアがIaCを使いこなす方法

AWSCloudFormationIaCSESインフラエンジニア
目次
⚡ 3秒でわかる!この記事のポイント
  • 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エンジニアが知るべき基礎知識

👤
CloudFormationって、何ができるツールなんですか?
👩‍💼
AWSのリソース(EC2、VPC、RDSなど)をYAMLやJSONのテンプレートで定義し、自動的に構築・管理できるサービスです。「インフラのソースコード管理」ができるようになります。

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つの選択肢をよく比較検討します。

比較項目CloudFormationTerraformCDK
提供元AWS(純正)HashiCorpAWS(純正)
記述言語YAML / JSONHCLTypeScript, 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サーバーレスガイドもあわせてご参照ください。

SES案件をお探しですか?

SES記事をもっと読む →
🏗️

SES BASE 編集長

SES業界歴10年以上のメンバーが在籍する編集チーム。SES企業での営業・エンジニア経験、フリーランス独立経験を持つメンバーが、業界のリアルな情報をお届けします。

📊 業界データに基づく記事制作 🔍 IPA・経済産業省データ参照 💼 SES実務経験者が執筆・監修