

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

# 在狀態檔案遺失後，安全地清除 AWS Account Factory for Terraform (AFT) 資源
<a name="clean-up-aft-resources-safely-after-state-file-loss"></a>

*Gokendra Malviya，Amazon Web Services*

## 摘要
<a name="clean-up-aft-resources-safely-after-state-file-loss-summary"></a>

當您使用 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 文件](https://docs.aws.amazon.com/controltower/latest/userguide/taf-account-provisioning.html)。

## 先決條件和限制
<a name="clean-up-aft-resources-safely-after-state-file-loss-prereqs"></a>

**先決條件**
+ 徹底了解 [AFT 架構](https://docs.aws.amazon.com/controltower/latest/userguide/aft-architecture.html)。
+ 下列帳戶的管理員存取權：
  + AFT 管理帳戶
  + AWS Control Tower 管理帳戶
  + Log Archive 帳戶
  + 稽核帳戶
+ 驗證沒有服務控制政策 SCPs) 包含會封鎖刪除 AFT 相關資源的限制。

**限制**
+ 此程序可以有效地清除資源，但無法復原遺失的狀態檔案，有些資源可能需要手動識別。
+ 清除程序的持續時間取決於您環境的複雜性，可能需要數小時的時間。
+ 此模式已使用 AFT 1.12.2 版進行測試，並刪除下列資源。如果您使用的是不同版本的 AFT，您可能需要刪除其他資源。    
[See the AWS documentation website for more details](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/patterns/clean-up-aft-resources-safely-after-state-file-loss.html)

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

## Architecture
<a name="clean-up-aft-resources-safely-after-state-file-loss-architecture"></a>

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

![AFT 元件和高階工作流程。](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/patterns/images/pattern-img/1342c0a6-4b07-46df-a063-ceab2e2f83c8/images/3e0cae87-20ef-4fcc-aacf-bb450844ac56.png)


在此架構中：
+ **AWS Control Tower 管理帳戶**是 服務 AWS 帳戶 專用的 AWS Control Tower 。這通常也稱為*AWS 付款人帳戶*或*AWS Organizations 管理帳戶*。
+ **AFT 管理帳戶**是專用於 AFT 管理操作 AWS 帳戶 的 。這與您組織的管理帳戶不同。
+ **已取代的帳戶**是 AWS 帳戶 ，其中包含您選取的所有基準元件和控制項。AFT 使用 AWS Control Tower 來提供新帳戶。

如需此架構的詳細資訊，請參閱 AWS Control Tower 研討會中的 [AFT 簡介](https://catalog.workshops.aws/control-tower/en-US/customization/aft)。

## 工具
<a name="clean-up-aft-resources-safely-after-state-file-loss-tools"></a>

**AWS 服務**
+ [AWS Control Tower](https://docs.aws.amazon.com/controltower/latest/userguide/what-is-control-tower.html) 可協助您設定和管理 AWS 多帳戶環境，並遵循規範最佳實務。
+ [AWS Account Factory for Terraform (AFT)](https://docs.aws.amazon.com/controltower/latest/userguide/taf-account-provisioning.html) 會設定 Terraform 管道，以協助您佈建和自訂其中的帳戶和資源 AWS Control Tower。
+ [AWS Organizations](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_introduction.html) 當您擴展和擴展 AWS 資源時， 可協助您集中管理和控管您的環境。使用 Organizations，您可以建立帳戶並配置資源、分組帳戶來組織工作流程、套用控管政策，以及使用所有帳戶的單一付款方式來簡化帳單。
+ [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) 透過控制已驗證並獲授權使用的人員，協助您安全地管理對 AWS 資源的存取。此模式需要 IAM 角色和許可。

**其他工具**
+ [Terraform](https://www.terraform.io/) 是 HashiCorp 的基礎設施即程式碼 (IaC) 工具，可協助您建立和管理雲端和內部部署資源。

## 最佳實務
<a name="clean-up-aft-resources-safely-after-state-file-loss-best-practices"></a>
+ 如需 AWS Control Tower，請參閱 AWS Control Tower 文件中的[AWS Control Tower 管理員最佳實務](https://docs.aws.amazon.com/controltower/latest/userguide/best-practices.html)。
+ 對於 IAM，請參閱 IAM 文件中的[安全最佳實務](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html)。

## 史詩
<a name="clean-up-aft-resources-safely-after-state-file-loss-epics"></a>

### 刪除 AFT Management 帳戶中的 AFT 資源
<a name="delete-aft-resources-in-the-aft-management-account"></a>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 刪除由 AFT 標籤識別的資源。 | 1. 使用管理員許可登入 AFT 管理帳戶。<br />2. 開啟 [AWS Resource Groups 主控台](https://console.aws.amazon.com/resource-groups/)。<br />3. 選取 AWS Control Tower 已部署 的區域。<br />4. 在導覽窗格中，選擇**標籤編輯器**。<br />5. 針對**資源類型**，選擇**所有支援的資源類型**。<br />6. 對於**標籤**，輸入 **managed\_by** 作為標籤索引鍵，輸入 **AFT** 作為標籤值。<br />7. 選擇**搜尋資源**。<br />此搜尋會顯示 AFT 建立的所有資源。<br />8. 識別資源名稱，並使用對應的服務主控台將其刪除。例如，若要刪除參數存放區資源：開啟 [AWS Systems Manager 主控台](https://console.aws.amazon.com/systems-manager/)。在導覽窗格中，選擇 **Parameter Store (參數存放區)**。在搜尋方塊中，按一下以顯示下拉式清單，選擇**名稱**，選擇**等於**，然後輸入 **/aft**。分 10 個批次刪除參數。（這是您可以同時刪除的最大數量。)<br />對於 AFT 1.12.2 版，大約會有 62 個參數存放區資源要刪除。所有參數名稱將以 **/aft** 開頭。<br />不過，並非所有資源都可以由 識別 AWS Resource Groups。在下列步驟中，您會找到並刪除剩餘的資源。 | AWS 管理員、AWS DevOps、DevOps 工程師 | 
| 刪除 IAM 角色。 | 1. 使用管理員許可登入 AFT 管理帳戶。<br />2. 開啟 [IAM 主控台](https://console.aws.amazon.com/iam/)。<br />3. 依列出的順序刪除這些角色 （順序很重要，因為相依性）：`aft-*``AWSAFTAdmin``AWSAFTExecution``AWSAFTService``codebuild_trigger_role` | AWS 管理員、AWS DevOps、DevOps 工程師 | 
| 刪除 AWS Backup 備份保存庫。 | 1. 開啟 [AWS Backup 主控台](https://console.aws.amazon.com/backup/)。<br />2. 找到名為 的備份保存庫`aws_backup_vault`。<br />3. 確認保存庫不包含任何作用中備份。<br />4. 刪除 `aws_backup_vault`。 | AWS 管理員、AWS DevOps、DevOps 工程師 | 
| 刪除 Amazon CloudWatch 資源。 | 1. 開啟 [CloudWatch 主控台](https://console.aws.amazon.com/cloudwatch/)。<br />2. 依列出的順序刪除下列資源：事件匯流排：刪除 `aws_cloudwatch_event_bus`。日誌：搜尋字首 **AFT** 並刪除所有相關日誌群組。查詢定義：刪除下列查詢：`Customization Logs by Account ID``Customization Logs by Customization Request ID` | AWS 管理員、AWS DevOps、DevOps 工程師 | 
| 刪除 AWS KMS 資源。 | 1. 切換到次要區域，做為 AFT 本身狀態的狀態追蹤後端。<br />2. 開啟 [AWS KMS 主控台](https://console.aws.amazon.com/kms/)。<br />3. 刪除名為 **AFT** 的別名。 | AWS 管理員、AWS DevOps、DevOps 工程師 | 

### 刪除 Log Archive 帳戶中的 AFT 資源
<a name="delete-aft-resources-in-the-log-archive-account"></a>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 刪除 S3 儲存貯體。 | 1. 使用管理員許可登入 Log Archive 帳戶。<br />2. 開啟 [Amazon S3 主控台](https://console.aws.amazon.com/s3/)。<br />3. 清空下列儲存貯體：`aws-aft-logs-471112509802-us-east-1``aws-aft-s3-access-logs-471112509802-us-east-1`<br />(`111122223333`以您的帳戶 ID 取代。)<br />4. 刪除兩個儲存貯體。 | AWS 管理員、AWS DevOps、DevOps 工程師 | 
| 刪除 IAM 角色。 | 1. 開啟 [IAM 主控台](https://console.aws.amazon.com/iam/)。<br />2. 確認下列角色未由任何作用中服務使用：`AWSAFTService``AWSAFTExecution`<br />3. 刪除這兩個角色。 | AWS 管理員、AWS DevOps、DevOps 工程師 | 

### 刪除稽核帳戶中的 AFT 資源
<a name="delete-aft-resources-in-the-audit-account"></a>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 刪除 IAM 角色。 | 1. 使用管理員許可登入稽核帳戶。<br />2. 開啟 [IAM 主控台](https://console.aws.amazon.com/iam/)。<br />3. 確認下列角色未由任何作用中服務使用：`AWSAFTService``AWSAFTExecution`<br />4. 刪除這兩個角色。 | AWS 管理員、AWS DevOps、DevOps 工程師 | 

### 刪除 AWS Control Tower 管理帳戶中的 AFT 資源
<a name="delete-aft-resources-in-the-ctower-management-account"></a>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 刪除 IAM 角色。 | 1. 使用管理員許可登入 AWS Control Tower 管理帳戶。<br />2. 開啟 [IAM 主控台](https://console.aws.amazon.com/iam/)。<br />3. 確認下列角色未由任何作用中服務使用：`AWSAFTService``AWSAFTExecution``aft-control-tower-events-rule`<br />4. 刪除三個角色。 | AWS 管理員、AWS DevOps、DevOps 工程師 | 
| 刪除 EventBridge 規則。 | 1. 開啟 [Amazon EventBridge 主控台](https://console.aws.amazon.com/events/)。<br />2. 在左側導覽窗格中，選擇 **Rules (規則)**。<br />3. 尋找並選取名為 的規則`aft-capture-ct-events`。<br />4. 選擇**刪除**，並在出現提示時確認刪除。 | AWS 管理員、AWS DevOps、DevOps 工程師 | 

## 疑難排解
<a name="clean-up-aft-resources-safely-after-state-file-loss-troubleshooting"></a>


| 問題 | 解決方案 | 
| --- | --- | 
| 分離網際網路閘道失敗。 | 當您刪除 **AFT** 標籤識別的資源時，如果您在分離或刪除網際網路閘道時遇到此問題，您必須先刪除 VPC 端點：1. 登入 AFT 管理帳戶，然後開啟 [Amazon VPC 主控台](https://console.aws.amazon.com/vpc/)。<br />2. 在導覽窗格中，於**依 VPC 篩選**清單中，選擇名為 **aft-management-vpc** 的 VPC。<br />3. 在導覽窗格中選擇**端點**。<br />4. 選取與 VPC **aft-management-vpc** 相關聯的端點。在刪除之前再次檢查 VPC ID 資料欄，以避免移除錯誤的端點。請小心僅刪除與 AFT VPC 相關聯的端點。<br />5. 選擇 **Actions** (動作)、**Delete VPC endpoints** (刪除 VPC 端點)。<br />6. 在確認對話方塊中，輸入 **Delete**，然後選擇 **Delete**。<br />7. 等待端點狀態變更為**已刪除**。<br />刪除可能需要幾分鐘的時間才能完成。 | 
| 找不到指定的 CloudWatch 查詢。 | 如果您找不到 AFT 建立的 CloudWatch 查詢，請依照下列步驟執行：1. 登入 AFT 管理帳戶，然後開啟 [CloudWatch 主控台](https://console.aws.amazon.com/cloudwatch/)。<br />2. 在導覽窗格中的**日誌**下，選擇**日誌洞見**。<br />3. 在右上角，選擇**已儲存和範例查詢**圖示。<br />您現在應該可以看到 AFT 查詢。如需螢幕擷取畫面，請參閱[其他資訊](#clean-up-aft-resources-safely-after-state-file-loss-additional)一節。<br />4. 選取下列查詢，然後選擇**動作**、**刪除**以移除它們。`Customization Logs by Account ID``Customization Logs by Customization Request ID` | 

## 相關資源
<a name="clean-up-aft-resources-safely-after-state-file-loss-resources"></a>
+ AFT：
  + [GitHub 儲存庫](https://github.com/aws-ia/terraform-aws-control_tower_account_factory)
  + [研討會](https://catalog.workshops.aws/control-tower/en-US/customization/aft)
  + [文件](https://docs.aws.amazon.com/controltower/latest/userguide/aft-getting-started.html)
+ [AWS Control Tower 文件](https://docs.aws.amazon.com/controltower/latest/userguide/getting-started-with-control-tower.html)

## 其他資訊
<a name="clean-up-aft-resources-safely-after-state-file-loss-additional"></a>

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

![在 CloudWatch Logs Insights 儀表板上存取 AFT 查詢。](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/patterns/images/pattern-img/1342c0a6-4b07-46df-a063-ceab2e2f83c8/images/255d4032-738b-4600-9084-9684d2e9a328.png)
