Amazon Web Services ブログ

CloudFormation スタックセットを使ったリソースのプロビジョニング

AWS CloudFormation は AWS をご利用されているお客様がコードとしてのインフラストラクチャモデルを実装するのに役立ちます。環境やアプリケーションのセットアップを手動で行う代わりに、同機能はテンプレートを構築して CloudFormation スタックと呼ばれる必要なリソースすべてを作成するために使うことができます。このモデルは手動によるエラーを排除し、効率性の向上や、設定における一貫性を長期に渡り保つことを可能にします。

そこで、今回はこれまで以上に CloudFormation を便利にする最新の機能強化についてご紹介します。この機能は、複数の AWS アカウントや AWS リージョンなどの状況で、コードとしてインフラストラクチャを使用する場合に直面するチャレンジに対応しやすくするように設計されています。手短にご説明します。

アカウント – 以前ご説明したように、多くの組織が複数の AWS アカウントを使用していますが、AWS Organizations でアカウント階層化し、組織単位 (OU) でグループにしています (詳細は「複数の AWS アカウントのポリシーベース管理 – AWS Organizations (AWS Organizations – Policy-Based Management for Multiple AWS Accounts)」をご覧ください)。AWS のお客様はビジネスユニット、アプリケーション、開発者に渡り複数のアカウントを使用しています。アプリケーションごとの開発、テスト、ステージング、実稼働環境にそれぞれ別のアカウントを作成するのが一般的になっています。

リージョン – また、AWS をご利用のお客様は多数の (現在も増加中) AWS リージョンを 大いに利用しています。2 つまたはそれ以上のリージョンに渡りグローバルアプリケーションを構築し、洗練されたマルチリージョンの災害対策モデルの実装、S3AuroraPostgreSQLMySQL データをリアルタイムでレプリケートし、国内および地域に適用される規制に準拠する方法で機密データの保存先や処理を行う場所を選びます。

複数のアカウントやリージョンへの拡大は、ガバナンスや適合性に見合うための新たなチャレンジを伴っています。AWS のお客様は各アカウントが必ず内部基準に合うようにしたいと言っています。特に IAM ユーザーとロール、VPC、VPC サブネット、セキュリティグループ、設定ルール、ロギング、AWS Lambda 関数などを一貫性があり信頼性の高い方法で設定したいというリクエストが寄せられています。

StackSet の概要
こうしたお客様の大切なニーズに応えるため、AWS は本日 CloudFormation StackSet をリリースしました。これにより、CloudFormation のテンプレートで AWS リソース設定を定義できるようになり、数回のクリックで複数の AWS アカウントやリージョンに渡りその設定を適用できるようになりました。これを使用して、先述のリストに挙げたクロスアカウントやクロスリージョンに対応する AWS 機能のベースラインレベルをセットアップすることができます。設定が完了したら、その他のアカウントやリージョンへも簡単に範囲を拡大できます。

この機能はクロスアカウントベースで常に作用します。管理者アカウントには 1 つまたはそれ以上の StackSets があり、1 つ以上のターゲットアカウントのデプロイメントをコントロールします。管理者アカウントには引き受け可能な IAM ロールが必要となり、ターゲットアカウントは管理者アカウントに信頼を託すことが必須になります。手順詳細については「前提条件 (Prerequisites)」の項目を「StackSet ドキュメント (StackSet Documentation)」でご覧ください。

各 StackSet は CloudFormation のテンプレートを参照し、アカウントとリージョンのリストを含みます。すべての操作は StackSet のアカウントとリージョンのクロスプロダクトに適用されます。StackSet は 3 つのアカウント (A1、A2、A3) と 4 つのリージョン (R1、R2、R3、R4) を参照します。ターゲットは 14 あります。

  • リージョン R1: アカウント A1、A2、A3
  • リージョン R2: アカウント A1、A2、A3
  • リージョン R3: アカウント A1、A2、A3
  • リージョン R4: アカウント A1、A2、A3

テンプレートをデプロイすると、アカウントとリージョンのペアで CloudFormation スタックの作成が開始します。テンプレートはリージョン内 (並列処理の度合いはあなたがコントロールします) にある複数のアカウントで順番にリージョンでデプロイされます (順番はあなたがコントロールします)。スタック作成の失敗時にデプロイを終了するように、エラーのしきい値を設定することもできます。

既存の CloudFormation テンプレート (アカウントやリージョンに渡りすぐ使用できるか確認)、新規作成または AWS によるサンプルテンプレートを使用できます。AWS パーティションのサポートを開始します (中国を除くすべてのパブリックリージョン)。近い内にその他のリージョンにも拡大する予定です。

StackSets の使用
CloudFormation コンソールCloudFormation APIコマンドラインから StackSets を作成しデプロイすることができます。

コンソールを使用して、まず [Create StackSet] をクリックします。独自のテンプレートまたはサンプルテンプレートを使用します。この例ではサンプルを使用します (設定ルール encrypted volumes を追加)。

[View template] をクリックしてテンプレートの詳細とルールを確認します。

StackSet に名前を付けます。選択したテンプレートはオプションのパラメーターを許可するので、ここに入力します。

次にアカウントとリージョンを選択します。アカウント番号を直接入力したり、AWS の組織単位を参照またはアカウント番号のリストをアップロードすることができます。

リージョンをセットアップし、デプロイの順番をコントロールできます。

デプロイのオプションを設定することもできます。完了したら [Next] をクリックして次に進みます。

StackSet にタグを追加できます。これはデプロイ中に作成した AWS リソースに適用されます。

デプロイが開始します。コンソールからステータスをチェックできます。

[Stacks] セクションを開くと各スタックを見ることができます。最初、各スタックのステータスは [OUTDATED] になっています。これはテンプレートがまだスタックにデプロイされていないことを意味し、デプロイが完了すると [CURRENT] に変わります。スタックを削除できない場合は、ステータスが [INOPERABLE] に変わります。

最初のデプロイが完了したら [Manage StackSet] をクリックして、アカウントやリージョンまたは両方を追加し、新たなスタックを作成します。

提供開始
この新機能は追加料金なしに今すぐご利用いただけます (お客様用に作成された AWS リソースのみが請求対象になります)。

Jeff;

PS – 便利なテンプレートを作成したので、他の AWS ユーザーとシェアしたいという方は、AWS ラボ GitHub repo にプルリクエストを送信してください。