全般
AWS CloudFormation とは何ですか?
AWS CloudFormation は、開発や本運用に必要な、互いに関連する AWS およびサードパーティーのリソースコレクションを作成し、そのリソースを適切な順序かつ予測可能な方法でプロビジョニングおよび管理するためのサービスです。
デベロッパーは、AWS CloudFormation を使用して何ができますか?
デベロッパーは、特定のリソースの API が持つ複雑さを抽象化するシンプルな宣言型のスタイルで、コンピューティング、データベース、およびその他数多くのリソースのデプロイと更新を行うことができます。AWS CloudFormation は、繰り返し可能、予測可能、かつ安全な方法でリソースのライフサイクルを管理できるように設計されています。また、AWS CloudFormation は、自動ロールバックや自動ステート管理が可能で、複数のアカウントやリージョンのリソースを管理できます。最近の機能拡張とオプション追加により、複数の方法でリソースを作成できるようになりました。例えば、AWS CDK を使用して高級言語でコードを作成したり、既存のリソースをインポートしたり、設定の変動を検知したりできます。また、新しいレジストリを使用して、数多くのコア CloudFormation のメリットを継承するカスタム型を簡単に作成できます。
CloudFormation と AWS Elastic Beanstalk はどのように異なるのですか?
これらのサービスは互いに補完するように設計されています。 AWS Elastic Beanstalk は、クラウドでアプリケーションを簡単にデプロイおよび実行できる環境を提供します。AWS CloudFormation はデベロッパーツールと統合されており、ワンストップでアプリケーションのライフサイクルを管理できます。Elastic Beanstalk のワークロードと同じようにアプリケーションのワークロードを管理できれば、さらに短期間でアプリケーションの作成と更新を行うことができます。Elastic Beanstalk の内部では、CloudFormation を使用してリソースの作成とメンテナンスが行われています。アプリケーションの要件において、よりカスタマイズされた制御を行うよう規定されている場合、CloudFormation の追加機能を使用することで、さらに多くの方法を使用してワークロードを制御できます。
AWS CloudFormation は、広範にわたる AWS およびサードパーティーのリソースのための便利なプロビジョニングメカニズムです。既存のエンタープライズアプリケーション、レガシーアプリケーション、さまざまな AWS リソースを使って構築したアプリケーション、およびコンテナベースのソリューション (AWS Elastic Beanstalk を使用して構築したものを含む) など、さまざまなタイプのアプリケーションのインフラストラクチャに対するニーズを満たします。
AWS CloudFormation は、AWS リソースタイプの 1 つとして Elastic Beanstalk アプリケーション環境をサポートしています。これにより、例えば、AWS Elastic Beanstalk がホストするアプリケーションを、アプリケーションデータの格納のために RDS データベースと一緒に作成/管理できます。サポートされている他の AWS リソースをグループに追加することもできます。
AWS CloudFormation では、どのような新しい概念が導入されていますか?
CloudFormation では、4 つの概念が導入されています。テンプレートは JSON または YAML の宣言型コードファイルとなっており、アプリケーションにデプロイすべき各リソースの目標状態が記述されます。スタックによって、テンプレートで記述されたリソースグループの実装と管理が行われます。これにより、それらのリソースの状態と依存関係をまとめて管理できます。変更セットは、変更内容のプレビューで、リソースを作成、更新、削除するスタック操作によって実行されます。スタックセットは、まとめて管理したいスタックのグループです。スタックセットを使用すると、グループを複製することができます。
AWS CloudFormation はどのようなリソースをサポートしていますか?
サポートされている AWS リソースとその機能については、ドキュメントのリリース履歴に記載されている、サポートされている AWS サービスのページにアクセスしてください。
AWS CloudFormation レジストリと AWS CloudFormation カスタムリソースを利用することで、追加の AWS リソースおよびサードパーティーのリソースを管理できます。
AWS CloudFormation スタックの一部である個々の AWS リソースを管理することはできますか?
はい、できます。CloudFormation は邪魔をしません。お客様のインフラストラクチャに含まれるすべての要素をこれまでどおり完全に制御できます。また、AWS およびサードパーティーの既存のツールを使用して、お客様の AWS リソースをこれまでどおりに管理できます。ただし、CloudFormation では追加のルールを使用できるため、ベストプラクティスとして、また、コンプライアンス管理の面でも、リソースに対する変更を CloudFormation に管理させることをお勧めします。この予測可能かつ管理された手法を使用すれば、アプリケーションポートフォリオ全体の何百何千ものリソースを容易に管理することができます。
AWS CloudFormation テンプレートの要素は何ですか?
CloudFormation テンプレートは、5 種類の要素で構成されている JSON フォーマットまたは YAML フォーマットのテキストファイルです。
1.テンプレートパラメータのオプションリスト (入力値はスタック作成時に供給されます)。
2.出力値のオプションリスト (ウェブアプリケーションの完全な URL など)。
3.静的な設定値を見るのに使用するデータテーブルのオプションリスト (AMI 名など)。
4.AWS リソースとそれらの設定値のリスト。
5.テンプレートファイルフォーマットのバージョン番号。
テンプレートパラメータを使用すると、スタックを作成する際に実行時のテンプレートの側面をカスタマイズできます。例えば、Amazon RDS データベースのサイズ、Amazon EC2 インスタンスタイプ、データベース、およびウェブサーバーのポート番号は、スタック作成時に AWS CloudFormation に渡すことができます。各パラメータにはデフォルト値と説明を入れることができ、「NoEcho」としてマークすることで、画面上と AWS CloudFormation イベントログにおいて入力した実際の値を非表示にすることができます。AWS CloudFormation スタックの作成時に、AWS Management Console により自動的に統合され、ポップアップダイアログのフォームが表示されるので、そこでパラメータ値を編集することができます。
出力値は、AWS マネジメントコンソールまたはコマンドラインツールを介してユーザーにスタックの主要リソース (Elastic Load Balancing ロードバランサーや Amazon RDS データベースのアドレスなど) を提示できる便利な方法です。簡単な機能を使用して、実際の AWS リソースに関連付けられた文字列リテラルと属性値を連結できます。また、テンプレートでは、レジストリリソースタイプ、カスタムのプライベート型、独自のマクロを使用でき、AWS Secrets Manager や AWS System Manager Parameter Store から設定パラメータを取得できます。
AWS CloudFormation は、どのように実際のリソース名を選択するのですか?
テンプレートで AWS リソースに論理名を割り当てることができます。スタックが作成されるときに、AWS CloudFormation が論理名を対応する実際の AWS リソース名にバインドします。実際のリソース名は、スタックと論理リソース名の組み合わせです。これにより、AWS リソース間での名前の衝突を心配せずに、テンプレートから複数のスタックを作成することができます。
すべてのリソースに名前を付けることができないのはなぜですか?
AWS CloudFormation のリソースの一部には名前を付けられますが (Amazon S3 バケットなど)、すべてのリソースに名前を付けられるわけではありません。リソースに名前を付けると、テンプレートの再利用が制限され、更新のためリソースの入れ替えが必要になったときに名前の競合が発生します。このような問題を最小限にするため、CloudFormation でリソース名を付けることができるかどうかは、ケースバイケースになります。
AWS CloudFormation を使用してスタックの作成時にソフトウェアをインストールできますか?
はい。AWS CloudFormation は、アプリケーションのブートストラップスクリプト一式を提供するので、CloudFormation テンプレートにそれらを記述するだけで、EC2 インスタンスにパッケージ、ファイル、およびサービスをインストールできます。詳細と操作手順については、AWS CloudFormation でアプリケーションをブートストラップするをご覧ください。
また、CloudFormation を Systems Manager と統合することで、Systems Manager Automation ドキュメントを使用したソフトウェアのインストールが促進/維持されます。
Chef と AWS CloudFormation は一緒に使用できますか?
はい。AWS CloudFormation は、EC2 インスタンス上の Chef Server と Chef Client ソフトウェアの両方をブートストラップするのに使用することができます。詳細と操作手順については、Integrating AWS CloudFormation with Chef をご覧ください。
Puppet と AWS CloudFormation は一緒に使用することができますか?
はい。AWS CloudFormation は、EC2 インスタンス上の Puppet Master と Puppet Client ソフトウェアの両方をブートストラップするのに使用することができます。詳細と操作手順については、「Integrating AWS CloudFormation with Puppet」をご覧ください。
Terraform と AWS CloudFormation は一緒に使用できますか?
はい。CloudFormation を使用すると、EC2 instances 上で Terraform エンジンをブートストラップできます。また、Terraform リソースプロバイダーを使用して、スタック内でのリソースの作成、スタック状態の管理、依存関係の管理、ロールバックを行うことができます。
AWS CloudFormation は Amazon EC2 のタグ付けをサポートしていますか?
はい。タグ付け機能をサポートしている Amazon EC2 リソースには、AWS テンプレートでもタグ付けできます。タグ値は、テンプレートのパラメータ、その他のリソース名、リソースの属性値 (アドレスなど)、またはシンプルな機能 (文字列のリストを連結など) で計算された値を指すことができます。CloudFormation によって、一部である CloudFormation スタック名で自動的に Amazon EBS ボリュームおよび Amazon EC2 インスタンスがタグ付けされます。
Amazon EC2 インスタンスまたは Auto Scaling の起動設定ユーザーデータフィールドにアクセスできますか?
はい。シンプルな機能を使用して、文字列リテラルと AWS リソースの属性値を連結して、テンプレート内のユーザーデータフィールドにそれらを渡すことができます。簡単使用の機能の詳細については、当社のサンプルテンプレートをご参照ください。
スタックのリソースの1つが正常に作成できない場合はどうなりますか?
デフォルトでは、「エラー時の自動ロールバック」機能が有効になっています。この機能が有効になっていると、CloudFormation は、個々の操作がすべて成功したときのみすべてのリソースを作成または更新するよう指示されます。いずれかの操作が失敗した場合、CloudFormation によって、最後にわかっている安定した状態にスタックの設定が戻されます。これは、例えば、お客様が誤って Elastic IP アドレスのデフォルト制限を超えた時、または実行しようとしている EC2 AMI へアクセスできない際などに便利です。この機能により、スタックが完全に作成されているのか、まったく作成されていないのかという事実の信頼性が確実になり、システム管理と CloudFormation に構築されているレイヤー化されたソリューションが簡素化されます。
アプリケーションが起動するまでスタック作成を待つことはできますか?
はい。CloudFormation では、オプションの 1 つとして、バリアとして機能する WaitCondition リソースが提供されており、アプリケーションや管理システムなどの外部ソースから完了信号を受信するまで他のリソースの作成をブロックすることができます。そのほか、AWS Lambda 関数を使用してカスタムロジックを作成するオプションなどが用意されています。
スタックが削除された際に、自分のデータを保存することはできますか?
はい。CloudFormation では、テンプレート内のリソースの削除ポリシーを定義することができます。それらが削除される前に Amazon EBS ボリュームや Amazon RDS データベースインスタンスにスナップショットを作成するように指定することができます。また、スタックが削除された際にも、リソースを保持して削除しないように指定できます。これは、スタックが削除される際に、Amazon S3 バケットを保持するのに便利です。
スタックを仮想プライベートクラウド (VPC) の中に作成できますか?
はい。CloudFormation がサポートしているものには、VPC、サブネット、ゲートウェイ、ルートテーブル、およびネットワーク ACL の作成に加えて、各種リソースの作成があります。例えば、Elastic IP、Amazon EC2 インスタンス、EC2 セキュリティグループ、Auto Scaling group、Elastic Load Balancing、Amazon RDS データベースインスタンスおよび Amazon RDS セキュリティグループを VPC の中で作成することができます。
スタックが作成された後にそれを更新できますか?
はい。CloudFormation を使用して、制御された予測可能な方法で、既存のスタックのリソースを変更して更新することができます。テンプレートを使用してスタックの変更を管理することで、AWS インフラストラクチャで動作するソフトウェアの場合と同様に、AWS インフラストラクチャにバージョンコントロールを適用できます。
CloudFormation のコミュニティに参加するにはどうすればよいですか?
AWS CloudFormation GitHub コミュニティに参加してください。
CloudFormation 以外で作成されたリソースを管理できますか?
はい。 リソースインポートにおいて、リソースのインポートを使用して既存のリソースを AWS CloudFormation 管理機能にインポートできます。
開始方法
AWS CloudFormation にはどのようにサインアップすればよいのですか?
CloudFormation にサインアップするには、CloudFormation の製品ページで [Create Free Account] (まずは無料で始める) をクリックします。サインアップ後、CloudFormation のドキュメントをご参照ください。このドキュメントには入門ガイドが含まれています。
AWS CloudFormation にサインアップする際に、私の電話番号を検証するよう求められるのはなぜですか?
CloudFormation の登録には、有効な電話番号と E メールアドレスを AWS に提出することが必要です。これはお客様に連絡する必要が生じた場合のためです。電話番号の検証に要するのは数分のみです。ここでは登録プロセス中に電話を受信し、電話のキーパッドを使用して PIN 番号を入力します。
サインアップした後、どのように開始するのですか?
CloudFormation を始める方法として最良なのは、当社の技術文書に含まれている入門ガイドの手順に従うことです。WordPress などのアプリケーションを実行するのに必要なインフラストラクチャを作成する方法を示すサンプルテンプレートのいずれかを使用すると、数分以内にデプロイすることができます。そのほか、CloudFormation トレーニングのためのさまざまな手段が用意されています。例えば、サードパーティープロバイダーによるトレーニングを受けたり、ウェブ上のチュートリアルや記事を利用したりすることができます。詳細については、CloudFormation のリソースを参照してください。
AWS CloudFormation をちょっと見てみるのに使用できるサンプルのテンプレートはありますか?
はい。CloudFormation には、製品をテストし、その機能を見ることができるサンプルテンプレートが含まれています。当社のサンプルテンプレートは、複数のアベイラビリティーゾーンの冗長性、スケールアウト、アラームのためのベストプラクティスに従い、複数の AWS リソースを相互接続して合わせて使用する方法を示しています。AWS マネジメントコンソールにアクセスし、[スタックを作成] をクリックし、手順に従ってサンプルのいずれかを選択して起動するだけで開始できます。スタックを作成したら、コンソール内で目的のスタックを選択し、[テンプレート] タブと [パラメータ] タブを調べて、各スタックの作成に使用したテンプレートファイルの詳細を確認します。サンプルテンプレートは GitHub でも入手できます。
AWS CloudFormation レジストリ
AWS CloudFormation レジストリとは何ですか?
AWS CloudFormation レジストリは、AWS およびサードパーティーのリソースタイプを登録、使用、検出できるマネージドサービスです。AWS CloudFormation テンプレートでリソースをプロビジョニングする前に、サードパーティーのリソースタイプを登録する必要があります。詳細については、AWS のドキュメント「AWS CloudFormation レジストリの使用」を参照してください。
AWS CloudFormation のリソースタイプとは何ですか?
リソースプロバイダーは、作成、読み取り、更新、削除、リストの操作を介して、基になるリソースのライフサイクルを制御する仕様およびハンドラーを持つリソースタイプのセットです。リソースプロバイダーを使用すれば、CloudFormation を使ってリソースをモデリングおよびプロビジョニングできます。たとえば、 AWS::EC2::Instance は Amazon EC2 プロバイダーのリソースタイプです。このタイプを使用すれば、CloudFormation を使って Amazon EC2 インスタンスをモデリングおよびプロビジョニングできます。CloudFormation レジストリを使用すると、リソースプロバイダーを構築し使用して、SaaS モニタリング、チーム生産性、ソースコード管理リソースなどのサードパーティーリソースをモデリングおよびプロビジョニングできます。
AWS とサードパーティーのリソースプロバイダーの違いは何ですか?
AWS とサードパーティのリソースプロバイダーの違いは、その起源にあります。AWS リソースプロバイダーは Amazon と AWS が構築およびメンテナンスを行い、AWS リソースとサービスを管理します。たとえば、3 つの AWS リソースプロバイダーが、Amazon DynamoDB、AWS Lambda、Amazon EC2 リソースの管理を行います。これらのプロバイダーには、AWS::DynamoDB::Table、AWS::Lambda::Function、AWS::EC2::Instance などのリソースタイプが含まれます。完全なリファレンスについては、ドキュメントをご覧ください。
サードパーティのリソースプロバイダーは、別の会社、組織、または開発者コミュニティが構築します。これらは、AWS と AWS 以外のリソース (AWS アプリケーションリソースなど) および AWS 以外の SaaS ソフトウェアサービス (モニタリング、チームの生産性、インシデント管理、バージョンコントロール管理ツールなど) の管理に役立ちます。
リソーススキーマとは何ですか?
リソーススキーマでは、構造化された整合性のある形式でリソースタイプを定義します。このスキーマは、リソースタイプの定義を検証するためにも使用します。スキーマでは、所定のリソースタイプでサポートされているすべてのパラメータと属性、および、最低限の権限でリソースを作成するのに必要な権限が定義されます。
リソースタイプを開発するにはどうすればよいですか?
AWS CloudFormation CLI を使って、リソースプロバイダーを構築します。まず、簡単なリソースの宣言型スキーマを定義します。これには、必要なアクセス許可や他のリソースとの関係が含まれます。次に、CloudFormation CLI を使用して、ユニットおよび統合テストのテストスタブとともに、リソースライフサイクルハンドラー (作成、読み込み、更新、削除、リスト表示) のスキャフォールディングを生成します。
リソースプロバイダーを登録するにはどうすればよいですか?
オープンソースの AWS CloudFormation CLI を使用するか、AWS SDK および AWS CLI を介して利用可能な RegisterType と関連するレジストリ API を直接呼び出すことが可能です。詳細については、AWS のドキュメント「AWS CloudFormation レジストリの使用」を参照してください。AWS リソースプロバイダーはそのまま使用でき、使用する前に追加の登録手順は必要ありません。
AWS CloudFormation パブリックレジストリ
CloudFormation パブリックレジストリは CloudFormation レジストリに同関連していますか?
2019 年 11 月に開始された CloudFormation レジストリはプライベートリストで構成されており、顧客は CloudFormation を自分のプライベートな使用に合わせて拡張できます。パブリックレジストリは CloudFormation レジストリを拡張し、リソースタイプとモジュールを共有、検索、消費、管理するためのパブリックで検索可能なセントラルロケーションを追加します<>。これにより、インフラストラクチャとアプリケーションを、AWS 製品とサードパーティー製品両方に対して、一貫した方法で構成および管理することがはるかに簡単になります。
CloudFormation パブリックレジストリで利用可能なサードパーティーのリソースタイプを利用するのに費用はかかりますか?
はい。CloudFormation 料金ページを参照してください。
AWS は、CloudFormation パブリックレジストリでサードパーティーの拡張機能のパブリッシャーを検証しますか?
はい。CloudFormation パブリックレジストリでは、検証済みのパブリッシャーからキュレートしたコンテンツにアクセスできます。まず、AWS Marketplace または GitHub や Bitbucket などのサードパーティを使用して、各パブリッシャーの ID を確認します。
AWS CloudFormation パブリックレジストリとは何ですか?
CloudFormation パブリックレジストリは、AWS パートナーネットワーク (APN) パートナーと開発者コミュニティによって公開されたリソースタイプ (プロビジョニングロジック) とモジュールを含む、新しい検索可能で管理された拡張機能のカタログです。CloudFormation パブリックレジストリを使用すれば、誰もがレジストリにリソースタイプとモジュールを公開できるようになりました。顧客はこれらの公開されたリソースタイプやモジュールを簡単に見つけて使用できることで、自分で構築して維持する必要がなくなります。
リソースとモジュールの違いは何ですか?
リソースタイプは、プロビジョニングロジックを含むコードパッケージです。これにより、Amazon EC2 インスタンスや Amazon DynamoDB テーブルなどのリソースの作成から削除までのライフサイクルを管理し、複雑な API インタラクションを抽象化できます。リソースタイプには、リソースの形状とプロパティを定義するスキーマと、リソースをプロビジョニング、更新、削除、および記述するために必要なロジックが含まれています。CloudFormation パブリックレジストリのサードパーティリソースタイプの例としては、Datadog モニター、MongoDB Atlas プロジェクト、または Atlassian Opsgenie ユーザーなどです。
モジュールは、複数の CloudFormation テンプレート間で再利用できるビルディングブロックであり、ネイティブの CloudFormation リソースと同じように使用されます。これらのビルディングブロックは、Amazon Elastic Compute Cloud (Amazon EC2) インスタンスを定義するためのベストプラクティスのように単一のリソース用にしたり、アプリケーションアーキテクチャの一般的なパターンを定義するために複数のリソース用にすることもできます。
自分のリソースやモジュールを開発して、AWS CloudFormation レジストリに追加する方法を教えてください。
このリンクを参照して、独自のリソースやモジュールを AWS CloudFormation レジストリに開発して、追加してください。プライベートに公開するか、もしくはパブリックレジストリに公開するか、選択することができます。
請求
AWS CloudFormation にはどのくらいの費用がかかりますか?
次の名前空間にあるリソースプロバイダーを AWS CloudFormation で使用する場合は、追加料金は発生しません: AWS::*、Alexa::*、Custom::*。この場合には、AWS CloudFormation を使用して作成した AWS リソース (Amazon EC2 インスタンス、Elastic Load Balancing のロードバランサーなど) に対し、手動で作成したのとまったく同様の料金をお支払いいただきます。お支払いはお客様が実際に使用した分だけです。最低料金や前払いの義務は発生しません。
AWS CloudFormation で、前出の名前空間の外部にあるリソースプロバイダーを使用する場合には、ハンドラーオペレーションごとの料金が発生します。ハンドラー操作とは、リソースに対するアクションの作成、更新、削除、読み取り、リストのことです。詳細については、料金表のページをご参照ください。
失敗したスタック作成の試行中にロールバックされたリソースについても課金されますか?
はい。全体としてスタックが正常に作成されたかどうかに関係なく、テンプレートのインスタンス化時に作成された AWS リソースへの料金が適用されます。
制限と規制
テンプレートまたはスタック数に制限はありますか?
AWS CloudFormation で作成できるスタックの最大数についての詳細は、AWS CloudFormation クォータの「スタック」を参照してください。上限値の変更については、こちらから申請してください。2 営業日以内に返答いたします。
説明フィールドの文字数に制限はありますか?
詳細については、AWS CloudFormation クォータの「テンプレート説明」と、AWS ドキュメントの「パラメータ」、「リソース」、「出力」を参照してください。
テンプレートのパラメータまたは出力の数に制限はありますか?
テンプレートで指定できるパラメータと出力の数についての詳細は、AWS CloudFormation クォータの「パラメータと出力」セクションを参照してください。
スタック内で作成できるリソースの数に制限はありますか?
テンプレートで示すことのできるリソースの数の詳細については、AWS CloudFormation クォータの「リソース」を参照してください。ベストプラクティスとして、小規模なテンプレートとスタックを作成し、複数のスタック間でアプリケーションをモジュール化することをお勧めします。大規模なグループよりも小規模なグループの方が依存関係が複雑でないため、このようにすることで、リソース変更に伴う影響範囲を最小限に抑えることができ、複数のリソース間の依存関係に関する問題をよりすばやく解決できます。
リージョンとエンドポイント
各リージョンの AWS CloudFormation サービスのアクセスポイントは何ですか?
各リージョンのエンドポイントについては、技術文書のAWS CloudFormation エンドポイントに記載されています。
現在、AWS CloudFormation が利用可能な AWS リージョンを教えてください。
CloudFormation のリージョン別の可用性について詳しくは、製品およびサービス一覧 (リージョン別)をご参照ください。