CloudFormation StackSets で 失敗したAWSアカウントのStackのみ再試行・更新する

ステータスがOUTDATEDな一部のAWSアカウントだけ再試行したいケース
2022.06.01

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

ちゃだいん(@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 に変更になっていました。

作業は以上です。