AWS CloudFormation のアイコン

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) で理解を深められます。