故障診斷 - AWS Control Tower

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

故障診斷

如果您在使用 AWS Control Tower 時遇到問題,可以使用下列資訊根據我們的最佳實務解決問題。如果您遇到的問題超出了下列資訊的範圍,或者在您嘗試解決問題後仍然存在,請連絡 Sup AWS port 部門。

登陸區域啟動失敗

登陸區域啟動失敗的常見原因:

  • 沒有回應確認電子郵件訊息。

  • AWS CloudFormation StackSet 失敗。

確認電子郵件訊息:如果您的管理帳戶使用時間不到一小時,您可能會在建立其他帳戶時遇到問題。

採取動作

如果您遭遇此問題,請查看您的電子郵件。您可能已經收到正在等候回應的確認電子郵件。或者,若您發生此問題,我們建議您等待一個小時,然後再試一次。如果問題仍然存在,請聯絡 Sup AWS port 部門。

失敗 StackSets:導致 landing zone 啟動失敗的另一個可能原因是失 AWS CloudFormation StackSet 敗。 AWS 必須在 AWS Control Tower 管理的所有區域的管理帳戶中啟用安全性權杖服務 (STS) AWS 區域,才能成功佈建;否則,堆疊集將無法啟動。

採取動作

在啟動 AWS Control Tower 之前,請務必啟用所有必要的 AWS 安全性權杖服務 (STS) 端點區域

若要檢視 AWS Control Tower 支援的 AWS 區域 清單,請參閱方法 AWS 區域與 AWS Control Tower 一起工作

著陸區域不是最新的錯誤

如果您最近沒有更新 landing zone 域,嘗試重新獲得 AWS Control Tower 的存取權時可能會收到錯誤訊息。您可能會看到類似下列的錯誤訊息:

Unable to access Control Tower

您的帳戶已停用時間過長。由於閒置狀態,您必須更新 landing zone 才能存取 AWS Control Tower。

不過,您的 landing zone 更新可能會失敗。

採取的步驟

登入組織的管理帳戶,然後以 root 使用者身分登入。IAM 身分中心中的 IAM 使用者或使用者必須擁有 AWS Control Tower 管理員許可,並且是AWSControlTowerAdmins群組的一部分。然後再次嘗試更新。

新帳戶佈建失敗

如果您遇到這個問題,請檢查這些常見的原因。

填寫帳戶佈建表單時,您可能會有:
  • 指定的 tagOptions

  • 啟用的 SNS 通知、

  • 啟用的佈建產品通知。

再試一次佈建您的帳戶,而不指定這些選項中的任何選項。如需詳細資訊,請參閱 使用 AWS Service Catalog Account Factory 佈建帳戶

失敗的其他常見原因:
  • 如果您已建立佈建產品計劃 (以檢視資源變更),您的帳戶佈建可能會無限期地保持為 In progress (進行中) 狀態。

  • 在 Account Factory 建立新帳戶將會失敗,而其他 AWS Control Tower 組態變更正在進行中。例如,當處理序正在執行以將控制項新增至 OU 時,如果您嘗試佈建帳戶,Account Factory 將會顯示錯誤訊息。

在 AWS Control Tower 中查看先前動作的狀態
  • 導覽至 AWS CloudFormation > StackSets

  • 檢查與 AWS Control Tower 相關的每個堆疊集 (前綴:"AWSControlTower「)

  • 尋找仍在 AWS CloudFormation StackSets 執行中的作業。

如果您的帳戶佈建時間超過一小時,建議您終止佈建程序,然後再試一次。

註冊現有帳戶失敗

如果您嘗試註冊現有 AWS 帳戶一次,但該註冊失敗,則當您再次嘗試時,錯誤訊息可能會告訴您堆疊集存在。若要繼續,您必須在帳戶團隊中移除已佈建的產品。

如果第一次註冊失敗的原因是您忘記事先在帳戶中建立 AWSControlTowerExecution 角色,您會收到正確地告訴您建立角色的錯誤訊息。但是,當您嘗試建立角色時,您可能會收到另一個錯誤訊息,指出 AWS Control Tower 無法建立該角色。發生此錯誤是因為處理程序已部分完成。

在這種情況下,您必須採取兩個復原步驟,才能繼續註冊現有的帳戶。首先,您必須透過 AWS Service Catalog 主控台終止 Account Factory 佈建的產品。接下來,您必須使用 AWS Organizations 主控台手動將帳戶移出 OU,然後再移回根目錄。完成之後,請在帳戶中建立 AWSControlTowerExecution 角色,然後再次填寫 Enroll account (註冊帳戶) 表單。

註冊失敗的另一個可能原因是帳戶具有現有的 AWS Config 資源。在這種情況下,請參閱註冊具有現有 AWS Config 資源的帳戶,以取得如何修改現有資源的指示。

無法更新帳戶團隊帳戶

當帳戶處於不一致狀態時,無法從 Account Factory 或 AWS Service Catalog.

案例 1:您可能會遇到類似下列錯誤訊息:

AWS Control Tower could not baseline VPC in the managed account because of existing resource dependencies.

常見原因:AWS Control Tower 在初始佈建期間一律移除 AWS 預設 VPC。若要在帳戶中使用 AWS 預設 VPC,您必須在帳戶建立後新增它。AWS Control Tower 擁有自己的預設 VPC 來取代 AWS 預設 VPC,除非您按照逐步解說的方式設定 Account Factory,因此 AWS Control Tower 完全不會佈建 VPC。那麼該帳戶就沒有 VPC。如果要使用 AWS 預設 VPC,則必須重新新增預設 VPC。

不過,AWS Control Tower 不支援 AWS 預設 VPC。部署預設 VPC 的話,會導致帳戶進入 Tainted 狀態。處於該狀態時,您無法透過更新帳戶 AWS Service Catalog。

要採取的動作:您必須刪除新增的預設 VPC,然後才能更新帳戶。

注意

Tainted態會導致後續問題:未更新的帳戶可能會阻止在其所屬 OU 上啟用控制項。

案例 2:您可能會看到類似下列錯誤訊息:

AWS Control Tower detects that your enrolled account has been moved to a new organizational unit.

常見原因:您嘗試將帳戶從一個已註冊的 OU 移到另一個 OU,但舊的 AWS Config 規則仍然存在。帳戶處於不一致的狀態。

要採取的行動:

如果帳戶移動的目的是:
  • 終止 Service Catalog 中的帳戶。

  • 再次註冊。

  • 內容/影響:部署的組 AWS Config 規則與目的地 OU 指定的組態不符。

  • AWS Config 規則可能會保留在先前的 OU 中,導致非預期的支出。

  • 由於資源命名衝突,嘗試重新註冊或更新帳號將失敗。

如果帳戶移動意外:
  • 將帳戶返回其原始 OU。

  • 從 Service Catalog 更新帳戶。

  • 在啟動參數中,輸入帳戶原本所在的 OU。

  • 內容/影響:如果帳戶未返回原始 OU,其狀態將與其所在的新 OU 指定的控制項不一致。

  • 更新帳戶不是有效的補救措施,因為它不會刪除與其先前 OU 相關聯的 AWS Config 規則。

無法更新著陸區

如果更新失敗,AWS Control Tower 不會復原至先前的 landing zone 版本。您可能會發現您的 landing zone 處於不確定狀態。如果是這樣,請聯繫 AWS 支持。

著陸區更新可能會因為幾個原因而失敗。

  • 不符合先決條件

  • AWS Config 特定帳號中存在資源

  • 存在關閉的帳戶

不符合先決條件

landing zone 更新必須符合與 landing zone 設置相同的先決條件。更新之前,請先檢閱啟動前檢查

AWS Config 資源存在於安全性 OU 帳戶中

請勿在稽核記錄封存帳戶中新增 AWS Config 資源。出現這些資源時,無法完成 landing zone 域更新程序。這些限制類似於第一次註冊帳戶或設置 landing zone 的限制。如需詳細資訊,請參閱註冊具有現有 AWS Config 資源的帳戶

存在關閉的帳戶

當帳戶處於「已關閉」或「暫停」狀態時,您可能會在嘗試更新 landing zone 時遇到問題。您必須先刪除每個已關閉帳戶上佈建的產品,然後才能對 landing zone 域執行更新。

在 AWS Service Catalog 佈建的產品頁面上,您可能會看到類似下列錯誤訊息:

AWSControlTowerExecution role can't be assumed on the account.

常見原因:您已暫停帳戶,但未刪除已佈建的產品。

要採取的動作:如果您看到此錯誤,您有兩種選擇:

  1. 聯絡 Sup AWS port 部門並重新開啟帳戶、刪除佈建的產品,然後再次關閉帳戶。

  2. 移除因為帳號關閉而被遺棄的資源。 StackSets (只 StackSets 有在您未移除的「目前」狀態的實例時,才能使用此選項。)

若要從中移除資源 StackSets,請針對每個已關閉的帳號執行此動作:
  • 進入每個 AWS Control Tower, StackSets 並針對已關閉的帳戶 StackInstances 從每個區域中移除。

  • 重要事項:選擇「保留堆疊」選項,以便只 StackSet 移除堆疊執行個體。 StackSet 不能承擔來自已關閉帳戶的角色,因此如果嘗試擔任該AWSControlTowerExecution角色,它將失敗,從而導致您收到的錯誤消息。

提及的失敗錯誤 AWS Config

如果 AWS Config 在 AWS Control Tower 支援的任何 AWS 區域啟用,您可能會收到錯誤訊息,因為預先檢查失敗。由於某些基本行為,該消息似乎無法充分解釋問題。 AWS Config

您可能會收到如下的錯誤訊息:
  • AWS Control Tower cannot create an AWS Config delivery channel because one already exists. To continue, delete the existing delivery channel and try again
.

  • AWS Control Tower cannot create an AWS Config configuration recorder because one already exists. To continue, delete the existing delivery channel and try again
.

常見原因:在 AWS 帳戶上啟用 AWS Config 服務時,會使用預設命名建立組態記錄程式和傳遞通道。如果您透過主控台停用 AWS Config 服務,則不會刪除組態錄製程式或傳遞通道。您必須透過 CLI 刪除它們,或修改它們以供 AWS Control Tower 使用。如果在 AWS Control Tower 支援的任何一個區域中啟用 AWS Config 服務,則可能導致此失敗。

如果帳戶具有現有的 AWS Config 資源,請參閱註冊具有現有 AWS Config 資源的帳戶,以取得如何修改現有資源的指示。

採取動作:在所有支援的區域中,刪除組態記錄器和交付通路。禁用 AWS Config 是不夠的,配置記錄器和交付通道必須通過 CLI 來刪除。從 CLI 刪除組態記錄器和交付通道後,您可以再次嘗試啟動 AWS Control Tower 並註冊該帳戶。

如果您正在部署已佈建產品,則必須先刪除已佈建的產品,然後再重試。否則,您可能會看到類似下列錯誤訊息:

  • An error occurred (InvalidParametersException) when calling the ProvisionProduct operation: A stack named Stackname already exists.

在訊息中,Stackname指定堆疊的名稱。

以下是一些可用來判斷組態記錄程式和傳遞通道狀態的 AWS Config CLI 命令範例。

檢視命令:

  • aws configservice describe-delivery-channels

  • aws configservice describe-delivery-channel-status

  • aws configservice describe-configuration-recorders

  • The normal response is something like "name": "default"

刪除命令:

  • aws configservice stop-configuration-recorder --configuration-recorder-name NAME-FROM-DESCRIBE-OUTPUT

  • aws configservice delete-delivery-channel --delivery-channel-name NAME-FROM-DESCRIBE-OUTPUT

  • aws configservice delete-configuration-recorder --configuration-recorder-name NAME-FROM-DESCRIBE-OUTPUT

如需詳細資訊,請參閱 AWS Config 文件

找不到啟動路徑錯誤

當您嘗試建立新帳戶時,可能會看到類似如下的錯誤訊息:

No launch paths found for resource: prod-dpqqfywxxxx

此錯誤訊息由產生 AWS Service Catalog,這是可協助在 AWS Control Tower 中佈建帳戶的整合服務。

常見原因:

  • 您可能會以 root 身份登入。當您以 root 使用者身分登入時,AWS Control Tower 不支援建立帳戶。

  • 您的 IAM 身分中心使用者尚未新增至適當的權限群組。您可能需要將您的 IAM Identity Center 使用者新增至下列其中一個權限群組:AWSAccountFactory(用於使用者存取) 或 AWSServiceCatalogAdmins(用於管理員存取權)。

  • 如果您以 IAM 使用者身分驗證,則必須將其新增至 AWS Service Catalog 產品組合,以使其具有正確的許可。

  • 如果您擁有正確的許可,但偵測到 AWS Control Tower 漂移,並且需要進行漂移修復,也會發生此問題。若要修復大多數類型的漂移,請在「著陸區設定」頁面上選擇「設」

收到權限不足錯誤

您的帳戶可能沒有執行某些工作的必要權限 AWS Organizations。如果遇到以下類型的錯誤,請檢查所有許可區域 (例如 IAM 或 IAM Identity Center 許可),以確保不會從這些位置拒絕您的許可:

You have insufficient permissions to perform AWS Organizations API actions.

如果您認為自己的工作需要您嘗試採取的動作,而且找不到任何相關限制,請聯絡您的系統管理員或 Sup AWS port 部門。

Detective 控制項未對帳戶生效

如果您最近已將 AWS Control Tower 部署擴展到新 AWS 區域,則新套用的偵探控制不會對您在任何區域建立的新帳戶生效,直到更新 AWS Control Tower 管理的 OU 中的個別帳戶為止。現有帳戶上的現有偵測控制仍然有效。

如果您嘗試在更新帳戶之前啟用偵測控制項,您可能會看到類似下列錯誤訊息:

AWS Control Tower can't enable the selected control on this OU. AWS Control Tower cannot apply the control on the OU ou-xxx-xxxxxxxx, because child accounts have dependencies that are missing. Update all child accounts under the OU, then try again.

要採取的動作:更新帳戶。

若要從 AWS Control Tower 主控台更新帳戶,請參閱何時更新 AWS Control Tower OU 和帳戶

若要以程式設計方式更新多個個別帳戶,您可以使用來自 AWS Service Catalog 和 AWS CLI 的 API 來自動執行更新。如需如何處理更新程序的詳細資訊,請參閱此影片演練。 您可以將 UpdateProvisionedProductAPI 替換為視頻中顯示的 ProvisionProductAPI。

如果您在帳戶上啟用偵探控制時遇到進一步的困難,請聯絡 Sup AWS port 部門。

AWS Organizations API 傳回的速率超過錯誤

可能的原因

當 AWS Control Tower 執行每日掃描時,您的工作負載正在執行,以檢查您的 SCP 是否已漂移。

要遵循的步驟

如果遇到 API 節流或rate exceeded錯誤,請嘗試以下步驟:

  • 在不同的時間執行您的工作負載。(請參閱 AWS Control Tower SCP 不變動掃描排程 (依區域),瞭解 AWS Control Tower 何時執行稽核掃描。)

  • 如果您直接透過 HTTP 呼叫 API:請使用 AWS SDK,該 SDK 會自動重試失敗的動作

  • 透過 Service Quotas 與 Sup AWS port 要求提高限制

您可以在這裡找到 Elastic Beanstalk 中 API 節流的疑難排解說明的範例:https://aws.amazon.com/premiumsupport/knowledge-center/elastic-beanstalk-api-throttling-errors/

無法將 Account Factory 帳戶直接從一個 AWS Control Tower landing zone 移至另一個 AWS Control Tower landing zone

警告

此做法不符合符合資格帳戶註冊的先決條件,因為符合資格的帳戶必須屬於同一整個 AWS 組織,而且每個組織只能有一個 landing zone。如果您嘗試執行此動作,並且發現自己收到多個錯誤訊息,以下是一些可能會有所幫助的資訊。

若要將透過 Account Factory 佈建的帳戶移到另一個由 AWS Control Tower 管理的 landing zone,您必須從原始 OU 中移除所有 IAM 角色以及與該帳戶相關聯的堆疊。從部署帳號的每個區域移除這些資源。

注意

移除資源的最佳方法是在嘗試移動帳戶之前,先取消佈建原始 OU 中的帳戶。

如果您不移除資源,新 OU 的註冊將會失敗,有點驚人。您可能會遇到一或多個錯誤訊息,而且您會繼續收到類似的錯誤訊息,直到從部署帳戶的每個區域移除剩餘的角色和堆疊為止。

每次收到錯誤訊息時,您都必須從新的 OU 移除帳號、刪除錯誤訊息主旨的舊資源,然後嘗試將帳號移回新的 OU。對於部署帳號的每個區域 (可能是 10 或 20 次),每個剩餘資源都 removing-and-deleting 必須重複此程序。發生這些重複錯誤的原因是帳戶已佈建到具有 SCP 防止 IAM 角色刪除的 OU 中。您可以在重試之前刪除帳號的所有資源,以縮短復原程序。

以下範例說明如果仍保留未刪除的角色和堆疊,您可能會收到的失敗訊息類型。只要保留舊資源,每次嘗試註冊帳戶時,您很可能會一次看到其中一個訊息。

範例中已修改資源 ID 字串的值。在您可能收到的錯誤消息中,它們的值不會相同。您可能會看到類似下列範例的訊息:

  • AWS Control Tower cannot create the IAM role aws-controltower-AdministratorExecutionRole because the role already exists. To continue, delete the existing IAM role and try again.

  • AWS Control Tower cannot create the IAM role aws-controltower-ConfigRecorderRole because the role already exists. To continue, delete the existing IAM role and try again.

  • AWS Control Tower cannot create the IAM role aws-controltower-ForwardSnsNotificationRole because the role already exists. To continue, delete the existing IAM role and try again.

或者,您可能會看到有關堆疊集失敗的錯誤訊息,類似於以下內容:

  "Error\":\"StackSetFailState\", \"Cause\":\"StackSetOperation on AWSControlTowerBP-BASELINE-CLOUDWATCH with id 8aXXXXf5-e0XX-4XXa-bc4XX-dXXXXXee31 has reached SUCCEEDED state but has 1 NON-CURRENT stack instances; here is the summary :{ StackSet Id: AWSControlTowerBP-BASELINE-CLOUDWATCH:40XXXbf2-Xead-46a1-XXXa-eXXXXecb2ee2, Stack instance Id: arn:aws:cloudformation:eu-west-1:1X23456789XX: stack/StackSet-AWSControlTowerBP-BASELINE-CLOUDWATCH-4feXXXXXX-ecXX-XXc6-bXXX-4ae678/4feXXXXXX-ecX-4ae123458, Status: OUTDATED, Status Reason: ResourceLogicalId:ForwardSnsNotification, ResourceType:AWS::Lambda::Function, ResourceStatusReason:aws-controltower-NotificationForwarder already exists in stack arn:aws:cloudformation:eu-west-1:1X23456789XX: stack/StackSet-AWSControlTowerBP-BASELINE-CLOUDWATCH-4feXXXXXX-ecXX-XXc6-bXXX-4ae678/4feXXXXXX-ecX-4ae123458.

從第一個 OU 移除所有剩餘的資源之後,您就可以成功邀請、佈建或註冊帳戶到新的 OU。

AWS Support

如果您想要將現有的成員帳戶移至不同的支援方案,您可以使用根帳戶登入資料登入每個帳戶、比較方案以及設定您偏好的支援層級。

我們建議您在變更支援方案時,更新 MFA 和帳戶安全聯絡人。