[アップデート] CloudFormation StackSets の自動デプロイオプションでスタックセットの依存関係を設定しデプロイ順序をコントロールできるようになりました
いわさです。
AWS CloudFormation の CloudFormation StackSets には自動デプロイというオプションがあります。
指定した組織や OU に新しい AWS アカウントが自動デプロイ対象のグループに追加されると、そのアカウントにスタックセットを自動でデプロイさせることができる機能です。
この自動デプロイ機能ですが、先日のアップデートでスタックセットの依存関係を設定できるようになりました。
スタックセットで自動デプロイを設定するユースケースとして多いのはアカウントのベースライン系ですが、例えばベースライン1とベースライン2をそれぞれ別のスタックセットで自動デプロイを有効化していたとします。
それぞれのスタックセットにはこれまで依存関係の概念がなかったので、ベースライン1とベースライン2のデプロイ順序の依存関係があるような複雑な構成の場合に困ることがありました。
これが今回のアップデートでスタックセット間の依存関係を設定できるようになったのでデプロイ順序をコントロールできるようになりました。
依存関係の設定方法
スタックセットのデプロイモードで「サービスマネージド」を選択するとデプロイ時に自動デプロイオプションを選択することができるのですが、その時に次のように「スタックセットの依存関係」が追加されています。

設定方法ですが、依存するスタックセットの ARN を指定します。これだけです。
また、作成済みのスタックセットについても自動デプロイ依存関係を編集することができます。


公式ドキュメントにもこの機能について追記されていまして、スタックセットごとに最大10個の依存関係を定義できるようです。また、アカウントごとに最大100個の依存関係が定義できるともされています。
上記ドキュメントではサービスクォータから上限緩和できる旨が記載されているのですが、確認してみところ引き上げできなさそうでした。あれ?

設定してみた
今回は適当なテンプレートでスタックセットを3つほど用意し、スタックセット1 <-- スタックセット2 <-- スタックセット3という形で依存するように次のように依存する ARN を指定しました。

自動デプロイのスコープですが OU を指定しています。次の hogeOU-A を対象にしています。
ここに hogeOU-B からアカウントを移動させてみましょう。

対象アカウントの CloudFormation スタックを眺めてみると、指定した依存関係に従って順番にデプロイされていることを確認しました。(※スタックセット3が4になってます)

スタックセットを管理するアカウントに戻って依存関係を変えてみましょう。
スタックセット1をスタックセット3に依存させるようにしてみます。すると次のように依存関係編集時にエラーになりました。

スタックセット3がスタックセット2に依存しており、さらにスタックセット2はスタックセット1に依存しているので、スタックセット1がスタックセット3に依存すると循環しちゃうからですね。
どうやら循環参照的なものは直接参照じゃなくても検出してくれるみたいです。うまく出来ている。
ということでスタックセット3の依存関係オプションは削除して、スタックセット1をスタックセット3に依存させます。
これでスタックセット3→スタックセット1→スタックセット2の順序で自動デプロイされるはず...
別のアカウントを先程の OU にまた移動させ、作成されたスタック順序を観察してみると...

おお、期待どおりの順序で作成されていますね。うまく機能しています。
さいごに
本日は CloudFormation StackSets の自動デプロイオプションでスタックセットの依存関係を設定しデプロイ順序をコントロールできるようになったので使ってみました。
大規模にベースラインをスタックセットで管理する経験が私はなかったのです、言われてみると確かに依存関係設定したくなりそうですねこれは。
というか CloudFormation StakSets の自動デプロイ機能、初めて使ったのですが便利でかなり良いですね。強化されているし使っていきたい。






