[新機能] CloudFormation StackSetsを試してみた

こんにちは、菊池です。

CloudFormationは、テンプレートを利用することでAWSの環境を簡単にプロビジョニングできるサービスです。先日のアップデートで、複数のAWSアカウント、リージョンに対しCloudFormationのスタックを作成できる新機能、StackSetsがリリースされました。

サンプルテンプレートを使ってStackSetsを利用してみましたので紹介します。

CloudFormation StackSets

CloudFormation StackSetsを使うことで、1つのテンプレートから複数のAWSアカウント、リージョンに対しStackを作成することが可能です。

stackset-000

これまでは、CloudFormationのスタックによるリソースの作成は、一部を除き基本的に単一のアカウント・リージョンが対象でした。StackSetsをによって、複数のアカウントにまたがる共有の設定などを一括して実行することが可能です。

やってみた

早速、サンプルテンプレートを使ってStackSetsを試してみました。

事前準備

StackSetsを使うためには、事前にIAMロールの設定が必要です。

StackSetsを実行するアカウント(Administrationアカウント)から、他のアカウント(Targetアカウント)にリソースを作成するためのIAMロールを作成します。

AdministrationRole

Stackセットを作成するアカウントにAWSCloudFormationStackSetAdministrationRoleを作成します。ドキュメントにしたがってIAMロール/ポリシーの設定をしても問題ありませんが、こちらのCloudFormationテンプレートで簡単に作成可能です。

stackset-001

StackSetsExecutionRole

TagetアカウントにAWSCloudFormationStackSetExecutionRoleを作成します。AdministrationRoleと同様に、こちらのCloudFormationテンプレートで簡単に作成可能です。

Stack作成時のパラメータに、AdministrationアカウントのアカウントIDが必要です。

stackset-002

作成できました。

stackset-003

StackSetの作成

それではStackSetを作成していきます。CloudFormationのメニューからStackSetsを選択します。

stackset-004

[スタックセットの作成]に進みましょう。

stackset-005

サンプルテンプレートがいくつか用意されていますので、今回はこちらから選びます。アカウントの設定に関するConfigが多いですね。[設定ルールeip-attached]の追加を選びました。

stackset-006

デプロイオプションの設定です。まずはデプロイするアカウントを選びます。ターゲットのアカウントIDを入力。

stackset-007

対象のリージョンを選択します。複数のリージョンが選択可能ですが、東京リージョンのみを選びました。

stackset-008

オプションで、同時実行アカウントなども選べますが、デフォルトのままとしました。

stackset-009

あとは通常のスタックと同じです。作成を実行すると、スタックセットの状況が確認可能になっています。

[オペレーション]の欄にステータスが表示されます。SUCCEEDEDとなれば問題なく完了です。

stackset-010

[スタック]の欄を見ると、アカウント/リージョン単位で作成されたStackのステータスが表示されます。今回は1アカウント/1リージョンだけなので、1項目のみ表示されています。

stackset-011

Stackによって作成された設定を確認します。

stackset-012

ターゲットアカウントのAWS Configの画面を見ると、ルールが作成されていました。

stackset-013

まとめ

以上です。

複数のアカウント/リージョンに一括で設定が適用可能になりますので、新規アカウント作成時のCloudTrail有効化や、SecurityGroupやIAMで統制管理などの手間が省けそうです。