【AWS】CloudFormationの概要と使い方

AWS

CloudFormationはコードでAWSの環境を管理できるAWSのツールです。

Infrastructure as Code のプロビジョニングツール - AWS CloudFormation - AWS
AWS CloudFormation は、AWS やサードパーティーのリソースを簡単にモデル化、プロビジョニング、管理することができる Infrastructure as Code (IaC) サービスです。

CloudFormationの概要

CloudFormationはAWSが提供している、AWSの環境をJSON形式またはYAML形式のコードで管理するツールです。

AWS CloudFormationの料金は従量課金で、使用していないときは課金されない

AWSでCloudFormationは利用したときだけ課金が発生し、CloudFormationを使用していないときは特に課金されません。

次の名前空間にあるリソースプロバイダーを AWS CloudFormation で使用する場合は、追加料金は発生しません: AWS::* と Alexa::*。この場合、AWS CloudFormation を使用して作成した AWS リソース (Amazon Elastic Compute Cloud (EC2) インスタンス、Elastic Load Balancing のロードバランサーなど) に対しては、手動で作成した場合と同様、料金が発生します。 お支払いはお客様が実際に使用した分だけで、最低料金や前払いの義務は発生しません。

AWS CloudFormation の料金

CloudFormationはCFnと略される

見出しの通り、CloudFormationはCFnと略されます。

AWS公式のCloudFormation資料

AWSが公式に提供しているCloudFormationの資料を掲載します。

https://d1.awsstatic.com/webinars/jp/pdf/services/20200826_AWS-BlackBelt_AWS-CloudFormation.pdf

[AWS Black Belt Online Seminar] AWS CloudFormation 資料及び QA 公開 | Amazon Web Services
先日 (2020/08/26) 開催しました AWS Black Belt Online Seminar「AW

AWS::とFn::

CloudFormationのAWS::には、CloudFormationで構築したいAWSの環境について記述します。例えばAWS::EC2::InstanceはEC2に関する情報を示します。

Fn::は組み込み関数関数と呼ばれるもので、以下の特徴があります。主にパラメータの参照や値の加工などに利用する関数です。

組み込み関数

  • パラメータの参照や値の加工などに利用する関数
  • 記法は完全名の「Fn::xxx」と短縮形の「!xxx」の2つ
  • 主な組み込み関数
  • 値を参照する !Ref, !GetAtt
  • 文字列を結合する !Join
  • AZを取得する !GetAZs
  • エクスポート値取得 Fn::ImportValue
  • Base64エンコード Fn::Base64
  • 条件関数 Fn::If, Fn::Equals, Fn::Not

Fn::の詳細は以下のAWS公式ドキュメントが参考になります。

組み込み関数リファレンス - AWS CloudFormation
CloudFormation スタックの管理に役立つ、次の組み込み関数の詳細情報を一覧表示します。

CloudFormationの「Outputs」以下に書かれていることは構築後に確認できるパラメータの出力

Outputs以下に書かれているパラメータは、AWSの環境をCloudFormationで構築した後に取得・表示したい情報になります。

  • スタック構築後に取得・表示したい情報の定義
  • アクセスURLや、DBの通信先情報、作成したIAMユーザー名など、あとで
    使用したい情報がある場合に便利

https://d1.awsstatic.com/webinars/jp/pdf/services/20200826_AWS-BlackBelt_AWS-CloudFormation.pdf

詳細は以下のAWS公式ドキュメントが参考になります。

CloudFormation テンプレートの Outputs 構文 - AWS CloudFormation
CloudFormation テンプレートの Outputs セクションに出力を定義することによって、1 つ、または複数の値を返します。

CloudFormationのヘルパースクリプト

CloudFormationには、以下の4つのヘルパースクリプトが用意されています。

  • cfn-init
  • cfn-signal
  • cfn-get-matadata
  • cfn-hup

それぞれの使い方については以下の公式ドキュメントからの引用が参考になります。各ヘルパースクリプトの詳細も以下の引用元ドキュメントに詳しく記載があります。

CloudFormation には、スタックの一部として作成する Amazon EC2 インスタンスでソフトウェアをインストールしたりサービスを開始したりするために使用できる、次の Python ヘルパースクリプトが用意されています。

cfn-init – リソースメタデータの取得と解釈、パッケージのインストール、ファイルの作成、およびサービスの開始で使用します。

cfn-signal – WaitCondition または CreationPolicy でシグナルを送信するために使用し、前提となるリソースやアプリケーションの準備ができたときに、スタックの他のリソースを同期できるようにします。

cfn-get-metadata – 特定のキーへのリソースまたはパスのメタデータを取得するために使用します。

cfn-hup – メタデータへの更新を確認し、変更が検出されたときにカスタムフックを実行するために使用します。

テンプレートからスクリプトを直接呼び出します。スクリプトは、同じテンプレートで定義されているリソースメタデータと組み合わされて機能します。スクリプトは Amazon EC2 インスタンスでスタック作成プロセス中に実行されます。

CloudFormation ヘルパースクリプトリファレンス - AWS CloudFormation
CloudFormation でソフトウェアをインストールしたりサービスを開始したりするために使用できる Python ヘルパースクリプトについて説明します。

CloudFormationを実際に使ってみる

CloudFormationをAWSで使ってみます。

CloudFormationは以下の方法で実行できます。

  • AWSの管理画面(マネージメントコンソール)

CloudFormationでAWSリソースを管理するには、CloudFormationのコードを作成する必要があります。CloudFormationのコードを作成する方法は以下で解説します。

CloudFormationのInfrastructure Composerを使ってコードを作成する

CloudFormationにデフォルトで搭載されているInfrastructure Composerを使用すると、GUIからCloudFormationのコードを作成することができます。

テンプレートの形式はYAML、JSONどちらも対応しています。

例えば、S3のCloudFormationのコードを作成したければ、以下の画像のようにS3のアイコンをドラッグアンドドロップします。

するとテンプレートウィンドウに以下のようにコードが出力されます。

Cursor+AWS MCPでバイブコーディングでCloudFormationを作成する

AWS MCP Server をローカルで立ち上げ、CursorでMCPを使えるようにしてバイブコーディングでCloudFormationを使用することができます。

What is the AWS MCP Server? - AWS MCP Server
Learn about AWS MCP Server, a fully managed remote Model Context Protocol server that provides AI assistants with secure...

Amazon QでCloudFormationを作成する

AWSのアカウントで、AWSの管理画面(マネージメントコンソール)にログインして、Amazon Qにチャット形式でCloudFormationの記述を依頼できます。

タイトルとURLをコピーしました