CloudFormation テンプレートには、以下に示すいくつかの利点があります。

  • 使い慣れたフォーマットを採用: CloudFormation テンプレートは JSON (JavaScript Object Notation) フォーマットまたは YAML フォーマットのシンプルなテキストファイルであり、アプリケーションまたはサービス、およびその間の相互接続を実行するために必要な AWS インフラストラクチャを記述するものです。
  • 関係を管理: テンプレートはリソースの関係を簡潔に捉えます。例えば、EC2 インスタンスは、Elastic Load Balancing ロードバランサーに関連付けられている必要があること、または EBS ボリュームは、それが接続されているインスタンスと同じ EC2 アベイラビリティーゾーンになければならないことなどです。
  • 繰り返し使用: テンプレートパラメータを使用すると、さまざまな設定値 (アプリケーションにデプロイするインスタンスの数など) を含むインフラストラクチャをデプロイする際、ほとんどの場合に単一のテンプレートで対応できます。
  • 有用なフィードバックを取得: テンプレートには、デプロイ結果または設定情報をユーザーに返すための出力プロパティも含まれます。例えば、インスタンス化する際には、テンプレートは、ユーザーが新たにインスタンス化されたアプリケーションへ接続するために使用する Elastic Load Balancing のエンドポイントの URL を提供することもあります。
  • 衝突の回避: テンプレートのすべての AWS リソースは論理名を使用して識別され、AWS リソース間での名前の衝突を恐れることなく、複数のスタックをテンプレートから作成できるようになっています。
  • 書き込みおよび起動: どの方法を使用しても、スタックを起動できます。AWS CloudFormation にテンプレートを事前登録する必要はありません。
  • スタックの視覚化: CloudFormation Designer を使用すると、図でテンプレートを視覚化できます。AWS リソースとその関係を簡単に表示して、図がわかりやすくなるようにレイアウトを整えることができます。ドラッグアンドドロップインターフェイスおよび統合された JSON エディタを使用して、テンプレートを編集できます。図に変更を加えると、テンプレートの JSON が自動的に変更されます。
  • リソースの調査: AWS CloudFormation にスタックテンプレートのコピーが保持されるので、スタック作成時に適用した正確なリソース設定を AWS マネジメントコンソール、コマンドラインツール、または API を使って調べることができます。
  • 自動化: 選択したプログラミング言語またはツールを使用して、テンプレートの生成を自動化するオプションがあります。CloudFormation API、AWS SDK、または AWS CLI を使用して、テンプレートからのスタックの作成を自動化するオプションもあります。

テンプレートは以下のハイレベルな JSON 構造になっています。

AWS を無料でお試しください

まずは無料で始める »
またはコンソールにサインイン

12 か月間の AWS 無料利用枠と、24 時間年中無休のカスタマーサービスやサポートフォーラムなどの AWS ベーシックサポート機能を利用できます。

AWS アカウント作成の流れはこちら »

{

    "Description" : "A text description for the template usage",

    "Parameters": {

        // A set of inputs used to customize the template per deployment

    },

    "Resources" : {

        // The set of AWS resources and relationships between them

    },

    "Outputs" : {

        // A set of values to be made visible to the stack creator

    },

    "AWSTemplateFormatVersion" : "2010-09-09"

}

以下のテンプレートは、EC2 インスタンスを作成する方法を示す簡単な例です。

{

    "Description" : "Create an EC2 instance running the Amazon Linux 32 bit AMI.",

    "Parameters" : {

        "KeyPair" : {

            "Description" : "The EC2 Key Pair to allow SSH access to the instance",

            "Type" : "String"

        }

    },

    "Resources" : {

        "Ec2Instance" : {

            "Type" : "AWS::EC2::Instance",

            "Properties" : {

                "KeyName" : { "Ref" : "KeyPair" },

                "ImageId" : "ami-3b355a52"

            }

        }

    },

    "Outputs" : {

        "InstanceId" : {

            "Description" : "The InstanceId of the newly created EC2 instance",

            "Value" : {

                "Ref" : "Ec2Instance"

            }

        }

    },

    "AWSTemplateFormatVersion" : "2010-09-09"

}   

スタックは、テンプレートのインスタンス化によって生じるリソースの集約です。スタックを作成するには、テンプレートおよび必要なパラメータをすべて AWS CloudFormation に指定します。テンプレートおよびテンプレート内で指定されたすべての依存関係に基づいて、AWS CloudFormation はどのような AWS リソースを、どのような順番で作成する必要があるのかを決定します。

スタックを更新するには、スタック内のすべてのリソースで希望する設定をテンプレートに指定します。スタック内の既存のリソースのプロパティを変更して、環境または新しいアプリケーション要件の変更に対応させることができます。例えば、スタックで、AWS CloudWatch アラームのアラームしきい値を変更したり、インスタンスで実行されている AMI を更新したりすることができます。AWS CloudFormation は、スタック内の異なるリソースにおける変更の作動を処理します。多くの場合、変更は、実行中のアプリケーションに影響を及ぼすことなく行われます。ただし、変更を動的に行えない場合(EC2 インスタンスでの AMI の更新など)、AWS CloudFormation は新しいリソースを作成し、それをスタックに再度書き込みます。完全な更新が正常終了したとサービスが判断すると、古いリソースは削除されます。

AWS CloudFormation はスタックを完全に作成または更新します。スタックの完全な作成または更新が不可能な場合、AWS CloudFormation はそれをロールバックします。デバッグを目的として、ロールバック操作を無効にし、後でスタックの作成または更新を手動で試みることができます。

AWS CloudFormation Designer を使用してスタックのテンプレートを作成または変更してから、そのテンプレートを AWS CloudFormation に送信してスタックを作成または更新することもできます。AWS CloudFormation Designer は AWS マネジメントコンソール内で利用できます。

AWS CloudFormation には、AWS マネジメントコンソールから簡単にアクセスできます。このウェブベースのインターフェイスでは、ポイントアンドクリック方式でスタックのデプロイと管理を行うことができます。AWS マネジメントコンソール内から、いくつかの簡単なステップでアプリケーションを作成、削除、更新できます。

AWS CloudFormation Designer は、リソースをテンプレートに追加するためのドラッグアンドドロップインターフェイスを備えた視覚ツールです。CloudFormation Designer を使用すると、AWS インフラストラクチャの設計に費やす時間が増え、テンプレートを手動でコーディングする時間が減ります。例えば、リソースを追加または削除すると、AWS CloudFormation Designer によって基本の JSON が自動的に変更されます。統合されたテキストエディタを使用して、リソースプロパティ値や入力パラメータなどのテンプレートの詳細を指定することもできます。詳細については、ドキュメントをご覧ください。

AWS CloudFormation Designer は AWS CloudFormation コンソールに含まれているため、ツールを使用するには、AWS 認証情報を使用してサインインする必要があります。AWS CloudFormation Designer を使用するには、https://console.aws.amazon.com/cloudformation/designer にアクセスしてください。次のシナリオでは、AWS CloudFormation Designer の機能をいくつか紹介しています。

テンプレートリソースの視覚化
テンプレートに含まれているリソースとリソース間の関係を理解するために JSON 形式のテキストファイルを解析することは、困難な場合があります。AWS CloudFormation Designer を使用すると、有効な AWS CloudFormation テンプレートを開くことができ、ツールによってすべてのテンプレートリソースが図として視覚化されます。JSON を読み取らなくても、テンプレートリソースと、リソースがどのように接続されているかを簡単に表示できます。AWS CloudFormation Designer には、JSON テキストエディタが含まれているため、必要に応じて、テンプレートの詳細をいつでも表示できます。

テンプレート作成の簡素化
テキストエディタでテンプレートリソースを操作するときは、JSON を手動で編集する必要がありますが、この作業は面倒でエラーを起こしやすくなります。AWS CloudFormation Designer では、図を扱うのと同様の方法でリソースを扱うことができます。新しいリソースをドラッグアンドドロップしてテンプレートに追加したり、リソース間の接続をドラッグして関係を確立したりできます。AWS CloudFormation Designer では、自動的に JSON を変更します。リソースの視覚化に加えて、統合された JSON テキストエディタには、リソースプロパティ名の自動入力機能があります。AWS CloudFormation Designer を使用すると、テンプレートを手動でコーディングする時間を短くして、AWS インフラストラクチャの設計に時間をかけられるようになります。

AWS CloudFormation は、使いやすく柔軟性の高い、シンプルな API のセットを提供します。利用可能な AWS CloudFormation API の完全なリストについては、「AWS CloudFormation API リファレンスガイド」を参照してください。最も一般的に使用される API の例とその機能を次に示します。

  • CreateStack: 新しいスタックの作成を開始します。呼び出しへの入力パラメータには、スタック名とソーステンプレートのファイル名 (または Amazon S3 URL) が含まれます。スタック作成プロセスが正常に完了すると、スタックは CREATE_COMPLETE 状態になります。スタックの作成に失敗した場合は、AWS CloudFormation は以前に作成したリソースを削除します。ただし、ユーザーがデバッグのために、これらの要素を保持するフラグを指定している場合に限ります。
  • ListStacks: アカウント内のスタックのすべてを表示します。これを使用すれば、一連のスタックおよびスタックの現在のステータス (スタックが作成中か更新中かなど) を確認できます。
  • ListStackResources: スタック作成の一環として作成されたすべての AWS リソース名と識別子をリストします。情報の表示に加えて、このアプリケーションは、環境を把握するために AWS CloudFormation 対応アプリケーションで使用することができます。
  • DescribeStackEvents: AWS CloudFormation により生成されたオペレーションとスタックのイベントをすべて表示します。これにより、作成または削除の進行状況を確認できます。
  • UpdateStack: 既存のスタックの更新プロセスを開始します。呼び出しへの入力パラメータには、更新されたテンプレートのスタック名とファイル名 (または Amazon S3 URL) が含まれます。スタック更新プロセスが正常に完了すると、スタックは CREATE_ COMPLETE 状態になります。スタックの更新に失敗すると、AWS CloudFormation は行われたすべてのリソースの変更をロールバックするため、スタックは元のテンプレートに記述されている状態に戻ります。

AWS CloudFormation は、AWS SDK および AWS CLI を介して使用することもできます。

AWS CloudFormation は Amazon Simple Notification Service(Amazon SNS)と統合されているため、スタックの作成、更新、および削除が進行するとお客様は通知を受け取ります。進行状況を提供することに加えて、これにより他のプログラムが CloudFormation 内のイベントの存在を認識して、応答したり、さらにはスタックの設定プロセスに参加したりできます。

AWS CloudFormation テンプレートは、以前からの AWS における経験を活用できるように設計されています。各リソースは、ネイティブ API を介してリソースを作成するために使用された名前と同じ名前を持つパラメータのセットを持っています。以下のテンプレートのスニペットは、Amazon EBS ボリュームを定義する方法を示しています。テンプレート内のボリュームの論理名は "myVolume" で、そのタイプは "AWS::EC2::Volume" です。以前に EBS ボリュームを使用したことがあれば、プロパティは非常になじみやすいものです。

"myVolume" : {

    "Type" : "AWS::EC2::Volume",

    "Properties" : {

        "Size" : "10",

        "SnapshotId" : "snap-7b8fd361",

        "AvailabilityZone" : "us-east-1a"

    }

}

AWS CloudFormation では、EC2 インスタンスにデプロイすることができるヘルパースクリプトがいくつか用意されています。これらのスクリプトは、スタックからリソースのメタデータを読む簡単な方法、およびアプリケーションを構成する、テンプレートにリストされているインスタンスにパッケージとファイルをデプロイする、設定変更やアプリケーション更新といったスタックの更新に反応させるためにそれを使用する簡単な方法を提供します。

以下のスクリプトが利用可能です。

  • cfn-get-metadata: テンプレート内のリソースに付いているメタデータを取得します。
  • cfn-init: テンプレートに記述されているパッケージとファイルをダウンロードし、インストールします。
  • cfn-signal: アプリケーションが起動し実行されていて、トラフィックを通す準備ができていることを、スタックの作成ワークフローに知らせます。
  • cfn-hup: AWS コンソール、コマンドラインツール、または直接 API を介してなされたスタックの更新にしたがい、アプリケーション固有のフックがそれらの変化に反応するようにするデーモン。

CloudFormation スクリプトは、そのまま使用することも、CloudInit (Amazon Linux AMI およびその他の Linux AMI で使用可能な機能) と一緒に使用することもできます。アプリケーションのブートストラップおよび設定の更新の詳細については、AWS CloudFormation の開発者向けリソースをご覧ください。 

このサービスのご利用には、アマゾン ウェブ サービスカスタマーアグリーメントが適用されます。