[アップデート] CloudFormation StackSets で実行中に各スタックインスタンスの状態がオペレーション単位でわかるように

途中経過が把握しやすくなった
2022.11.16

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

どうも、ちゃだいん(@chazuke4649)です。

AWS CloudFormation StackSets でオペレーション実行中に各スタックインスタンスの状態がわかるようになりました!

AWS CloudFormation StackSets のスタックセットオペレーションのスタックインスタンスに関するインサイトが向上

公式ドキュメントの該当箇所はこちら。

Troubleshooting AWS CloudFormation StackSets - AWS CloudFormation

何が嬉しい?

今までは、CloudFormation StackSets を実行すると、オペレーション単位で進捗状況を確認することはできませんでした。代わりに、StackSetsのスタックインスタンスタブを開き、現在のスタックインスタンスのステータスを確認する必要がありました。

今回のアップデートによって、実行したオペレーション単位で進捗状況を把握できるようになり、具体的には各スタックインスタンス(=AWSアカウント)単位で、ステータスが RUNNINGSUCCEEDEDFAILED か途中でもわかるようになりました。

大規模な組織や時間のかかるリソースが多いテンプレートだと、StackSetsのオペレーションが終了するまでかなり時間を要する場合もありますが、これによってGUIにて進捗を確認するか、CLIやSDKでプログラマブルに失敗したスタックインスタンスを取得・通知するといったことが可能になります。

やってみた

前提や概要

簡単なテンプレートを使って、管理アカウントにて CloudFormation StackSet を作成してみます。

何の変哲もない、IAMロールを作るCloudFormationテンプレートを使用します。

対象は十数アカウントありますが、2つにはこれから作成するIAMロールと同じ名前のIAMロールを事前に作っておき、エラーになる状態にしておきます。

新しいStackSetを作成する

tempSampleRole という名前で StackSet を作成します。

基本的にデフォルト設定のまま進めますが、1点「同時アカウントの最大数」と「耐障害性」は、共に10と設定し、複数アカウントが同時に実行できる状態にし、かつ、途中でいくつか失敗してもかまわず突き進んでくれる状態にしました。

それでは StackSet を実行します。

実行すると、オペレーションタブには、新しいオペレーションIDが表示されます。実行したすぐでは、各スタックインスタンスは表示されません。

少し待ってリフレッシュすると、対象のスタックインスタンスがざっと表示され始めました。ステータスは RUNNINNG がほとんどですね。

IAMロール作るだけなのですぐ変化が見られますが、ちょっとしてリフレッシュすると、 SUCCEEDEDFAILED も出てきました。

最終的にほとんどのステータスの結果がわかりました。

CLIによるコマンドのサンプルは以下に載っています。

Troubleshooting AWS CloudFormation StackSets - AWS CloudFormation

終わりに

今回はIAMロールだけでしたがEC2やRDS、ネットワーク関連のリソースだとそれなりに時間がかかるリソースもあります。そういったユースケースでは途中経過がわかるのは嬉しいでしょう。

また今回のアップデートを活用すれば、失敗のスタックインスタンスがある場合に通知することも可能かもしれないので、引き続き検証してみたいと思いました。

それでは今日はこの辺で。ちゃだいん(@chazuke4649)でした。