はじめに
企業でAWSを扱う際にプロジェクト毎やお客様毎にアカウントを分けている例が殆どだと思います。
特にパッケージ化されている商品を取り扱っていると毎回同じ構成を組んでいることが多く、特にネットワークリソースの構築は同じ作業の繰り返しとなる事が多いのではないでしょうか?
そこで今回はOrganizationsとCloudFormationのStackSetsを使用してネットワークリソース構築の自動化をしていきます。
対象は主に作成された時点で課金が発生してしまうロードバランサー以外の基本的なネットワークリソースです。
以下の構成を参考にしてください。
構成
前提条件
・2つ以上のメールやドレスの用意(管理アカウント用とメンバーアカウント用)
・Organizationsの管理アカウントの作成
以下はOrganizationsの管理アカウント作成時の画面
テンプレートファイルの用意
vpc.yamlをダウンロードまたはご自身のS3バケットに配置しておきましょう。(main.yamlなどその他のテンプレートファイルは今回使いません)
設定
それでは設定していきましょう。
・Organizationsの管理アカウントにログインしたらOriganizationsのコンソールから「Root」を選択し「アクション」から「新規作成」をクリック。
・作成されたことを確認します。
赤枠で囲われている組織IDは控えておいて下さい。
・stacksetsの設定をしていきます。
Cloudfromationのコンソールから「StackSets」を選択後、
「StackSetsを作成」をクリック
・テンプレートの指定はご自身のお好みで選択し、vpc.yamlをアップロード後「次へ」をクリックして下さい。その他はデフォルトの設定値で問題ございません。
・任意のStack名を入力して下さい。また、パラメータの部分はCloudformationの設定で出力している項目になります。
ここで設定した名前が作成されるネットワークリソースの識別子となります。
(画像の場合だと例として、VPC名は「MakeNetwork-vpc」という名前で作成されます。)
・StackSetsオプションは特に変更の必要はありません。
・デプロイオプションの設定をします。「デプロイターゲット」にて「組織単位(OU)へのデプロイ」を選択し、控えておいた組織名IDを「AWS OU ID」の項目に入力します。
・リージョンはお好みで設定ください。画像は東京にしております。
自動デプロイオプションとデプロイオプションはデフォルトの設定値で問題ございません。
・レビュー画面になりますので設定値を確認しましたら「送信」をクリックします。
アカウント追加
作成したOUにAWSアカウントを追加していきます。
・Organizationsのコンソールに移動したら、右上の「AWSアカウントを追加」をクリック。
・任意のAWSアカウント名と任意のメールアドレス(メンバーアカウント用)を入力したら、
「AWSアカウント作成」をクリック。
・ここまで来たら一旦作成したアカウントにログインしてみましょう。
デフォルトのVPCがあるだけでした。
・確認が終わったら作成したアカウントをOUの配下に移動させてみましょう。
作成したアカウントにチェックボックスを入れて「アクション」タブから「移動」を選択します。
・移動先となるOUにチェックを入れたら「AWSアカウントを移動」をクリック
リソース確認
ここまでの手順が完了したら再度新規作成したAWSアカウントにログインしてネットワークリソースの確認をしてみましょう。
パラメータに設定した「MakeNetwork」の識別子でリソースが作成されていました。EC2のコンソール画面からセキュリティグループも確認してみて下さい。同じ識別子で作成されているはずです。
最後に
設定の手順自体は多くなってしまいますが、一度設定してしまえばかなり業務を効率化できる機能です。
パラメータのProjectCodeの部分を「prod」「stg」に変えてStackSetsを2つ用意すればアカウント作成と同時に本番環境とステージングの基盤があっという間にできてしまいます。よければご活用ください。
お疲れ様でした。