AWS CloudFormation
テンプレートファイルで AWS インフラをコードとして定義・管理できるサービス
何ができるか
AWS CloudFormation は、AWS のインフラリソースをテンプレートファイル (JSON または YAML) で定義し、自動的に作成・更新・削除できるサービスです。EC2 インスタンス、S3 バケット、RDS データベースなど、必要なリソースをテンプレートに記述すれば、CloudFormation がその通りにリソースを構築します。これにより、インフラの構成をコードとして管理 (Infrastructure as Code) でき、再現性と一貫性が保証されます。
どのような場面で使うか
開発・ステージング・本番環境の統一的な構築、インフラ構成のバージョン管理、環境の複製と再現、マルチリージョンへの展開、コンプライアンス要件に基づくインフラの標準化など、AWS インフラの管理全般で利用されています。 この分野について体系的に学びたい方は、関連書籍 (Amazon) も参考になります。
身近な例え
建築の設計図に例えるとわかりやすいでしょう。設計図 (テンプレート) があれば、同じ建物 (インフラ環境) を何度でも正確に建てられます。設計図を変更すれば、既存の建物を改修 (更新) することもできます。設計図なしに手作業で建てると、毎回微妙に違う建物ができてしまいますが、設計図があれば常に同じ品質が保証されます。
CloudFormation とは
AWS CloudFormation は、Infrastructure as Code (IaC) を実現する AWS のネイティブサービスです。手動でコンソールからリソースを作成する代わりに、テンプレートファイルにリソースの定義を記述し、CloudFormation に実行させます。CloudFormation はリソース間の依存関係を自動的に解決し、正しい順序でリソースを作成します。テンプレートは Git などのバージョン管理システムで管理でき、インフラの変更履歴を追跡できます。
スタックの概念
CloudFormation では、テンプレートから作成されたリソースの集まりをスタックと呼びます。スタック単位でリソースの作成、更新、削除を管理します。スタックを削除すると、そのスタックに含まれるすべてのリソースが自動的に削除されるため、不要な環境のクリーンアップが簡単です。変更セット機能を使えば、テンプレートの変更がどのリソースに影響するかを事前に確認できます。
AWS SAM との関係
AWS SAM (Serverless Application Model) は、CloudFormation の拡張であり、サーバーレスアプリケーションの定義を簡潔に記述できるフレームワークです。SAM テンプレートは CloudFormation テンプレートに変換されて実行されます。Lambda 関数、API Gateway、DynamoDB テーブルなどのサーバーレスリソースを、CloudFormation よりも少ないコード量で定義できます。
はじめかた
CloudFormation を使い始めるには、YAML または JSON でテンプレートファイルを作成します。最もシンプルな例は S3 バケットの作成で、数行のテンプレートで実現できます。CloudFormation コンソールでテンプレートをアップロードし、「スタックの作成」をクリックすれば、定義したリソースが自動的に構築されます。AWS CLI からも sam deploy や aws cloudformation deploy コマンドで実行できます。
注意点
- CloudFormation 自体の利用料金は無料で、作成されたリソースの料金のみが発生する
- テンプレートの記述ミスによりリソースが意図せず削除・再作成される場合があるため、変更セットで事前確認すること
- スタックの削除保護を有効にしておくと、誤ってスタックを削除するリスクを防げる
さらに詳しく知りたい方は、関連書籍 (Amazon) で理解を深められます。