CloudFormation
AWS のインフラをテンプレート (YAML/JSON) で宣言的に定義および管理する IaC サービス
CloudFormation とは
AWS CloudFormation は、AWS のインフラをテンプレート (YAML/JSON) で宣言的に定義し、スタックとして作成・更新・削除する IaC サービスである。SAM は CloudFormation の拡張、CDK は CloudFormation のコード生成ツール。
テンプレートの構造
CloudFormation テンプレートは YAML または JSON で記述し、Parameters (パラメータ)、Resources (リソース定義)、Outputs (出力値) の 3 つが主要セクションである。Resources にデプロイしたい AWS リソースを宣言的に定義し、Parameters で環境ごとの値を切り替える。
AWSTemplateFormatVersion: '2010-09-09'
Description: My Stack
Parameters:
Environment:
Type: String
Default: dev
Resources:
UsersTable:
Type: AWS::DynamoDB::Table
Properties:
TableName: !Sub users-${Environment}
BillingMode: PAY_PER_REQUEST
AttributeDefinitions:
- { AttributeName: id, AttributeType: S }
KeySchema:
- { AttributeName: id, KeyType: HASH }
Outputs:
TableName:
Value: !Ref UsersTable
SAM / CDK との関係
SAM / CDK との 関係を図で示す。
CDK (TypeScript) → CloudFormation テンプレート → AWS リソース
SAM (YAML) → CloudFormation テンプレート → AWS リソース
CloudFormation → AWS リソース
| ツール | 入力 | 出力 |
|---|---|---|
| CloudFormation | YAML/JSON テンプレート | AWS リソース |
| SAM | サーバーレス拡張 YAML | CloudFormation テンプレート |
| CDK | TypeScript/Python | CloudFormation テンプレート |
組み込み関数
組み込み関数を以下に示す。
| 関数 | 用途 | 例 |
|---|---|---|
!Ref | リソースの参照 | !Ref UsersTable |
!Sub | 文字列の置換 | !Sub users-${Environment} |
!GetAtt | 属性の取得 | !GetAtt UsersTable.Arn |
!Join | 文字列の結合 | !Join ['-', [my, stack]] |
!If | 条件分岐 | !If [IsProd, 5, 1] |
スタックの操作
スタックの操作の例を示す。
# スタックの作成
aws cloudformation create-stack --stack-name my-stack --template-body file://template.yaml
# スタックの更新
aws cloudformation update-stack --stack-name my-stack --template-body file://template.yaml
# 変更セットの作成 (プレビュー)
aws cloudformation create-change-set --stack-name my-stack --template-body file://template.yaml
# スタックの削除
aws cloudformation delete-stack --stack-name my-stack
ドリフト検出
ドリフト検出の例を示す。
aws cloudformation detect-stack-drift --stack-name my-stack
手動変更 (コンソール操作) によるテンプレートと実態の乖離を検出する。
ロールバック
デプロイ失敗時に自動的に前の状態にロールバックする。--on-failure ROLLBACK がデフォルト。
CloudFormation を扱う関連書籍も多い。
この記事は役に立ちましたか?
関連用語
AWS SAM
AWS のサーバーレスアプリケーションを定義 / デプロイするためのフレームワーク
Terraform
HashiCorp の IaC ツールで、マルチクラウドのインフラをコードで宣言的に管理する
CDK
TypeScript や Python などのプログラミング言語で AWS インフラを定義する IaC フレームワーク
Infrastructure as Code
インフラの構成をコードで定義し、バージョン管理 / 自動化 / 再現性を実現する手法
インフラストラクチャドリフト
IaC で定義した状態と実際のインフラの状態が乖離する問題
Helm
Kubernetes のパッケージマネージャーで、アプリケーションのデプロイをテンプレート化して管理する
関連する記事
DevOps 本ガイド - CI/CD とインフラ自動化を学ぶ技術書の選び方
DevOps の文化と原則から CI/CD、IaC、オブザーバビリティまで学べる技術書の選び方と学習順序を紹介します。
Web 開発本ガイド - フロントエンドからバックエンドまで
Web 開発の全体像を学べる技術書の選び方と学習マップを紹介。フレームワーク本の賞味期限問題と公式ドキュメントとの使い分けも解説します。
スマホ / パソコン入門書の選び方 - シニアの家族に贈る 1 冊の見つけ方
スマホとパソコンの入門書を「贈る側 / 教える側」の視点で選ぶガイド。機種と OS の一致、文字の大きさ、年度の確認という 3 条件と、Android / iPhone / Windows 11 それぞれの定番書、安全対策の 1 冊まで 2026 年 8 月時点の収載書から紹介します。