【Organizations】組織単位で CloudFormation StackSetsを簡単にデプロイしてみる

2020.05.05

AWS Organizations はマルチアカウントの管理、統制に役立つサービスです。

それぞれの AWSアカウントを 組織単位(Organizational Unit: OU) に所属させ、 グループ化することができます。 組織単位で AWSのリソース設定や セキュリティの統制が可能になります。

一方、 AWS CloudFormation(CFn) は AWSリソースを JSON, YAML形式で表現するためのサービスです。

AWSリソースをコード(テンプレート) で表現することで構成管理を容易にします。 再利用性の向上などに役立ちます。 StackSets 機能を使うことで 1つのテンプレートから 複数のリージョン/複数のAWSアカウントへリソース群(スタック)を展開できます。

Organizations と CloudFormation StackSets の連携組織単位で簡単に StackSetsを利用 できるので、 実際にマネジメントコンソール上でやってみます。

目次

  1. Organizations と CFn StackSets
  2. やってみる
    1. (準備) アクセスの有効化
    2. StackSets の作成
    3. StackSets の作成中
    4. StackSets の作成後
  3. おわりに
    1. 参考

Organizations と CFn StackSets

通常、 CFn StackSetsを利用するには、いくつかの準備が必要です (参考: CloudFormation StackSetsを試してみた | Developers.IO)。

  • StackSets を作成するアカウントに AdministrationRole ロール を作成
  • スタックがデプロイされるアカウントに StackSetsExecutionRole ロールを作成

このように、それぞれ適切なIAMロールを作成する必要がありました。

が、以下アップデートから Organizations 管理化のアカウントに対しては IAMロール作成不要、OU単位 で 簡単にデプロイ出来るようになっています。

新機能: AWS CloudFormation StackSets が AWS Organization のマルチアカウントで利用可能に | Amazon Web Services ブログ

やってみる

実際に 特定のOU配下の複数アカウントへCFnテンプレートを展開してみます。

以下項目説明します。

  1. (準備) アクセスの有効化
  2. StackSets の作成
  3. StackSets の作成中
  4. StackSets の作成後

(準備) アクセスの有効化

まず Organizations と CFn StackSets の連携を許可する必要があります。

マスターアカウント の AWS Organizations のページから 設定 を選択します。

AWS のサービスに対する信頼されたアクセス にある CFn StackSets 欄を探し、 有効化しましょう。

StackSets の作成

マスターアカウント の CFn StackSets の画面に行きます。

StackSetsの作成 を選択します。

▼ テンプレートを選択します。 (今回は ローカルにある CFnテンプレートをアップロードして指定します)。

▼ 適当に StackSets名、StackSetsの説明(オプション)、パラメータ(テンプレート依存) を指定します。

▼ StackSets オプションの設定では サービスマネージドアクセス許可 を選択します。

デプロイオプションの設定 です。 それぞれのオプションをざっくり説明すると下図になります。

※自動デプロイについては以下ブログが参考になります。

今回は 以下のように、 特定のOUへ、自動デプロイ無し で設定しました。

続けて リージョン、デプロイオプションを指定します。 (今回は 東京リージョン、 デフォルトのデプロイオプションとします)

▼ レビュー画面で内容を再確認して問題なければ 送信 を選択します。

StackSets の作成中

送信 後、以下のようにオペレーションが実行されていきます。

▼ 「スタックインスタンス」タブで作成中のスタックの状況が確認できます。 順次デプロイされていくので、待ちましょう。

StackSets の作成後

▼ 最終的に全てのスタックのステータスが CURRENT に、 オペレーションが SUCCEEDED となれば OKです。

▼ 実際にスタックが生成されたメンバーアカウントのCFn画面を見てみます。 StackSet-(StackSets名)-(適当な文字列) のスタックが CREATE_COMPLETE となっていました。

おわりに

Organizations と連携した 組織単位の CFn StackSets デプロイを試してみました。

通常は AWSアカウントIDを列挙して StackSetsデプロイする必要がありました。 Organizationsと連携すると、OU単位のデプロイが可能になるため、 プロセスを簡素化できます。

また、自動デプロイのオプションもあるため、 新規アカウント作成、OU加入時の定型作業の自動化も見込めます。

複数アカウントのリソース管理・運用にぜひ利用したいところです。

少しでもどなたかのお役に立てば幸いです。

参考