CFN関連方針管理表

ロードマップ

このシリーズでは、AWSの基本的なサービスや概念は知っているものの、CloudFormationはまだよくわからないという方を対象に、CloudFormationを使ったAWS環境の設計・構築ができるようになることを目指します。

単にCloudFormationの構文を覚えるのではなく、実際のAWS環境を題材にしながら、

「AWSの構成を考える → CloudFormationでコード化する → デプロイする → 変更する → 運用する」

という一連の流れを身につけていきます。

1. CloudFormationとは何か

まずは、CloudFormationが何のためのサービスなのかを理解します。

  • CloudFormationでできること
  • なぜAWSをコードで管理するのか
  • マネジメントコンソールで構築する場合との違い
  • Infrastructure as Code(IaC)とは
  • CloudFormationの基本的な仕組み
  • Stack / Template / Resourceの関係
  • CloudFormationを使うメリット・注意点

まずは「CloudFormationの書き方」ではなく、CloudFormationを使う理由を理解します。

2. はじめてのCloudFormation

実際にCloudFormationを動かしてみます。

  • CloudFormation Templateの基本構造
  • YAMLとJSON
  • Resourceの定義
  • Stackの作成
  • Stackの削除
  • CloudFormationからAWSリソースが作られる流れ
  • マネジメントコンソールとの対応関係

ここでは、できるだけ小さな構成から始め、CloudFormationの基本的な操作に慣れていきます。

3. Templateの基本文法を理解する

CloudFormation Templateを書くために必要な基本機能を学びます。

  • Resources
  • Parameters
  • Outputs
  • Mappings
  • Conditions
  • Metadata
  • Description
  • Ref
  • Fn::GetAtt
  • Fn::Sub
  • その他の主要なIntrinsic Functions

単に構文を暗記するのではなく、**「どのような場面で使うのか」**をAWSリソースの構築を通して理解します。

4. AWSリソースをCloudFormationで構築する

ここから少しずつ実践的な構成を作っていきます。

例えば、以下のようなAWSリソースをCloudFormationで定義します。

  • VPC
  • Subnet
  • Route Table
  • Internet Gateway
  • Security Group
  • IAM Role
  • S3 Bucket
  • EC2
  • RDS

ここでは、AWSコンソールで作成した場合にどのような設定が必要なのかと、それをCloudFormationでどう表現するのかを対応させながら学びます。

5. AWS環境を「設計」してからCloudFormationを書く

CloudFormationを書く前に、AWS環境そのものを設計する方法を扱います。

例えば、Webアプリケーションを構築するとして、

  • どのAWSサービスを使うのか
  • VPCをどう分割するのか
  • Public / Private Subnetをどう配置するのか
  • Security Groupをどう設計するのか
  • IAM Roleをどう設計するのか
  • リソース同士をどう関連付けるのか

といったことを考えます。

そして、

AWS構成図 → リソース一覧 → CloudFormation Template

という流れで、設計をコードへ落とし込んでいきます。

6. 複数のリソースからなる環境を構築する

ここまでの知識を使って、実際に一つのAWS環境を構築します。

例えば、

Internet
   |
   v
ALB
   |
   v
EC2
   |
   v
RDS

のようなWebアプリケーション環境を題材にします。

  • ネットワークの構築
  • IAMの構築
  • セキュリティ設定
  • アプリケーションサーバーの構築
  • データベースの構築
  • リソース間の依存関係
  • Stackの作成・更新・削除

最終的に、CloudFormationだけでAWS環境を一から構築できる状態を目指します。

7. ParametersとOutputsを使ってTemplateを実用的にする

実際の運用を想定して、Templateを柔軟にしていきます。

  • 環境ごとの値をParametersで切り替える
  • Outputsでリソース情報を受け渡す
  • Ref / Fn::GetAttを活用する
  • Fn::Subを使った文字列生成
  • 固定値を減らす
  • Templateを再利用できる形にする

ここでは、単に「動くTemplate」から、何度も利用できるTemplateへ発展させます。

8. Dev / Stg / Prodなど複数環境を管理する

実際の開発では、一つのAWS環境だけを管理するケースばかりではありません。

  • 開発環境
  • ステージング環境
  • 本番環境

など、複数の環境をどのようにCloudFormationで管理するのかを考えます。

  • Parametersの使い分け
  • Stackの分離
  • 環境ごとの設定
  • Templateの共通化
  • 環境ごとの差分をどう管理するか

などを扱います。

9. CloudFormation Stackを分割する

AWS環境が大きくなると、一つのTemplateですべてを管理することが難しくなります。

そこで、

  • ネットワーク
  • IAM
  • アプリケーション
  • データベース

など、役割ごとにStackを分割する方法を学びます。

  • Stackを分割するメリット
  • Stack間の依存関係
  • OutputsとExports
  • Nested Stack
  • Stack分割の考え方

ここでは、**「どこまでを一つのStackにするのか」**という設計面も考えます。

10. CloudFormationの変更と運用

CloudFormationは「作って終わり」ではありません。

実際の運用で重要になる、

  • Stackの更新
  • Change Sets
  • 更新時のリソース置換
  • リソースの削除
  • DeletionPolicy
  • UpdateReplacePolicy
  • Drift Detection
  • ロールバック

などについて学びます。

特に、**「Templateを変更したらAWS上で何が起こるのか」**を理解することを目標にします。

11. CloudFormationの設計・運用で気をつけること

実際にCloudFormationを使っていく中で遭遇しやすい問題を扱います。

  • Templateが巨大になる
  • Parameterが増えすぎる
  • Stack間の依存関係が複雑になる
  • リソース名をどう設計するか
  • Secretsや機密情報をどう扱うか
  • IAM権限をどう設計するか
  • 本番環境での変更をどう安全に行うか

単に「CloudFormationが書ける」だけではなく、保守しやすいInfrastructure as Codeを書くための考え方を身につけます。

12. CloudFormationを使った実践的なAWS環境構築

最後に、これまで学んだ内容を組み合わせて、実践的なAWS環境を設計・構築します。

例えば、

  • VPC
  • Public / Private Subnet
  • ALB
  • EC2
  • RDS
  • S3
  • IAM
  • Security Group

などを組み合わせたWebアプリケーション環境を題材にします。

最初にAWS構成を設計し、

  1. 要件を整理する
  2. AWS構成を設計する
  3. 構成図を作る
  4. CloudFormation Templateを設計する
  5. Templateを書く
  6. Stackを作成する
  7. 動作確認する
  8. Templateを変更する
  9. 安全に更新する
  10. 不要になった環境を削除する

という一連の流れを実践します。

このシリーズを読み終えたときのゴール

このシリーズを通して、最終的には次のことができる状態を目指します。

  • CloudFormationの基本的な仕組みを説明できる
  • AWSリソースをCloudFormationで定義できる
  • AWSの構成をCloudFormationに落とし込める
  • ParametersやOutputsなどを使ってTemplateを設計できる
  • 複数のStackに分割してAWS環境を管理できる
  • Stackの変更・更新・削除を安全に行える
  • CloudFormationを使ってAWS環境を再現可能な形で構築できる
  • CloudFormationを使うことを前提にAWSインフラを設計できる

つまり、「CloudFormationの書き方を知っている」から「CloudFormationを使ってAWS環境を設計・構築できる」へ進むことを、このシリーズのゴールとします。

タイトルとURLをコピーしました