在狀態檔案遺失後,安全地清除 AWS Account Factory for Terraform (AFT) 資源 - AWS 方案指引

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

 在狀態檔案遺失後,安全地清除 AWS Account Factory for Terraform (AFT) 資源

由 Gokendra Malviya (AWS) 建立

Summary

當您使用 AWS Account Factory for Terraform (AFT) 來管理 AWS Control Tower 環境時,AFT 會產生 Terraform 狀態檔案,以追蹤 Terraform 所建立資源的狀態和組態。遺失 Terraform 狀態檔案可能會對資源管理和清除造成重大挑戰。此模式提供系統性方法,可安全地識別和移除 AFT 相關資源,同時維護您 AWS Control Tower 環境的完整性。

此程序旨在確保適當移除所有 AFT 元件,即使沒有原始狀態檔案參考。此程序提供明確的路徑,可在您的環境中成功重新建立和重新設定 AFT,以協助確保對 AWS Control Tower 操作的干擾降到最低。

如需 AFT 的詳細資訊,請參閱 AWS Control Tower 文件

先決條件和限制

先決條件

  • 徹底了解 AFT 架構

  • 下列帳戶的管理員存取權:

    • AFT 管理帳戶

    • AWS Control Tower 管理帳戶

    • Log Archive 帳戶

    • 稽核帳戶

  • 驗證沒有服務控制政策 SCPs) 包含會封鎖刪除 AFT 相關資源的限制。

限制

  • 此程序可以有效地清除資源,但無法復原遺失的狀態檔案,有些資源可能需要手動識別。

  • 清除程序的持續時間取決於您環境的複雜性,可能需要數小時的時間。

  • 此模式已使用 AFT 1.12.2 版進行測試,並刪除下列資源。如果您使用的是不同版本的 AFT,您可能需要刪除其他資源。

    服務名稱

    資源數量

    AWS CodeBuild

    6

    AWS CodeCommit

    4

    AWS CodePipeline

    4

    Amazon DynamoDB

    5

    Amazon Elastic Compute Cloud (Amazon EC2)

    16

    Amazon EventBridge

    4

    AWS Identity and Access Management (IAM) 角色

    40

    AWS Key Management Service (AWS KMS)

    2

    AWS Lambda

    17

    Amazon Simple Storage Service (Amazon S3)

    2

    Amazon Simple Notification Service (Amazon SNS)

    2

    Amazon Simple Queue Service (Amazon SQS)

    2

    AWS Systems Manager

    62

    AWS Step Functions

    4

重要

無法復原此模式中步驟刪除的資源。遵循這些步驟之前,請仔細驗證資源名稱,並確認它們是由 AFT 建立。

架構

下圖顯示 AFT 元件和高階工作流程。AFT 會設定 Terraform 管道,協助您在其中佈建和自訂帳戶 AWS Control Tower。AFT 遵循 GitOps 模型來自動化其中帳戶佈建的程序 AWS Control Tower。您可以為帳戶請求建立 Terraform 檔案並將其遞交至儲存庫,該儲存庫提供觸發帳戶佈建之 AFT 工作流程的輸入。帳戶佈建完成後,AFT 可以自動執行其他自訂步驟。

AFT 元件和高階工作流程。

在此架構中:

  • AWS Control Tower 管理帳戶是 服務專用的 AWS 帳戶 AWS Control Tower 。這通常也稱為AWS 付款人帳戶AWS Organizations 管理帳戶

  • AFT Management 帳戶是專用於 AFT 管理操作 AWS 帳戶 的 。這與您組織的管理帳戶不同。

  • 已取代的帳戶是 AWS 帳戶 ,其中包含您選取的所有基準元件和控制項。AFT 使用 AWS Control Tower 來提供新帳戶。

如需此架構的詳細資訊,請參閱 AWS Control Tower 研討會中的 AFT 簡介

工具

AWS 服務

  • AWS Control Tower 可協助您設定和管理 AWS 多帳戶環境,並遵循規範最佳實務。

  • AWS Account Factory for Terraform (AFT) 會設定 Terraform 管道,協助您佈建和自訂其中的帳戶和資源 AWS Control Tower。

  • AWS Organizations 隨著資源的成長和擴展, 可協助您集中管理和控管您的環境 AWS 。使用 Organizations,您可以建立帳戶並配置資源、分組帳戶來組織工作流程、套用控管政策,以及使用所有帳戶的單一付款方式來簡化計費。

  • AWS Identity and Access Management (IAM) 透過控制已驗證並獲授權使用的人員,協助您安全地管理對 AWS 資源的存取。此模式需要 IAM 角色和許可。

其他工具

  • Terraform 是 HashiCorp 的基礎設施即程式碼 (IaC) 工具,可協助您建立和管理雲端和內部部署資源。

最佳實務

史詩

任務描述所需的技能

刪除由 AFT 標籤識別的資源。

  1. 使用管理員許可登入 AFT 管理帳戶。

  2. 開啟 AWS Resource Groups 主控台

  3. 選取 AWS Control Tower 已部署 的區域。

  4. 在導覽窗格中,選擇標籤編輯器

  5. 針對資源類型,選擇所有支援的資源類型

  6. 對於標籤,輸入 managed_by 作為標籤索引鍵,輸入 AFT 作為標籤值。

  7. 選擇搜尋資源

    此搜尋會顯示 AFT 建立的所有資源。

  8. 識別資源名稱,並使用對應的服務主控台將其刪除。例如,若要刪除參數存放區資源:

    1. 開啟 AWS Systems Manager 主控台

    2. 在導覽窗格中,選擇 Parameter Store (參數存放區)

    3. 在搜尋方塊中,按一下以顯示下拉式清單,選擇名稱,選擇等於,然後輸入 /aft

    4. 分 10 個批次刪除參數。(這是您可以同時刪除的最大數量。)

      對於 AFT 1.12.2 版,大約會有 62 個參數存放區資源要刪除。所有參數名稱將以 /aft 開頭。

    不過,並非所有資源都可以由 識別 AWS Resource Groups。在下列步驟中,您會找到並刪除剩餘的資源。

AWS 管理員、AWS DevOps、DevOps 工程師

刪除 IAM 角色。

  1. 使用管理員許可登入 AFT 管理帳戶。

  2. 開啟 IAM 主控台

  3. 依列出的順序刪除這些角色 (順序很重要,因為相依性):

    • aft-*

    • AWSAFTAdmin

    • AWSAFTExecution

    • AWSAFTService

    • codebuild_trigger_role

AWS 管理員、AWS DevOps、DevOps 工程師

刪除 AWS Backup 備份保存庫。

  1. 開啟 AWS Backup 主控台

  2. 找到名為 的備份保存庫aws_backup_vault

  3. 確認保存庫不包含任何作用中備份。

  4. 刪除 aws_backup_vault

AWS 管理員、AWS DevOps、DevOps 工程師

刪除 Amazon CloudWatch 資源。

  1. 開啟 CloudWatch 主控台

  2. 依列出的順序刪除下列資源:

    1. 事件匯流排:刪除 aws_cloudwatch_event_bus

    2. 日誌:搜尋字首 AFT 並刪除所有相關日誌群組。

    3. 查詢定義:刪除下列查詢:

      • Customization Logs by Account ID

      • Customization Logs by Customization Request ID

AWS 管理員、AWS DevOps、DevOps 工程師

刪除 AWS KMS 資源。

  1. 切換到次要區域,做為 AFT 本身狀態的狀態追蹤後端。

  2. 開啟 AWS KMS 主控台

  3. 刪除名為 AFT 的別名。

AWS 管理員、AWS DevOps、DevOps 工程師
任務描述所需的技能

刪除 S3 儲存貯體。

  1. 使用管理員許可登入 Log Archive 帳戶。

  2. 開啟 Amazon S3 主控台

  3. 清空下列儲存貯體:

    • aws-aft-logs-471112509802-us-east-1

    • aws-aft-s3-access-logs-471112509802-us-east-1

    (111122223333以您的帳戶 ID 取代 。)

  4. 刪除兩個儲存貯體。

AWS 管理員、AWS DevOps、DevOps 工程師

刪除 IAM 角色。

  1. 開啟 IAM 主控台

  2. 確認下列角色未由任何作用中服務使用:

    • AWSAFTService

    • AWSAFTExecution

  3. 刪除這兩個角色。

AWS 管理員、AWS DevOps、DevOps 工程師
任務描述所需的技能

刪除 IAM 角色。

  1. 使用管理員許可登入 Audit 帳戶。

  2. 開啟 IAM 主控台

  3. 確認下列角色未由任何作用中服務使用:

    • AWSAFTService

    • AWSAFTExecution

  4. 刪除這兩個角色。

AWS 管理員、AWS DevOps、DevOps 工程師
任務描述所需的技能

刪除 IAM 角色。

  1. 使用管理員許可登入 AWS Control Tower 管理帳戶。

  2. 開啟 IAM 主控台

  3. 確認下列角色未由任何作用中服務使用:

    • AWSAFTService

    • AWSAFTExecution

    • aft-control-tower-events-rule

  4. 刪除三個角色。

AWS 管理員、AWS DevOps、DevOps 工程師

刪除 EventBridge 規則。

  1. 開啟 Amazon EventBridge 主控台

  2. 在左側導覽窗格中,選擇 Rules (規則)

  3. 尋找並選取名為 的規則aft-capture-ct-events

  4. 選擇刪除,並在出現提示時確認刪除。

AWS 管理員、AWS DevOps、DevOps 工程師

故障診斷

問題解決方案

分離網際網路閘道失敗。

當您刪除 AFT 標籤識別的資源時,如果您在分離或刪除網際網路閘道時遇到此問題,您必須先刪除 VPC 端點:

  1. 登入 AFT 管理帳戶,然後開啟 Amazon VPC 主控台

  2. 在導覽窗格中,於依 VPC 篩選清單中,選擇名為 aft-management-vpc 的 VPC。

  3. 在導覽窗格中選擇端點

  4. 選取與 VPC aft-management-vpc 相關聯的端點。

    • 在刪除之前再次檢查 VPC ID 資料欄,以避免移除錯誤的端點。

    • 請小心僅刪除與 AFT VPC 相關聯的端點。

  5. 選擇 Actions (動作)、Delete VPC endpoints (刪除 VPC 端點)。

  6. 在確認對話方塊中,輸入 Delete,然後選擇 Delete

  7. 等待端點狀態變更為已刪除

    刪除可能需要幾分鐘的時間才能完成。

找不到指定的 CloudWatch 查詢。

如果您找不到 AFT 建立的 CloudWatch 查詢,請依照下列步驟執行:

  1. 登入 AFT 管理帳戶,然後開啟 CloudWatch 主控台

  2. 在導覽窗格中的日誌下,選擇日誌洞見

  3. 在右上角,選擇已儲存和範例查詢圖示。

    您現在應該可以看到 AFT 查詢。如需螢幕擷取畫面,請參閱其他資訊一節。

  4. 選取下列查詢,然後選擇動作刪除以移除它們。

    • Customization Logs by Account ID

    • Customization Logs by Customization Request ID

相關資源

其他資訊

若要在 CloudWatch Logs Insights 儀表板上檢視 AFT 查詢,請從右上角選擇已儲存和範例查詢圖示,如下列螢幕擷取畫面所示:

在 CloudWatch Logs Insights 儀表板上存取 AFT 查詢。