[新機能] CloudFormation StackSetsを試してみた
こんにちは、菊池です。
CloudFormationは、テンプレートを利用することでAWSの環境を簡単にプロビジョニングできるサービスです。先日のアップデートで、複数のAWSアカウント、リージョンに対しCloudFormationのスタックを作成できる新機能、StackSetsがリリースされました。
サンプルテンプレートを使ってStackSetsを利用してみましたので紹介します。
CloudFormation StackSets
CloudFormation StackSetsを使うことで、1つのテンプレートから複数のAWSアカウント、リージョンに対しStackを作成することが可能です。
これまでは、CloudFormationのスタックによるリソースの作成は、一部を除き基本的に単一のアカウント・リージョンが対象でした。StackSetsをによって、複数のアカウントにまたがる共有の設定などを一括して実行することが可能です。
やってみた
早速、サンプルテンプレートを使ってStackSetsを試してみました。
事前準備
StackSetsを使うためには、事前にIAMロールの設定が必要です。
StackSetsを実行するアカウント(Administrationアカウント)から、他のアカウント(Targetアカウント)にリソースを作成するためのIAMロールを作成します。
AdministrationRole
Stackセットを作成するアカウントにAWSCloudFormationStackSetAdministrationRoleを作成します。ドキュメントにしたがってIAMロール/ポリシーの設定をしても問題ありませんが、こちらのCloudFormationテンプレートで簡単に作成可能です。
StackSetsExecutionRole
TagetアカウントにAWSCloudFormationStackSetExecutionRoleを作成します。AdministrationRoleと同様に、こちらのCloudFormationテンプレートで簡単に作成可能です。
Stack作成時のパラメータに、AdministrationアカウントのアカウントIDが必要です。
作成できました。
StackSetの作成
それではStackSetを作成していきます。CloudFormationのメニューからStackSetsを選択します。
[スタックセットの作成]に進みましょう。
サンプルテンプレートがいくつか用意されていますので、今回はこちらから選びます。アカウントの設定に関するConfigが多いですね。[設定ルールeip-attached]の追加を選びました。
デプロイオプションの設定です。まずはデプロイするアカウントを選びます。ターゲットのアカウントIDを入力。
対象のリージョンを選択します。複数のリージョンが選択可能ですが、東京リージョンのみを選びました。
オプションで、同時実行アカウントなども選べますが、デフォルトのままとしました。
あとは通常のスタックと同じです。作成を実行すると、スタックセットの状況が確認可能になっています。
[オペレーション]の欄にステータスが表示されます。SUCCEEDEDとなれば問題なく完了です。
[スタック]の欄を見ると、アカウント/リージョン単位で作成されたStackのステータスが表示されます。今回は1アカウント/1リージョンだけなので、1項目のみ表示されています。
Stackによって作成された設定を確認します。
ターゲットアカウントのAWS Configの画面を見ると、ルールが作成されていました。
まとめ
以上です。
複数のアカウント/リージョンに一括で設定が適用可能になりますので、新規アカウント作成時のCloudTrail有効化や、SecurityGroupやIAMで統制管理などの手間が省けそうです。