[アップデート]CloudFormationでOrganizationsアカウントへの自動デプロイができるようになりました

はじめに

こんにちは。大阪オフィスの林です。

2020年2月12日(火)の公式アナウンスにて、「AWS CloudFormation StackSets が AWS Organizations を介してアカウントとリージョンに自動デプロイを導入」と発表がありました。公式ページはこちら

さっそく触ってみたいと思います!

アップデート概要

まず簡単にアップデートの概要です。見た限り3つのアップデートがあったかなと認識しています。

  1. OUにアカウントを追加した際にCFnのテンプレートを自動でデプロイ可能になった
  2. OUからアカウントを削除(移動)した際にCFnのテンプレートを自動で削除可能になった
  3. デプロイに必要なアクセス許可を自動で設定可能になった
1. OUにアカウントを追加した際にCFnのテンプレートを自動でデプロイ可能になった

2. OUからアカウントを削除(移動)した際にCFnのテンプレートを自動で削除可能になった

3. デプロイに必要なアクセス許可を自動で設定可能になった

これはそのままで、今まではデプロイに必要なロールを各自で指定したりしていましがAWSがよしなにやってくれるという設定が増えました。

やってみた

今回は上記の「1.」「2.」にあたる、自動デプロイと自動削除の動きを見ていきたいと思います。

まず、Organizationsの状態から見ていきます。Root配下に「AAA部」と「BBB部」というOUがあります。このOUを使って自動デプロイと自動削除の動作を見ていきます。

次に、CloudFormationのダッシュボードから「StackSets」-「StackSetsの作成」を選択します。

今回はあらかじめ用意しておいた簡単なテンプレートで動作を確認します。テンプレート内容はS3に1つバケットを作るyamlです。

「StackSets名」を入力し「次へ」を選択します。

「アクセス許可」にて「サービスマネージドアクセス許可」か「セルフサービスのアクセス許可」を選択します。ここが前述した「3. デプロイに必要なアクセス許可を自動で設定可能」の部分になります。今回はよしなにやってくれる動作も見ていきたいので「サービスマネージドアクセス許可」を選択します。

なお、「セルフサービスのアクセス許可」を選択すると従来通りのオプションが選択できます。

次にデプロイオプションにてターゲットを選択します。今回は特定のOUに属するアカウントへの動作を確認していくので「組織単位(OU)へデプロイ」を選択し、「AWS OU ID」を入力します。今回自動の動きを見ていくので「自動デプロイ:有効」「アカウント削除の動作:スタック削除」とし進めていきます。

なお、「AWS OU ID」は参照が出来ないのでOrganizationsのダッシュボードで確認し入力します。

「StackSetsの作成」に戻り、リージョンを選択し「次へ」を選択します。

内容を確認し「送信」を選択します。

ダッシュボードに戻り、作成したStackSetsのオペレーションステータスが「SUCCEDED」であることを確認します。

「StackSetsのステータス」も「ACTIVE」であることを確認します。

まだ対象のOUにアカウントを所属させていないため、スタックインスタンスは存在していません。

それでは、対象のOU(AAA部)にアカウントを所属させます。

対象のOU(AAA部)にアカウントが所属しました。

CloudFormationのダッシュボードに戻りStackSetsの「スタックインスタンス」を確認するとアカウントが認識されたことが分かります。

「オペレーション」を確認するとステータスが「RUNNNING」となり、「タイプ」が「CREATE」でスタックが自動でデプロイされ始めたことが分かります。

スタックが流れるのを待ち、「スタックインスタンス」で対象のインスタンスのステータスが「CURRENT」であることを確認します。

「オペレーション」のステータスも「SUCCEDED」になったことを確認します。

対象アカウントのS3のダッシュボードを見てみると、今回サンプルテンプレートで指定したバケットが1つ作成されていることがわかります。

次に、自動削除の動作を見ていきます。対象のOU(AAA部)から別のOU(BBB部)へアカウントを移動させます。

対象のOU(AAA部)にはアカウントがいなくなりました。

「オペレーション」を確認するとステータスが「RUNNNING」となり、「タイプ」が「DELETE」でスタックが自動で削除され始めたことが分かります。

「スタックインスタンス」を確認するとアカウントが無くなっていることが分かります。

「オペレーション」のステータスが「SUCCEDED」になったことを確認します。

対象アカウントでS3のダッシュボードを見てみると、先ほど作成されていたバケットが削除されていることがわかります。

まとめ

非常に簡単に自動デプロイを実装することが出来ました!Organizationsで複数AWSアカウントを管理している環境で、アカウント作成後に必ず発生する作業などを自動デプロイに登録しておくことでAWSアカウント新規作成時の運用負荷が少し軽くなるのではないでしょうか。

以上、大阪オフィスの林がお送りしました!