AWS CloudFormation スタックセットからスタックインスタンスを削除したいのですが、対象の AWS アカウントが閉鎖または一時停止されているため、削除できません。
簡単な説明
閉鎖または一時停止されたアカウントのスタックインスタンスを削除するには、DeleteStackInstances 操作を行う際、RetainStacks オプションを true に設定する必要があります。この方法では、スタックインスタンスがスタックセットから接続解除されますが、ターゲットアカウント内のスタックインスタンスは削除されません。
解決策
注: AWS コマンドラインインターフェイス (AWS CLI) コマンドの実行中にエラーが発生した場合は、「AWS CLI のエラーのトラブルシューティング」を参照してください。また、AWS CLI の最新バージョンを使用していることを確認してください。
閉鎖または一時停止されたアカウントからスタックインスタンスを削除するには、CloudFormation コンソールまたは AWS CLI を使用します。スタックセットの権限モデルの解決を完了します。
セルフマネージド権限でスタックセットを削除する
CloudFormation コンソールを使用する
次の手順を実行します。
- CloudFormation コンソールを開きます。
- ナビゲーションペインで [StackSets] を選択します。
- [StackSet 名] 列から目的のスタックセットを選択します。
- [アクション] を選択し、[StackSet からスタックを削除] を選択します。
- 閉鎖または一時停止されたアカウントの ID (12 桁) を [デプロイオプションの設定] ページの [アカウント番号] に入力します。
- [リージョンの指定] でスタックインスタンスの AWS リージョンを選択します。
- [デプロイオプション] で [スタックを保持] を有効にし、[次へ] を選択します。
- [レビュー] ページで [送信] を選択します。
AWS CLI を使用する
次の delete-stack-instances AWS CLI コマンドを実行します。
$ aws cloudformation delete-stack-instances --stack-set-name ExampleStackSetName --accounts 1234567890abcdef0 --regions aa-example-1 --retain-stacks
注: ExampleStackSetName をスタックセット名に、1234567890abcdef0 をスタックインスタンスのアカウント ID に、aa-example-1 をインスタンスのリージョンに置き換えてください。
サービスマネージド権限でスタックセットを削除する
CloudFormation コンソールを使用する
次の手順を実行します。
- CloudFormation コンソールを開きます。
- ナビゲーションペインで [StackSets] を選択します。
- [StackSet 名] 列から目的のスタックセットを選択します。
- [アクション] を選択し、[StackSet からスタックを削除] を選択します。
- [デプロイオプションの設定] ページで次の操作を行います。<br id=hardline_break/>
ターゲットアカウントが属する AWS Organizations ユニット ID を入力します。<br id=hardline_break/>
注: 閉鎖または一時停止されたアカウントの組織ユニット ID (OU ID) が不明な場合は、代わりに、root OU ID を使用してください。<br id=hardline_break/>
[アカウントフィルタータイプ] を選択し、[共通集合] を選択します。<br id=hardline_break/>
AWS Organizations ユニット全体を削除するのではなく、OU 内の個別アカウントを削除するために、ターゲットアカウント番号を入力します。
- [リージョンの指定] セクションでスタックインスタンスのリージョンを選択します。
- [デプロイオプション] セクションで [スタックを保持] を有効にし、[次へ] を選択します。
- [レビュー] ページで [送信] を選択します。
AWS CLI
delete-stack-instances コマンドを実行します。
$ aws cloudformation delete-stack-instances --stack-set-name ExampleStackSetName --deployment-targets Accounts=1234567890abcdef0,OrganizationalUnitIds=abcdef01234567890,AccountFilterType=INTERSECTION --regions aa-example-1 --retain-stacks
注: ExampleStackSetName をスタックセット名に、1234567890abcdef0 をスタックインスタンスのアカウント ID に、abcdef01234567890 をスタックインスタンスアカウントの組織単位に、aa-example-1 をインスタンスのリージョンに置き換えてください。
関連情報
StackSets ステータスコード
CloudFormation StackSets からスタックを削除する