如何在已關閉或暫停的 AWS 帳戶中,從 CloudFormation 堆疊集刪除堆疊執行個體?

1 分的閱讀內容
0

我想從 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 取代為堆疊執行個體所在的區域。


相關資訊

堆疊集的許可模型

堆疊集和堆疊執行個體狀態碼

AWS 官方
AWS 官方已更新 2 年前