【CloudFormation】初めてのマルチアカウント環境でStackSetsを簡単に試してみる - APC 技術ブログ

APC 技術ブログ

株式会社エーピーコミュニケーションズの技術ブログです。

株式会社 エーピーコミュニケーションズの技術ブログです。

【CloudFormation】初めてのマルチアカウント環境でStackSetsを簡単に試してみる

こんにちは!クラウド事業部の中根です。

最近マルチアカウント環境を始めて、いろいろ試しています。
今回は、CloudFormationのStackSetsをご紹介します!
AWS認定でも出題されますし、とても簡単なので、初めてやるのにぴったりだと思います!

StackSetsとは

分かりやすい解説記事が他にたくさんありますので、ここでは超簡単に説明します。
Organizations内の設定したアカウントやOUに対し、同じスタックを自動で適用してくれる機能です。

おすすめの解説記事もいくつか紹介します。
【CloudFormation】StackSetsの仕組みについて - サーバーワークスエンジニアブログ
AWS CloudFormation StackSetsってなんだろ?

前提条件

組織構成は以下です。
作り方はこちらの記事で紹介しているので、実際に動かす方は参考にしてください!

1. StackSetsのテンプレート作成

まずは、テンプレートファイルを準備します。
今回はお手軽さ重視で、S3バケットを作成します。

AWSTemplateFormatVersion: '2010-09-09'
Description: 'CloudFormation StackSets Sample Template: S3 Bucket Creation'

Resources:
  SampleS3Bucket:
    Type: 'AWS::S3::Bucket'
    Properties:
      BucketName: !Sub '${AWS::AccountId}-sample-bucket'

2. StackSetsの作成

管理アカウントで作業していきます。
管理アカウントに切り替えたら、CloudFormationにアクセスします。
左メニューから、「StackSets」を使用し、「StackSetを作成」を押下します。

必要項目を入力していきます。

  • アクセス許可:「サービスマネージドアクセス許可」
  • テンプレートの準備:「テンプレートの準備完了」

テンプレートをアップロードし、「次へ」を押下します。
(S3バケットに格納して参照してもOK)

StackSet名と説明を入力して、「次へ」を押下します。

任意でタグと実行設定をして、「次へ」を押下します。
マネージド型の実行をアクティブにしたほうが若干早いと思いますが、今回はそんなに変わらないので、どっちでもいいです。

今回は、OU単位のデプロイを試してみます。
OU IDを、Organizationsの画面から確認し、コピーします。(画像赤丸部)

デプロイターゲットを「組織単位(OU)へのデプロイ」にし、OU IDをペーストします。

そのほかは任意で設定し、「次へ」を押下します。
最後に設定を確認して、「作成」します。

「スタックインスタンス」タブから、作成状況が確認できます。

Deployment OUのメンバーアカウントから、AWSアカウントIDをプレフィックスとしたバケットが作成されていることを確認してみましょう。
そして、Security OUのメンバーアカウントには作成されていないはずです。

3.メンバーアカウントをOUに追加

メンバーアカウントを後からOUに追加しても、ちゃんと作成してくれるのか確かめましょう。
※実施前に、管理アカウントから、スタックセットの自動デプロイがアクティブになっていることを確認してください。

注意:デフォルトのアカウント上限が10なので、余裕がない人は注意しましょう。
   既にあるアカウントのOUを移動させても同じことが確認できます。

メンバーアカウントの作成

Organizationsの画面に遷移し、「AWSアカウントを追加」を押下します。

アカウント名とメールアドレスを設定して、「AWSアカウントを作成」します。

シングルサインオンの設定(任意)

続いて、IdentityCenterの設定をして、アカウント切替を楽にします。
IAM Identity Center の画面に移動し、左メニューから「AWSアカウント」を選択します。
作成したアカウントを選択し、「ユーザーまたはグループを割り当て」を押下します。

グループと許可セットを設定します。

検証前の確認

新しいメンバーアカウントに切り替えて、S3バケットがまだ作られていないことを確認します。
まだOUに所属していないので、ないはずです。

いざ検証!

再び管理アカウントに切り替え、新しいメンバーアカウントをスタックセットが設定してあるOUに移動します。
Organizationの画面を開き、新しいメンバーアカウントを選択し、「アクション」>「移動」を押下します。

OUを選択して、「AWSアカウントを移動」します。
(スタックセットで指定しているOUにすること)

OUにアカウントが追加されていることを確認します。

CloudFormationのスタックセットの「スタックインスタンス」を確認すると、一つ増えているのが確認できます。
オペレーションIDからも、新たな別の操作でスタックが作成されたことがわかります。

新しいメンバーアカウントに切り替え、S3バケットを直接確認してみます。

お掃除

管理アカウントから、CloudFormationのStackSets画面に移動します。

スタックセットを選択し、「StackSetsからスタックを削除」を押下します。

AWS OU IDにスタックセットを適用したOUのIDを入力し、「次へ」を押下します。

内容を確認し、「送信」を押下します。
スタックインスタンスを確認し、空になっていることを確認しましょう。

参考:S3バケットにオブジェクトが残っていたため、削除できなかった場合

スタックインスタンスが空になっていることを確認したら、「アクション」>「StackSetの削除」を押下します。

CloudFormationのテンプレートが格納されているS3バケットも不要であれば忘れずに消しておきましょう。

まとめ

マルチアカウント環境で、CloudFormationのStackSetsを試してみました。
とってもお手軽に試せるので、マルチアカウントでの初検証にいかがでしょうか。
皆様の参考になれば幸いです。

お知らせ

APCはAWS Advanced Tier Services(アドバンストティアサービスパートナー)認定を受けております。


その中で私達クラウド事業部はAWSなどのクラウド技術を活用したSI/SESのご支援をしております。
www.ap-com.co.jp

https://www.ap-com.co.jp/service/utilize-aws/

また、一緒に働いていただける仲間も募集中です!
今年もまだまだ組織規模拡大中なので、ご興味持っていただけましたらぜひお声がけください。

www.ap-com.co.jp

本記事の投稿者: r-nakane
AWSをメインにインフラ系のご支援を担当しています。