AWS CloudFormation
テンプレートで AWS リソースをコードとして定義・プロビジョニングする IaC サービス
何ができるか
AWS CloudFormation は、JSON または YAML 形式のテンプレートファイルに AWS リソースの構成を記述し、その定義に基づいてリソースを自動的に作成・更新・削除する Infrastructure as Code (IaC) サービスです。手動でコンソールを操作する代わりに、コードでインフラを管理できます。テンプレートをバージョン管理することで、インフラの変更履歴を追跡し、再現可能な環境構築を実現します。
どのような場面で使うか
開発・ステージング・本番の各環境を同一のテンプレートから作成し、環境間の差異をなくす用途で広く使われています。また、新しいプロジェクトの立ち上げ時にベストプラクティスに沿ったインフラを一括構築したり、災害復旧 (DR) 用の環境を別リージョンに迅速に再構築する場面でも活用されます。 この分野について体系的に学びたい方は、関連書籍 (Amazon) も参考になります。
身近な例え
家の設計図に例えるとわかりやすいでしょう。大工さん (AWS) に口頭で「リビングはこのくらいで、キッチンはあそこに...」と伝えると、毎回微妙に違う家ができてしまいます。CloudFormation は詳細な設計図 (テンプレート) を渡して「この通りに建ててください」と依頼する方法です。同じ設計図を使えば、何度でも同じ家を正確に建てられます。
CloudFormation とは
AWS CloudFormation は、AWS のインフラをコードで管理するためのサービスです。テンプレートと呼ばれるテキストファイルに、必要な AWS リソース (EC2 インスタンス、S3 バケット、Lambda 関数など) とその設定を記述します。CloudFormation はテンプレートを読み取り、記述されたリソースを正しい順序で自動的に作成します。この仕組みを Infrastructure as Code (IaC) と呼びます。
スタックによるリソース管理
CloudFormation では、テンプレートから作成されたリソースの集まりを「スタック」と呼びます。スタック単位でリソースのライフサイクルを管理でき、スタックを削除すれば関連するリソースがすべてクリーンアップされます。テンプレートを更新してスタックを更新すると、CloudFormation は変更が必要なリソースだけを特定し、安全に更新を適用します。変更セット機能を使えば、更新前に影響範囲をプレビューできます。
SAM と CDK
CloudFormation をより便利に使うためのツールとして、AWS SAM (Serverless Application Model) と AWS CDK (Cloud Development Kit) があります。SAM はサーバーレスアプリケーション向けの簡略化されたテンプレート記法で、Lambda 関数や API Gateway の定義を短いコードで記述できます。CDK は TypeScript や Python などのプログラミング言語でインフラを定義でき、最終的に CloudFormation テンプレートに変換されます。
はじめかた
CloudFormation を使い始めるには、YAML または JSON でテンプレートファイルを作成します。最小限のテンプレートには、AWSTemplateFormatVersion と Resources セクションがあれば十分です。作成したテンプレートを CloudFormation コンソールにアップロードするか、AWS CLI で sam deploy や aws cloudformation deploy コマンドを実行してスタックを作成します。
注意点
- スタックの更新時に一部のリソースは置換 (削除して再作成) が発生する場合がある。変更セットで事前に確認すること
- テンプレートのサイズ上限は S3 経由で 1 MB。大規模なテンプレートはネストされたスタックで分割を検討すること
- ROLLBACK_COMPLETE 状態のスタックは更新できないため、削除して再作成する必要がある
さらに詳しく知りたい方は、関連書籍 (Amazon) で理解を深められます。