AWS CloudFormation スタックセットからスタックインスタンスを削除したいのですが、ターゲット AWS アカウントが閉じられた、または中断されたため、削除できません。
簡単な説明
AWS アカウントが閉じられる、または中断されると、CloudFormation StackSets 管理ロールはそのアカウントの StackSets 実行ロールにアクセスできなくなります。これにより、そのアカウントのスタックインスタンスでスタックセット操作が実行されなくなります。閉じられたアカウントまたは中断されたアカウントのスタックインスタンスを削除しようとすると、エラーメッセージが表示されることがあります。その後、スタックインスタンスのステータスが INOPERABLE に変更されることがあります。
閉じられたアカウントまたは中断されたアカウントのスタックインスタンスを削除するには、RetainStacks オプションを true に設定して DeleteStackInstances オペレーションを実行する必要があります。これにより、ターゲットアカウントのスタックインスタンスを削除せずに、スタックインスタンスがスタックセットから切り離されます。
以下の解決手順は、スタックセットが使用する許可モデル (セルフマネージド許可または AWS Oraginations によるサービスマネージド許可) によって異なります。
注意: AWS Command Line Interface (AWS CLI) コマンドの実行中にエラーが発生した場合は、AWS CLI の最新バージョンを使用していることを確認してください。
解決方法
セルフマネージド許可を持つスタックセットの動作不能なスタックインスタンスを削除
セルフマネージド許可を使用するスタックセットの場合、CloudFormation コンソールまたは AWS CLI のいずれかを使用して、状態が INOPERABLE であるスタックインスタンスを削除することができます。
CloudFormation コンソールの場合:
1. CloudFormation コンソールを開きます。
2. ナビゲーションペインで、[StackSets] を選択します。
3. StackSet 名列から、削除するインスタンスを含むスタックセットを選択します。
4. [アクション] を選択してから、[StackSets からのスタックの削除] を選択します。
5. [デプロイオプションの設定] ページの [アカウント番号] に、閉じられたまたは中断された AWS アカウントの 12 桁のアカウント番号を入力します。
6. [リージョンの指定] セクションで、スタックインスタンスの AWS リージョンを選択します。
7. [デプロイオプション] セクションで、[スタックを保持する] をオンにして [次へ] を選択します。
8. [確認] ページで、[送信] を選択します。
AWS CLI の場合:
AWS CLI で、次のコマンドを実行します。
$ aws cloudformation delete-stack-instances --stack-set-name YourStackSetName --accounts YourStackInstanceAccount --regions YourStackInstanceRegion --retain-stacks
**注意:**yourStackSetName は、使用して言うスタックセットの名前に置き換えます。YourStackInstanceAccount を、閉じられたまたは中断されたアカウントの AWS アカウント番号に置き換えます。YourStackInstanceRegion を、スタックインスタンスがあるリージョンに置き換えます。
サービスマネージド許可を持つスタックセットの動作不能なスタックインスタンスを削除
サービスマネージド許可を使用するスタックセットの場合、CloudFormation コンソールからのオペレーションは、組織単位 (OU) 全体のみをターゲットにできます。AWS CLI を使用して、単一のアカウントから特定のスタックインスタンスを削除する必要があります。
AWS CLI で、次のコマンドを実行します。
aws cloudformation delete-stack-instances --stack-set-name YourStackSetName --deployment-targets Accounts=YourStackInstanceAccount --regions YourStackInstanceRegion --retain-stacks
**注意:**yourStackSetName は、使用して言うスタックセットの名前に置き換えます。YourStackInstanceAccount を、閉じられたまたは中断されたアカウントの AWS アカウント番号に置き換えます。YourStackInstanceRegion を、スタックインスタンスがあるリージョンに置き換えます。
関連情報
スタックセットの許可モデル
スタックセットとスタックインスタンスのステータスコード