[AWS]一撃で複数アカウント、全リージョンに設定を展開する!
コンニチハ、千葉です。
複数アカウント、全リージョンに同じ設定を展開したい!!という時に役立つCloudFormation StackSetsをご紹介します。
こちらのエントリーでは東京リージョンのみ選択だったので、今回は複数アカウント&全リージョンにスタックを展開してみました。 で、StackSetsにはいくつかサンプルテンプレートとして以下が用意されています。
- AWS CloudTrail の有効化
- AWS Config の有効化
- 設定ルール root-account-mfa-enabled の追加
- ルートユーザーのMFAが有効になっているかチェックするConfigルール
- 設定ルール cloudtrail-enabled の追加
- CloudTrailが有効になっているかチェックするConfigルール
- 設定ルール eip-attached の追加
- EIPが利用されているかチェックするConfigルール
- 設定ルール encrypted-volumes の追加
- EBSが暗号化されているかチェックするConfigルール
今回は、複数アカウントの全リージョンに対して AWS Config の有効化 を実施して見たいと思います。
イメージ
アカウントAに作成したStackSetsから、アカウントAとアカウントBにCFnスタックをデプロイします。これは、各リージョンにもデプロイされます。
また、事前に2つのIAMロールが必要です。各アカウントに作成します
- AdministrationRole:StackSetsを実行するアカウントに必要なロール(アカウントA)
- StackSetsExecutionRole:設定される側(Target)に必要なロール(アカウントA、アカウントB)
事前準備
事前にIAMロールを作成します。
AdministrationRole
StacSetsを作成するアカウントに必要なIAMロールです。 アカウントAに作成します。CloudFormationテンプレートがあるので、そちらを利用しましょう。こちら
参考:https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacksets-prereqs.html
StackSetsExecutionRole
Targetに必要なIAMロールです。 アカウントA、アカウントBに作成します。CloudFormationテンプレートがあるので、そちらを利用しましょう。こちら
スタック作成時にアカウントIDを求められますが、アカウントAのIDを入力します。
参考:https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacksets-prereqs.html
StackSetsの作成とデプロイ
準備ができたところで、StackSetsを作成して、2つのAWSアカウントの全リージョンに対してAWS Configの設定を有効にしてみたいと思います。アカウントAにてスタックセットを作成します。
今回はConfigを有効化したいので、「AWS Config の有効化」を選択します。
適宜パラメータを入力します。
デプロイ対象のAWSアカウントIDを カンマ区切り で入力し、全リージョンを選択します。
あとは、チェックを入れて作成をクリックします。
ステータスが ** SUCCEEDED** になりました。
各アカウントとリージョンを見てみましたが、ちゃんとスタックが作成されていました。
注意:Confg有効時にスタックがエラーになる場合は、こちらをご確認ください。
最後に
CloudFormation StackSetsを利用することで、アカウント数が多くても、リージョンが多くても一括で任意の設定を展開できました。 過去のオンプレの経験だと、数には人力で対応していたのが懐かしいです。数の暴力に打ち勝てる世界、最高です。