AWSではEC2やRDS、VPCなど多くのリソースを利用します。
これらをすべて手動で構築していると、次のような問題が発生する可能性があります。
- 環境ごとに設定が違ってしまう
- 同じ環境を再度作るのが難しい
- 設定ミスが発生しやすい
このような問題を解決する仕組みが
AWS CloudFormationです。
CloudFormationを利用することで
インフラ構成をコードとして管理し、自動で環境を構築することができます。
この記事では次の内容を解説します。
- CloudFormationの基本概念
- テンプレートの基本概念
- スタックの基本概念
- 変更セットやドリフト検出の仕組み
① CloudFormationの基本概念
CloudFormationとは
AWSインフラをコード(テンプレート)で定義し、自動で構築するサービスです。
通常のインフラ構築
管理者
↓
AWSコンソール操作
↓
インフラ作成
CloudFormation
テンプレート
↓
CloudFormation
↓
インフラ作成
この仕組みにより
- インフラ構成をコードで管理できる
- 環境を自動構築できる
- 再現性の高い環境を作れる
というメリットがあります。
② テンプレートの基本概念
CloudFormationでは
**テンプレート(Template)**というファイルでインフラ構成を定義します。
テンプレートは主に YAML または JSON で記述します。
例
Resources:
MyEC2:
Type: AWS::EC2::Instance
テンプレートの中では
AWSリソースを定義します。
テンプレートの構成要素(Type)
Typeは
作成するAWSリソースの種類を指定します。
例
AWS::EC2::Instance
AWS::S3::Bucket
AWS::RDS::DBInstance
つまり
Type
↓
作成するリソース
を示します。
テンプレートの構成要素(Properties)
Propertiesは
リソースの設定内容を定義します。
例
Type: AWS::EC2::Instance
Properties:
InstanceType: t2.micro
つまり
要素 役割
Type リソースの種類
Properties リソース設定
になります。
③ スタック・変更セット・ドリフト検出
CloudFormationでは
テンプレートを元に スタック(Stack) を作成します。
スタックの基本概念
スタックとは
CloudFormationで作成されたAWSリソースの集合です。
テンプレート
↓
CloudFormation
↓
スタック
↓
AWSリソース
変更セットの基本概念
**変更セット(Change Set)**とは
テンプレート変更による影響を事前に確認する機能です。
テンプレート変更
↓
変更セット
↓
変更内容確認
ドリフト検出の基本概念
**ドリフト検出(Drift Detection)**とは
テンプレートと実際のリソースの差分を検出する機能です。
テンプレート
↓
実際のリソース
↓
差分検出
変更セットとドリフトの違い
機能 目的
変更セット 変更前に影響確認
ドリフト検出 実際の差分確認
クロススタックの基本概念
**クロススタック(Cross Stack)**とは
複数のスタック間でリソース情報を共有する仕組みです。
例
VPCスタック
↓
サブネット情報共有
↓
EC2スタック
この仕組みにより
インフラ構成を 分割して管理できます。
④ まとめ
CloudFormationは
AWSインフラをコードで管理するIaCサービスです。
主なポイントは次の通りです。
テンプレートでインフラ構成を定義する
スタックとしてAWSリソースが作成される
変更セットで変更内容を事前確認できる
ドリフト検出で構成差分を確認できる
クロススタックでリソース共有が可能
CloudFormationを活用することで
AWSインフラを安全かつ効率的に管理することができます。