我想從 AWS CloudFormation 堆疊集刪除堆疊執行個體,但刪除失敗,因為目標 AWS 帳戶已關閉或暫停。
簡短說明
AWS 帳戶已關閉或暫停時,CloudFormation StackSets 管理角色將無法再存取該帳戶中的 StackSets 執行角色。這導致堆疊集操作無法在該帳戶的堆疊執行個體上執行。如果您嘗試刪除已關閉或暫停帳戶中的堆疊執行個體,您可能會收到錯誤訊息。然後,堆疊執行個體狀態可能變更為 INOPERABLE。
若要刪除已關閉或暫停帳戶的堆疊執行個體,您必須執行 DeleteStackInstances 操作,並將 RetainStacks 選項設為 true。這會將堆疊執行個體與堆疊集分離,而不刪除目標帳戶中的堆疊執行個體。
下列解決方案步驟取決於堆疊集使用的許可模型:自我管理許可或 AWS Organizations 的服務管理許可。
**注意事項:**如果您在執行 AWS Command Line Interface (AWS CLI) 命令時收到錯誤訊息,請確認您使用最新的 AWS CLI 版本。
解決方案
針對具有自我管理許可的堆疊集刪除無法操作的堆疊執行個體
針對使用自我管理許可的堆疊集,您可以使用 CloudFormation 主控台或 AWS CLI 刪除 INOPERABLE 的堆疊執行個體。
CloudFormation 主控台:
1. 開啟 CloudFormation 主控台。
2. 在導覽窗格中,選擇 StackSets。
3. 在 ** StackSet 名稱**資料欄中,選取包含您要刪除執行個體的堆疊集。
4. 選擇動作,然後選擇從 StackSet 刪除堆疊。
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 取代為堆疊執行個體所在的區域。
相關資訊
堆疊集的許可模型
堆疊集和堆疊執行個體狀態碼