【クラウド】【AWS】AWS CloudFormation - j-komatsu/myCheatSheet GitHub Wiki

AWS CloudFormation(クラウドフォーメーション)

1. AWS CloudFormationとは?

読み方:クラウドフォーメーション(CloudFormation)

AWS CloudFormationは、AWSリソースのインフラ管理をコード化するサービスです。

特徴 説明
Infrastructure as Code (IaC) JSONまたはYAMLでAWSリソースを定義し、コードで管理可能
自動化 テンプレートを適用するだけで一括デプロイが可能
可搬性 環境(開発・本番)ごとに同じ設定を適用可能
変更管理 更新履歴を管理しながらインフラをアップデート可能
Rollback機能 失敗時に自動的に元の状態に戻すことができる

2. 初心者向け解説

💡 クラウドフォーメーションの概念を例え話で説明

:レゴブロックで家を作るときの設計書

AWS CloudFormationは、レゴブロックの設計書のようなものです。設計書(テンプレート)に沿って、必要なパーツ(リソース)を組み立てると、家(AWSの環境)が自動的に完成します。


3. 基本構造(テンプレートの構成要素)

CloudFormationのテンプレートは、以下のような構成になっています。

AWSTemplateFormatVersion: "2010-09-09"
Description: "シンプルなEC2インスタンスの作成"
Resources:
  MyInstance:
    Type: AWS::EC2::Instance
    Properties:
      InstanceType: t2.micro
      ImageId: ami-0abcdef1234567890

💡 各セクションの説明

セクション 説明
AWSTemplateFormatVersion テンプレートのバージョン(固定値)
Description テンプレートの説明(省略可)
Resources 実際に作成するAWSリソースの定義

4. CloudFormationの実行プロセス

以下のフローでリソースを作成します。

graph TD;
    A[テンプレート作成] --> B[スタック作成]
    B --> C[AWSリソースを作成]
    C --> D[デプロイ完了]
    B -.->|エラー発生時| E[ロールバック]

5. 専門者向け解説

5.1 スタックの管理

CloudFormationは「スタック」という単位でリソースを管理します。

  • スタックの作成aws cloudformation create-stack
  • スタックの更新aws cloudformation update-stack
  • スタックの削除aws cloudformation delete-stack

5.2 パラメータと条件

動的な値を扱うためにParametersを活用できます。

Parameters:
  InstanceType:
    Type: String
    Default: t2.micro

Resources:
  MyInstance:
    Type: AWS::EC2::Instance
    Properties:
      InstanceType: !Ref InstanceType

この例では、InstanceTypeの値を後から変更可能にしています。


6. CloudFormationの活用例

✅ EC2インスタンス作成テンプレート

AWSTemplateFormatVersion: "2010-09-09"
Resources:
  MyEC2Instance:
    Type: AWS::EC2::Instance
    Properties:
      InstanceType: t2.micro
      ImageId: ami-0abcdef1234567890

✅ VPC作成テンプレート

AWSTemplateFormatVersion: "2010-09-09"
Resources:
  MyVPC:
    Type: AWS::EC2::VPC
    Properties:
      CidrBlock: 10.0.0.0/16

7. まとめ

AWS CloudFormationは、AWSリソースの管理を自動化し、インフラをコードとして扱える便利なサービスです。

  • 初心者:レゴの設計図のように、テンプレートを作成するだけで環境を構築できる
  • 専門者:スタック管理やパラメータ設定を活用し、より柔軟なインフラ管理が可能

💡 クラウドフォーメーションを活用して、AWSリソースを効率的に管理しましょう!