CloudFormation StackSets で 失敗したAWSアカウントのStackのみ再試行・更新する
ちゃだいん(@chazuke4649)です。
AWS CloudFormation StackSets の自動デプロイメント を使っているとたまに Organizaitonsの一部メンバーアカウントでスタック作成が失敗することがあります。
失敗する理由は様々なので対処方法は異なりますが、原因を解決をすると、再度そのAWSアカウントだけもう一度スタック作成を実行したくなります。(その他は成功しているから一部特定のAWSアカウント/OUだけといったケースです)
今回はその方法がドキュメントに書かれていたので、実際にやってみました。
参考情報
基本的には以下ドキュメントの手順に従います。
失敗したスタック作成または更新オペレーションを再試行する - AWS CloudFormation
前提や概要
- 対象のCloudFormation StackSets テンプレート: TerraformBackend (※テンプレートの内容説明は今回割愛します)
- スタック作成に失敗したAWSアカウントiD: 111111111111
- 失敗理由: Cancelled since failure tolerance has execeeded (失敗を許容するスタックの上限に達したのでキャンセルされた)
この 111111111111
だけ他がコケたせいで実行されなかったので、このAWSアカウントのみ再度実行します。
やってみた
まず、Organizationsの管理アカウントにて、CloudFormationコンソールを開き、StackSetの画面にて、対象のStackSet TerraformBackend
を開きます。
下図の通り対象のAWSアカウントだけステータスが OUTDATED
になっていることが確認できます。
「アクション」から「StackSetの詳細を編集」をクリックします。(ポイントとして、今回の場合 既存スタックの更新という位置付けになるため、「スタックを追加する」ではありません)
ステップ1では、「現在のテンプレートの使用」がチェックされていることを確認し、次に進みます。
ステップ2では、特に何も変更しないので、次に進みます。
ステップ3では、特に何も変更しないので、次に進みます。
実行設定部分で競合しないオペレーションを同時実行させて、早く完了させたい場合などはアクティブを選択します。本オプションの詳細は以下をどうぞ。
CloudFormationで同一スタックセットに対して複数のオペレーションがサポートされました | DevelopersIO
ステップ4では、今回メインの設定となります。デプロイする対象として「アカウントへのデプロイ」を選択し、アカウント番号 111111111111
を入力します。
デプロイするリージョンは東京だけなので、東京リージョンを指定し、次に進みます。
必要に応じて他オプションは変更OKです。
最終確認を行い、実行します。
実行すると、「オペレーション」タブにて、新しいオペレーションが RUNNING
であることが確認できます。
しばらくすると、上記は SUCCEEDED
になり、「スタックインスタンス」タブを開くと、対象のAWSアカウントのステータスが CURRENT
に変更になっていました。
作業は以上です。