

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

# 發行 RunBooks
<a name="res-troubleshooting-issue-runbooks"></a>

下一節包含可能發生的問題、如何偵測問題，以及如何解決問題的建議。
+ [安裝問題](#installation-issues)
  + [CloudFormation堆疊無法建立 ，並顯示訊息「WaitCondition 收到失敗的訊息。Error：States.TaskFailed"](#cf-stack-fails)
  + [CloudFormation堆疊建立成功後未收到電子郵件通知](#email-invitation-not-received)
  + [執行個體循環或處於失敗狀態的 vdc-controller](#instances-cycling)
  + [由於相依物件錯誤，環境 CloudFormation 堆疊無法刪除](#object-error)
  + [環境建立期間 CIDR 區塊參數發生錯誤](#cidr-block-error)
  + [環境建立期間的 CloudFormation 堆疊建立失敗](#cf-stack-creation-fails)
  + [使用 AdDomainAdminNode CREATE\_FAILED 建立外部資源 （示範） 堆疊失敗](#demo-environment-stack-fails)
+ [身分管理問題](#troubleshooting-identity-management)
  + [我未獲得執行 iam:PassRole 的授權](#res-troubleshooting-issue-runbooks-unauth-passrole)
  + [我想要允許AWS帳戶外的人員存取我的 Research and Engineering Studio on AWS資源](#res-troubleshooting-issue-runbooks-outside-acct)
  + [登入環境時，我立即返回登入頁面](#return-to-login)
  + [嘗試登入時發生「找不到使用者」錯誤](#user-not-found)
  + [在 Active Directory 中新增但 RES 中遺失的使用者](#user-missing)
  + [建立工作階段時無法使用使用者](#session-user-unavailable)
  + [CloudWatch cluster-manager 日誌中超出大小限制的錯誤](#sizelimit-exceeded-error)
+ [儲存](#res-troubleshooting-storage)
  + [我透過 RES 建立檔案系統，但未掛載在 VDI 主機上](#res-troubleshooting-storage-created)
  + [我透過 RES 加入檔案系統，但未掛載在 VDI 主機上](#res-troubleshooting-storage-onboarded)
  + [我無法從 VDI 主機讀取/寫入](#res-troubleshooting-storage-rw)
    + [處理使用案例的許可範例](#res-troubleshooting-storage-rw-example)
  + [我從 RES 建立 Amazon FSx for NetApp ONTAP，但未加入我的網域](#res-troubleshooting-storage-join)
+ [快照](#res-troubleshooting-snapshots)
  + [快照的狀態為失敗](#res-troubleshooting-snapshots-failed)
  + [快照無法套用至表示無法匯入資料表的日誌。](#res-troubleshooting-snapshots-not-imported)
+ [基礎設施](#res-troubleshooting-infrastructure)
  + [沒有運作狀態良好執行個體的負載平衡器目標群組](#res-troubleshooting-infrastructure-load-balancer)
+ [啟動虛擬桌面](#res-troubleshooting-virtual-desktops)
  + [Windows Virtual Desktop 的登入帳戶設定為管理員](#res-troubleshooting-virtual-desktops-windows-admin)
  + [使用外部資源 CertificateRenewalNode 時，憑證過期](#res-troubleshooting-virtual-desktops-certificate-expires)
  + [先前運作中的虛擬桌面無法再成功連線](#res-troubleshooting-virtual-desktops-was-working)
  + [我只能啟動 5 個虛擬桌面](#res-troubleshooting-virtual-desktops-only-five)
  + [桌面 Windows 連線嘗試失敗，並顯示「連線已關閉。傳輸錯誤"](#res-troubleshooting-virtual-desktops-transport-error)
  + [VDIs卡在佈建狀態](#res-troubleshooting-virtual-desktops-stuck-prov)
  + [啟動後，VDIs會進入錯誤狀態](#res-troubleshooting-virtual-desktops-error-after)
  + [登入後，VDI 工作階段會進入空白畫面](#res-troubleshooting-virtual-desktops-vdi-blank-screen)
+ [虛擬桌面元件](#res-troubleshooting-vd-component)
  + [Amazon EC2 執行個體在主控台中重複顯示已終止](#res-troubleshooting-vd-component-ec2-terminated)
  + [由於無法加入 AD/eVDI 模組，vdc-controller 執行個體正在循環，顯示 API 運作狀態檢查失敗](#res-troubleshooting-vd-component-cycling)
  + [編輯軟體堆疊以新增專案時，專案不會出現在下拉式清單中](#res-troubleshooting-vd-component-not-in-pulldown)
  + [cluster-manager Amazon CloudWatch 日誌顯示「<user-home-init> 帳戶尚無法使用。正在等待使用者同步」（其中帳戶是使用者名稱）](#res-troubleshooting-vd-component-acct-unavailable)
  + [Windows 桌面登入嘗試時顯示「您的帳戶已停用。請洽詢您的管理員"](#res-troubleshooting-vd-component-acct-disabled)
  + [外部/客戶 AD 組態的 DHCP 選項問題](#res-troubleshooting-vd-component-dhcp)
  + [Firefox 錯誤 MOZILLA\_PKIX\_ERROR\_REQUIRED\_TLS\_FEATURE\_MISSING](#res-troubleshooting-vd-firefox)
+ [Env 刪除](#res-troubleshooting-env-deletion)
  + [res-xxx-cluster 堆疊處於「DELETE\_FAILED」狀態，且無法手動刪除，因為「角色無效或無法擔任」錯誤](#res-troubleshooting-env-deletion-role-invalid)
  + [收集日誌](#res-troubleshooting-env-deletion-collect-logs)
  + [下載 VDI 日誌](#res-troubleshooting-env-deletion-download-logs)
  + [從 Linux EC2 執行個體下載日誌](#res-troubleshooting-env-deletion-linux-ec2-logs)
  + [從 Windows EC2 執行個體下載日誌](#res-troubleshooting-env-deletion-windows-ec2-logs)
  + [收集 WaitCondition 錯誤的 ECS 日誌](#res-troubleshooting-env-deletion-waitcondition)
  + [網路界面刪除失敗](#res-troubleshooting-env-deletion-eni-failure)
+ [示範環境](#res-troubleshooting-demo-env)
  + [處理身分提供者的身分驗證請求時發生示範環境登入錯誤](#demo-environment-login-error)
  + [示範堆疊 keycloak 無法運作](#demo-environment-stack-keycloak)
+ [Active Directory 問題](#active-directory-issues)
  + [我的 VDI 長時間卡在佈建狀態，或在 VDI 就緒後，我無法以 AD 使用者身分登入我的 VDI](#active-directory-issues-vdi-stuck)
  + [設定 SSO 後，我無法登入 RES Web 入口網站](#active-directory-issues-res-web-portal)
  + [即使成功啟動 Linux VDIs，AD 使用者也無法使用檔案瀏覽器存取主目錄](#active-directory-issues-home-directory-access)
  + [啟用 SSH 存取後，AD 管理員使用者無法存取堡壘主機](#active-directory-issues-bastion-host-access)
  + [檢視和管理 RES 外部資源堆疊部署的 Active Directory](#active-directory-issues-external-resource-stack)

## 安裝問題
<a name="installation-issues"></a>

**Topics**
+ [CloudFormation堆疊無法建立 ，並顯示訊息「WaitCondition 收到失敗的訊息。Error：States.TaskFailed"](#cf-stack-fails)
+ [CloudFormation堆疊建立成功後未收到電子郵件通知](#email-invitation-not-received)
+ [執行個體循環或處於失敗狀態的 vdc-controller](#instances-cycling)
+ [由於相依物件錯誤，環境 CloudFormation 堆疊無法刪除](#object-error)
+ [環境建立期間 CIDR 區塊參數發生錯誤](#cidr-block-error)
+ [環境建立期間的 CloudFormation 堆疊建立失敗](#cf-stack-creation-fails)
+ [使用 AdDomainAdminNode CREATE\_FAILED 建立外部資源 （示範） 堆疊失敗](#demo-environment-stack-fails)

........................

### CloudFormation堆疊無法建立 ，並顯示訊息「WaitCondition 收到失敗的訊息。Error：States.TaskFailed"
<a name="cf-stack-fails"></a>

若要識別問題，請檢查名為 的 Amazon CloudWatch 日誌群組`<stack-name>-InstallerTasksCreateTaskDefCreateContainerLogGroup<nonce>-<nonce>`。如果有多個具有相同名稱的日誌群組，請檢查第一個可用的日誌群組。日誌中的錯誤訊息將提供有關問題的詳細資訊。

**注意**  
確認參數值沒有空格。

........................

### CloudFormation堆疊建立成功後未收到電子郵件通知
<a name="email-invitation-not-received"></a>

如果在成功建立CloudFormation堆疊之後未收到電子郵件邀請，請確認下列事項：

1. 確認電子郵件地址參數輸入正確。

   如果電子郵件地址不正確或無法存取，請刪除並重新部署 Research and Engineering Studio 環境。

1. 檢查 Amazon EC2 主控台是否有循環執行個體的證據。

   如果 Amazon EC2 執行個體的`<envname>`字首顯示為已終止，然後以新的執行個體取代，則網路或 Active Directory 組態可能會出現問題。

1. 如果您已部署AWS高效能運算配方來建立外部資源，請確認堆疊已建立 VPC、私有和公有子網路，以及其他選取的參數。

   如果任何參數不正確，您可能需要刪除並重新部署 RES 環境。如需詳細資訊，請參閱[解除安裝產品](uninstall-the-product.md)。

1. 如果您使用自己的外部資源部署產品，請確認聯網和 Active Directory 符合預期的組態。

   確認基礎設施執行個體成功加入 Active Directory 至關重要。請嘗試 中的步驟[執行個體循環或處於失敗狀態的 vdc-controller](#instances-cycling)來解決問題。

........................

### 執行個體循環或處於失敗狀態的 vdc-controller
<a name="instances-cycling"></a>

此問題最可能的原因是資源無法連線或加入 Active Directory (Active Directory)。

**若要驗證問題：**

1. 從命令列，在 vdc-controller 的執行中執行個體上使用 SSM 啟動工作階段。

1. 執行 `sudo su -`。

1. 執行 `systemctl status sssd`。

如果狀態為非作用中、失敗或您在日誌中看到錯誤，則執行個體無法加入 Active Directory。

![SSM 錯誤日誌](https://docs.aws.amazon.com/zh_tw/res/latest/ug/images/instancecyclingssmerrors.png)


**若要解決問題：**
+ 從相同的命令列執行個體執行 `cat /root/bootstrap/logs/userdata.log` 以調查日誌。

此問題可能有三種可能的根本原因之一。

#### 根本原因 1：輸入的 ldap 連線詳細資訊不正確
<a name="w2aac27c13b7c11c15b1"></a>

檢閱日誌。如果您看到下列重複多次，則執行個體無法加入 Active Directory。

```
+ local AD_AUTHORIZATION_ENTRY=
+ [[ -z '' ]]
+ [[ 0 -le 180 ]]
+ local SLEEP_TIME=34
+ log_info '(0 of 180) waiting for AD authorization, retrying in 34 seconds ...'
++ date '+%Y-%m-%d %H:%M:%S,%3N'
+ echo '[2024-01-16 22:02:19,802] [INFO] (0 of 180) waiting for AD authorization, retrying in 34 seconds ...'
[2024-01-16 22:02:19,802] [INFO] (0 of 180) waiting for AD authorization, retrying in 34 seconds ...
+ sleep 34
+ (( ATTEMPT_COUNT++ ))
```

1. 確認 RES 堆疊建立期間已正確輸入下列項目的參數值。
   + directoryservice.ldap\_connection\_uri
   + directoryservice.ldap\_base
   + directoryservice.users.ou
   + directoryservice.groups.ou
   + directoryservice.sudoers.ou
   + directoryservice. computers.ou
   + directoryservice.name

1. 更新 DynamoDB 資料表中的任何不正確值。資料表可在 DynamoDB 主控台的**資料表**下找到。資料表名稱應為 `{{<stack name>}}.cluster-settings`。

1. 更新資料表後，請刪除目前執行環境執行個體的 cluster-manager 和 vdc-controller。自動擴展將使用來自 DynamoDB 資料表的最新值啟動新執行個體。

#### 根本原因 2：輸入的 ServiceAccount 使用者名稱不正確
<a name="w2aac27c13b7c11c15b3"></a>

如果日誌傳回 `Insufficient permissions to modify computer account`，則在堆疊建立期間輸入的 ServiceAccount 名稱可能不正確。

1. 從AWS主控台開啟 Secrets Manager。

1. 搜尋 `directoryserviceServiceAccountUsername`。秘密應為 `{{<stack name>}}-directoryservice-ServiceAccountUsername`。

1. 開啟秘密以檢視詳細資訊頁面。在**秘密值**下，選擇**擷取秘密值**，然後選擇**純文字**。

1. 如果該值已更新，請刪除目前執行環境的 cluster-manager 和 vdc-controller 執行個體。自動擴展將使用 Secrets Manager 的最新值啟動新執行個體。

#### 根本原因 3：輸入的 ServiceAccount 密碼不正確
<a name="w2aac27c13b7c11c15b5"></a>

如果日誌顯示 `Invalid credentials`，則在堆疊建立期間輸入的 ServiceAccount 密碼可能不正確。

1. 從AWS主控台開啟 Secrets Manager。

1. 搜尋 `directoryserviceServiceAccountPassword`。秘密應為 `{{<stack name>}}-directoryservice-ServiceAccountPassword`。

1. 開啟秘密以檢視詳細資訊頁面。在**秘密值**下，選擇**擷取秘密值**，然後選擇**純文字**。

1. 如果您忘記密碼，或不確定輸入的密碼是否正確，您可以在 Active Directory 和 Secrets Manager 中重設密碼。

   1. 若要在 中重設密碼AWS Managed Microsoft AD：

      1. 開啟 AWS主控台並前往 Directory Service。

      1. 選取 RES 目錄的目錄 **ID**，然後選擇**動作**。

      1. 選取**重設使用者密碼**。

      1. 輸入 ServiceAccount 使用者名稱。

      1. 輸入新密碼，然後選擇**重設密碼**。

   1. 若要在 Secrets Manager 中重設密碼：

      1. 開啟AWS主控台並前往 Secrets Manager。

      1. 搜尋 `directoryserviceServiceAccountPassword`。秘密應為 `{{<stack name>}}-directoryservice-ServiceAccountPassword`。

      1. 開啟秘密以檢視詳細資訊頁面。在**秘密值**下，選擇**擷取秘密值**，然後選擇**純文字**。

      1. 選擇**編輯**。

      1. 為 ServiceAccount 使用者設定新密碼，然後選擇**儲存**。

1. 如果您更新了 值，請刪除目前執行環境的 cluster-manager 和 vdc-controller 執行個體。自動擴展將使用最新的值啟動新的執行個體。

........................

### 由於相依物件錯誤，環境 CloudFormation 堆疊無法刪除
<a name="object-error"></a>

 如果 `{{<env-name>}}-vdc` CloudFormation 堆疊的刪除因相依物件錯誤而失敗，例如 `vdcdcvhostsecuritygroup`，這可能是因為使用主控台在 RES 建立的子網路或安全群組中啟動的 Amazon EC2 AWS執行個體所致。

若要解決問題，請尋找並終止以這種方式啟動的所有 Amazon EC2 執行個體。然後，您可以繼續刪除環境。

........................

### 環境建立期間 CIDR 區塊參數發生錯誤
<a name="cidr-block-error"></a>

建立環境時，回應狀態為 【FAILED】 的 CIDR 區塊參數會出現錯誤。

錯誤範例：

```
Failed to update cluster prefix list: 
        An error occurred (InvalidParameterValue) when calling the ModifyManagedPrefixList operation: 
        The specified CIDR (52.94.133.132/24) is not valid. For example, specify a CIDR in the following form: 10.0.0.0/16.
```

若要解決問題，預期的格式為 x.x.x.0/24 或 x.x.x.0/32。

........................

### 環境建立期間的 CloudFormation 堆疊建立失敗
<a name="cf-stack-creation-fails"></a>

建立環境涉及一系列的資源建立操作。在某些區域中，可能會發生容量問題，導致 CloudFormation 堆疊建立失敗。

如果發生這種情況，請刪除環境並重試建立。或者，您可以在不同的區域中重試建立。

........................

### 使用 AdDomainAdminNode CREATE\_FAILED 建立外部資源 （示範） 堆疊失敗
<a name="demo-environment-stack-fails"></a>

如果示範環境堆疊建立失敗並出現下列錯誤，可能是因為執行個體啟動後佈建期間意外發生 Amazon EC2 修補。

```
AdDomainAdminNode CREATE_FAILED  Failed to receive 1 resource signal(s) within the specified duration
```

**若要判斷失敗的原因：**

1. 在 SSM 狀態管理員中，檢查是否已設定修補，以及是否已針對所有執行個體設定修補。

1. 在 SSM RunCommand/Automation 執行歷史記錄中，檢查修補相關 SSM 文件的執行是否與執行個體啟動一致。

1. 在環境 Amazon EC2 執行個體的日誌檔案中，檢閱本機執行個體日誌，以判斷執行個體是否在佈建期間重新啟動。

如果問題是由修補造成，請在啟動後至少 15 分鐘延遲 RES 執行個體的修補。

........................

## 身分管理問題
<a name="troubleshooting-identity-management"></a>

單一登入 (SSO) 和身分管理的大多數問題都是因為組態錯誤而發生。如需設定 SSO 組態的資訊，請參閱：
+ [使用 IAM Identity Center 設定單一登入 (SSO)](sso-idc.md) 
+ [為單一登入 (SSO) 設定您的身分提供者](configure-id-federation.md) 

若要疑難排解與身分管理相關的其他問題，請參閱下列疑難排解主題：

**Topics**
+ [我未獲得執行 iam:PassRole 的授權](#res-troubleshooting-issue-runbooks-unauth-passrole)
+ [我想要允許AWS帳戶外的人員存取我的 Research and Engineering Studio on AWS資源](#res-troubleshooting-issue-runbooks-outside-acct)
+ [登入環境時，我立即返回登入頁面](#return-to-login)
+ [嘗試登入時發生「找不到使用者」錯誤](#user-not-found)
+ [在 Active Directory 中新增但 RES 中遺失的使用者](#user-missing)
+ [建立工作階段時無法使用使用者](#session-user-unavailable)
+ [CloudWatch cluster-manager 日誌中超出大小限制的錯誤](#sizelimit-exceeded-error)

........................

### 我未獲得執行 iam:PassRole 的授權
<a name="res-troubleshooting-issue-runbooks-unauth-passrole"></a>

如果您收到錯誤，告知您無權執行 iam：PassRole 動作，您的政策必須更新，以允許您將角色傳遞給 RES。

有些AWS服務可讓您將現有角色傳遞給該服務，而不是建立新的服務角色或服務連結角色。如需執行此作業，您必須擁有將角色傳遞至該服務的許可。

當名為 marymajor 的 IAM 使用者嘗試使用主控台在 RES 中執行動作時，會發生下列範例錯誤。但是，動作請求服務具備服務角色授予的許可。Mary 沒有將角色傳遞給服務的許可。

```
User: arn:aws:iam::123456789012:user/marymajor is not authorized to perform: iam:PassRole
```

在這種情況下，Mary 的政策必須更新，以允許她執行 iam：PassRole 動作。如果您需要協助，請聯絡您的AWS管理員。您的管理員提供您的簽署憑證。

........................

### 我想要允許AWS帳戶外的人員存取我的 Research and Engineering Studio on AWS資源
<a name="res-troubleshooting-issue-runbooks-outside-acct"></a>

您可以建立一個角色，讓其他帳戶中的使用者或您組織外部的人員存取您的資源。您可以指定要允許哪些信任物件取得該角色。針對支援基於資源的政策或存取控制清單 (ACL) 的服務，您可以使用那些政策來授予人員存取您的資源的許可。

如需進一步了解，請參閱以下內容：
+ 若要了解如何在您擁有AWS的帳戶中提供資源的存取權，請參閱《[IAM 使用者指南》中的為您擁有的另一個AWS帳戶中的 IAM 使用者提供存取權](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_common-scenarios_aws-accounts.html)。 **
+ 若要了解如何將資源的存取權提供給第三方AWS帳戶，請參閱《*IAM 使用者指南*》中的[將存取權提供給第三方擁有AWS的帳戶](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_common-scenarios_third-party.html)。
+ 若要了解如何透過聯合身分提供存取權，請參閱《*IAM 使用者指南*》中的[提供存取權給外部驗證的使用者 （聯合身分）](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_common-scenarios_federated-users.html)。
+ 若要了解使用角色和資源型政策進行跨帳戶存取之間的差異，請參閱《[IAM 使用者指南》中的 IAM 角色與資源型政策的差異](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_compare-resource-policies.html)。 **

........................

### 登入環境時，我立即返回登入頁面
<a name="return-to-login"></a>

當您的 SSO 整合設定錯誤時，就會發生此問題。若要判斷問題，請檢查控制器執行個體日誌並檢閱組態設定是否有錯誤。

**若要檢查日誌：**

1. 開啟 [CloudWatch 主控台](https://console.aws.amazon.com/cloudwatch)。

1.  從**日誌群組**中，尋找名為 的群組`/{{<environment-name>}}/cluster-manager`。

1. 開啟日誌群組以搜尋日誌串流中的任何錯誤。

**若要檢查組態設定：**

1. 開啟 [DynamoDB 主控台](https://console.aws.amazon.com/dynamodb)

1. 從**資料表**中，尋找名為 的資料表`{{<environment-name>}}.cluster-settings`。

1.  開啟資料表，然後選擇**探索資料表項目**。

1. 展開篩選條件區段，然後輸入下列變數：
   + **屬性名稱** – 索引鍵
   + **條件** – 包含
   + **值** – sso

1. 選擇**執行**。

1. 在傳回的字串中，驗證 SSO 組態值是否正確。如果不正確，請將 sso\_enabled 金鑰的值變更為 **False**。  
![DynamoDB 主控台具有 sso_enabled 金鑰值的編輯項目畫面。](https://docs.aws.amazon.com/zh_tw/res/latest/ug/images/res-editssoenabledkeyvalue.png)

1. 返回 RES 使用者介面以重新設定 SSO。

........................

### 嘗試登入時發生「找不到使用者」錯誤
<a name="user-not-found"></a>

如果使用者嘗試登入 RES 界面時收到錯誤「找不到使用者」，且使用者出現在 Active Directory 中：
+ 

**如果使用者不存在於 RES 中，且您最近將使用者新增至 AD**
  + 使用者可能尚未同步到 RES。RES 每小時同步一次，因此您可能需要等待，並檢查使用者是否在下次同步後新增。若要立即同步，請遵循中的步驟[在 Active Directory 中新增但 RES 中遺失的使用者](#user-missing)。
+ 

**如果使用者存在於 RES 中：**

  1. 確定屬性映射已正確設定。如需詳細資訊，請參閱[為單一登入 (SSO) 設定您的身分提供者](configure-id-federation.md)。

  1. 確保 SAML 主旨和 SAML 電子郵件都對應到使用者的電子郵件地址。

........................

### 在 Active Directory 中新增但 RES 中遺失的使用者
<a name="user-missing"></a>

**注意**  
本節適用於 RES 2024.10 及更早版本。如需 RES 2024.12 及更新版本，請參閱 [如何手動執行同步 (2024.12 和 2024.12.01 版）](active-directory-sync.md#active-directory-sync-manually)。如需 RES 2025.03 及更新版本，請參閱 [如何手動啟動或停止同步 (2025.03 及更新版本）](active-directory-sync.md#active-directory-sync-start-stop)。

如果您已將使用者新增至 Active Directory，但在 RES 中缺少使用者，則需要觸發 AD 同步。AD 同步是由將 AD 項目匯入 RES 環境的 Lambda 函數每小時執行。有時候，在您新增使用者或群組之後，會延遲到下一個同步程序執行為止。您可以從 Amazon Simple Queue Service 手動啟動同步。

**手動啟動同步程序：**

1. 開啟 [Amazon SQS 主控台](https://console.aws.amazon.com/sqs)。

1. 從**佇列**中，選取 `<environment-name>-cluster-manager-tasks.fifo`。

1. 選擇**傳送及接收訊息**。

1.  在**訊息內文**中，輸入：

   **{ "name": "adsync.sync-from-ad", "payload": {} }**

1.  針對**訊息群組 ID**，輸入： **adsync.sync-from-ad**

1.  針對**訊息重複資料刪除 ID**，輸入隨機的英數字元字串。此項目必須與前五分鐘內發出的所有呼叫不同，否則請求將被忽略。

........................

### 建立工作階段時無法使用使用者
<a name="session-user-unavailable"></a>

如果您是建立工作階段的管理員，但發現在建立工作階段時無法使用 Active Directory 中的使用者，則使用者可能需要第一次登入。只能為作用中使用者建立工作階段。作用中使用者必須至少登入環境一次。

........................

### CloudWatch cluster-manager 日誌中超出大小限制的錯誤
<a name="sizelimit-exceeded-error"></a>

```
2023-10-31T18:03:12.942-07:00 ldap.SIZELIMIT_EXCEEDED: {'msgtype': 100, 'msgid': 11, 'result': 4, 'desc': 'Size limit exceeded', 'ctrls': []}
```

如果您在 CloudWatch cluster-manager 日誌中收到此錯誤，ldap 搜尋可能已傳回太多使用者記錄。若要修正此問題，請提高 IDP 的 ldap 搜尋結果限制。

........................

## 儲存
<a name="res-troubleshooting-storage"></a>

**Topics**
+ [我透過 RES 建立檔案系統，但未掛載在 VDI 主機上](#res-troubleshooting-storage-created)
+ [我透過 RES 加入檔案系統，但未掛載在 VDI 主機上](#res-troubleshooting-storage-onboarded)
+ [我無法從 VDI 主機讀取/寫入](#res-troubleshooting-storage-rw)
+ [我從 RES 建立 Amazon FSx for NetApp ONTAP，但未加入我的網域](#res-troubleshooting-storage-join)

........................

### 我透過 RES 建立檔案系統，但未掛載在 VDI 主機上
<a name="res-troubleshooting-storage-created"></a>

檔案系統必須處於「可用」狀態，才能由 VDI 主機掛載。請依照下列步驟驗證檔案系統是否處於必要狀態。

Amazon EFS

1. 前往 [ Amazon EFS 主控台](https://console.aws.amazon.com/efs/home#/file-systems)。

1. 檢查檔案系統狀態是否**可用**。

1. 如果檔案系統狀態不可用****，請等待 再啟動 VDI 主機。

Amazon FSx ONTAP

1. 前往 [ Amazon FSx 主控台](https://console.aws.amazon.com/fsx/home#file-systems)。

1. 檢查**狀態**是否**可用**。

1. 如果**狀態**不可用****，請等待 再啟動 VDI 主機。

........................

### 我透過 RES 加入檔案系統，但未掛載在 VDI 主機上
<a name="res-troubleshooting-storage-onboarded"></a>

在 RES 上加入的檔案系統應設定必要的安全群組規則，以允許 VDI 主機掛載檔案系統。由於這些檔案系統是在 RES 外部建立，RES 不會管理相關聯的安全群組規則。

與加入的檔案系統相關聯的安全群組應允許下列傳入流量：
+ 來自 linux VDC 主機的 NFS 流量 （連接埠：2049)
+ 來自 Windows VDC 主機的 SMB 流量 （連接埠：445)

........................

### 我無法從 VDI 主機讀取/寫入
<a name="res-troubleshooting-storage-rw"></a>

ONTAP 支援磁碟區的 UNIX、NTFS 和 MIXED 安全樣式。安全樣式決定 ONTAP 用於控制資料存取的許可類型，以及哪些用戶端類型可以修改這些許可。

例如，如果磁碟區使用 UNIX 安全樣式，由於 ONTAP 的多協定性質，SMB 用戶端仍然可以存取資料 （前提是他們已正確驗證和授權）。不過，ONTAP 使用 UNIX 許可，只有 UNIX 用戶端可以使用原生工具修改。

#### 處理使用案例的許可範例
<a name="res-troubleshooting-storage-rw-example"></a>

**搭配 Linux 工作負載使用 UNIX 樣式磁碟區**

sudoer 可以為其他使用者設定許可。例如，以下會授予`/<project-name>`目錄上所有`<group-ID>`完整讀取/寫入許可的成員：

```
sudo chown root:{{<group-ID>}} /{{<project-name>}}
sudo chmod 770 /{{<project-name>}}
```

**搭配 Linux 和 Windows 工作負載使用 NTFS 樣式磁碟區**

您可以使用特定資料夾的共用屬性來設定共用許可。例如，指定使用者`user_01`和資料夾 `myfolder`，您可以將 `Full Control`、 `Change`或 的許可設定為 `Read``Allow`或 `Deny`：

![共用許可可以設定為允許或拒絕完整控制、變更或讀取](https://docs.aws.amazon.com/zh_tw/res/latest/ug/images/res-permissions-for-documents-dialog.png)


如果 Linux 和 Windows 用戶端都會使用磁碟區，我們需要在 SVM 上設定名稱映射，該映射會將任何 Linux 使用者名稱與相同的使用者名稱與 domain\\username 的 NetBIOS 網域名稱格式建立關聯。這在 Linux 和 Windows 使用者之間進行翻譯時需要用到。如需參考，請參閱[使用 Amazon FSx for NetApp ONTAP 啟用多協定工作負載](https://aws.amazon.com/blogs/storage/enabling-multiprotocol-workloads-with-amazon-fsx-for-netapp-ontap/)。

........................

### 我從 RES 建立 Amazon FSx for NetApp ONTAP，但未加入我的網域
<a name="res-troubleshooting-storage-join"></a>

目前，當您從 RES 主控台建立 Amazon FSx for NetApp ONTAP 時，系統會佈建檔案系統，但不會加入網域。若要將建立的 ONTAP 檔案系統 SVM 加入您的網域，請參閱[將 SVMs 加入 Microsoft Active Directory](https://docs.aws.amazon.com/fsx/latest/ONTAPGuide/self-managed-AD-join.html) 並遵循 [ Amazon FSx 主控台](https://console.aws.amazon.com/fsx/home#file-systems)上的步驟。確定必要的[許可委派給 AD 中的 Amazon FSx Service 帳戶](https://docs.aws.amazon.com/fsx/latest/ONTAPGuide/self-managed-AD-best-practices.html#connect_delegate_privileges)。一旦 SVM 成功加入網域，請前往 SVM **摘要 > 端點 > SMB DNS 名稱**，然後複製 DNS 名稱，因為稍後會需要它。

加入網域後，請在叢集設定 DynamoDB 資料表中編輯 SMB DNS 組態金鑰：

1. 前往 [ Amazon DynamoDB 主控台](https://console.aws.amazon.com/dynamodbv2/home)。

1. 選擇**資料表**，然後選擇 `<stack-name>-cluster-settings`。

1. 在**探索資料表項目**下，展開**篩選條件**，然後輸入下列篩選條件：
   + 屬性名稱 - 索引鍵 
   + 條件 - 等於 
   + 值 - `shared-storage.<file-system-name>.fsx_netapp_ontap.svm.smb_dns` 

1. 選取傳回的項目，然後選擇**動作**、**編輯項目**。

1. 使用您先前複製的 SMB DNS 名稱更新**值**。

1. 選擇**儲存與關閉**。

此外，請確保與檔案系統相關聯的安全群組允許 [Amazon VPC 檔案系統存取控制](https://docs.aws.amazon.com/fsx/latest/ONTAPGuide/limit-access-security-groups.html)中建議的流量。使用檔案系統的新 VDI 主機現在將能夠掛載加入 SVM 和檔案系統的網域。

或者，您可以使用 RES 加入檔案系統功能加入現有的檔案系統 - 從**環境管理**選擇**檔案系統**、**加入檔案系統**。

........................

## 快照
<a name="res-troubleshooting-snapshots"></a>

**Topics**
+ [快照的狀態為失敗](#res-troubleshooting-snapshots-failed)
+ [快照無法套用至表示無法匯入資料表的日誌。](#res-troubleshooting-snapshots-not-imported)

........................

### 快照的狀態為失敗
<a name="res-troubleshooting-snapshots-failed"></a>

在 RES 快照頁面上，如果快照的狀態為失敗，則可以前往叢集管理員的 Amazon CloudWatch 日誌群組來判斷錯誤發生的時間。

```
[2023-11-19 03:39:20,208] [INFO] [snapshots-service] creating snapshot in S3 Bucket:
  asdf at path s31
[2023-11-19 03:39:20,381] [ERROR] [snapshots-service] An error occurred while
  creating the snapshot: An error occurred (TableNotFoundException)
  when calling the UpdateContinuousBackups operation: 
  Table not found: res-demo.accounts.sequence-config
```

........................

### 快照無法套用至表示無法匯入資料表的日誌。
<a name="res-troubleshooting-snapshots-not-imported"></a>

如果從上一個 env 擷取的快照無法在新的 env 中套用，請查看叢集管理員的 CloudWatch 日誌以識別問題。如果問題提及未匯入必要的資料表雲端，請確認快照處於有效狀態。

1. 下載 metadata.json 檔案，並確認各種資料表的 ExportStatus 具有 COMPLETED 狀態。確保各種資料表都有 `ExportManifest` 欄位集。如果您找不到上述欄位集，快照會處於無效狀態，且無法與套用快照功能搭配使用。

1. 開始建立快照後，請確定快照狀態在 RES 中變為 COMPLETED。快照建立程序最多需要 5 到 10 分鐘。重新載入或重新瀏覽快照管理頁面，以確保快照已成功建立。這將確保建立的快照處於有效狀態。

........................

## 基礎設施
<a name="res-troubleshooting-infrastructure"></a>

**Topics**
+ [沒有運作狀態良好執行個體的負載平衡器目標群組](#res-troubleshooting-infrastructure-load-balancer)

........................

### 沒有運作狀態良好執行個體的負載平衡器目標群組
<a name="res-troubleshooting-infrastructure-load-balancer"></a>

如果 UI 中出現伺服器錯誤訊息等問題，或桌面工作階段無法連線，這可能表示基礎設施 Amazon EC2 執行個體發生問題。

判斷問題來源的方法，是先檢查 Amazon EC2 主控台是否有任何 Amazon EC2 執行個體重複終止，並以新執行個體取代。如果是這種情況，檢查 Amazon CloudWatch logs可能會決定原因。

另一種方法是檢查系統中的負載平衡器。如果 Amazon EC2 主控台上發現任何負載平衡器未顯示任何運作狀態良好的執行個體，則表示可能存在系統問題。

正常外觀的範例如下所示：

![ec2 負載平衡器儀表板](https://docs.aws.amazon.com/zh_tw/res/latest/ug/images/res-ec2-load-balancers.png)


如果運作狀態項目為 0，表示沒有 Amazon EC2 執行個體可用於處理請求。

如果運作狀態不佳的項目為非 0，表示 Amazon EC2 執行個體可能正在循環。這可能是因為已安裝的應用程式軟體未通過運作狀態檢查。

如果運作狀態良好和運作狀態不佳的項目都是 0，表示網路可能設定錯誤。例如，公有和私有子網路可能沒有對應的 AZs。如果發生這種情況，主控台上可能會有其他文字，指出網路狀態存在。

........................

## 啟動虛擬桌面
<a name="res-troubleshooting-virtual-desktops"></a>

**Topics**
+ [Windows Virtual Desktop 的登入帳戶設定為管理員](#res-troubleshooting-virtual-desktops-windows-admin)
+ [使用外部資源 CertificateRenewalNode 時，憑證過期](#res-troubleshooting-virtual-desktops-certificate-expires)
+ [先前運作中的虛擬桌面無法再成功連線](#res-troubleshooting-virtual-desktops-was-working)
+ [我只能啟動 5 個虛擬桌面](#res-troubleshooting-virtual-desktops-only-five)
+ [桌面 Windows 連線嘗試失敗，並顯示「連線已關閉。傳輸錯誤"](#res-troubleshooting-virtual-desktops-transport-error)
+ [VDIs卡在佈建狀態](#res-troubleshooting-virtual-desktops-stuck-prov)
+ [啟動後，VDIs會進入錯誤狀態](#res-troubleshooting-virtual-desktops-error-after)
+ [登入後，VDI 工作階段會進入空白畫面](#res-troubleshooting-virtual-desktops-vdi-blank-screen)

........................

### Windows Virtual Desktop 的登入帳戶設定為管理員
<a name="res-troubleshooting-virtual-desktops-windows-admin"></a>

如果您能夠在 RES Web 入口網站中啟動 Windows 虛擬桌面，但其登入帳戶在連線時設定為管理員，則您的 Windows VDI 可能尚未成功加入 Active Directory。

若要驗證，請從 Amazon EC2 主控台連線至 Windows 執行個體，並檢查 下的引導日誌`C:\Users\Administrator\RES\Bootstrap\virtual-desktop-host-windows\`。以 開頭的錯誤訊息`[Join AD] authorization failed:`表示執行個體無法加入 AD。如需失敗`/{{<res-environment-name>}}/cluster-manager`的詳細資訊，請參閱日誌群組名稱下的 CloudWatch 中的 Cluster Manager 日誌：
+ `Insufficient permissions to modify computer account`
  + 此錯誤表示您的服務帳戶沒有將電腦新增至 AD 的適當許可。檢查 [設定 Microsoft Active Directory 的服務帳戶](prerequisites.md#service-account-ms-ad)區段以取得服務帳戶所需的許可。
+ `Invalid Credentials`
  + 您在 AD 中的服務帳戶登入資料已過期，或您提供的登入資料不正確。若要檢查或更新您的服務帳戶登入資料，請存取在 [Secrets Manager 主控台中存放密碼的秘密](https://console.aws.amazon.com/secretsmanager/listsecrets)。請確定此秘密的 ARN 在 RES 環境**身分管理**頁面的 **Active Directory 網域**下的**服務帳戶登入資料秘密 ARN** 欄位中正確無誤。

........................

### 使用外部資源 CertificateRenewalNode 時，憑證過期
<a name="res-troubleshooting-virtual-desktops-certificate-expires"></a>

如果您部署了[外部資源配方](create-external-resources.md)，並在連線至 Linux VDIs `"The connection has been closed. Transport error"`時遇到 錯誤，最可能的原因是憑證過期，因為 Linux 上的 pip 安裝路徑不正確而未自動重新整理。憑證會在 3 個月後過期。

Amazon CloudWatch 日誌群組`{{<envname>}}/vdc/dcv-connection-gateway`可能會使用類似下列訊息記錄連線嘗試錯誤：

```
| 2024-07-29T21:46:02.651Z | Jul 29 21:46:01.702  WARN HTTP:Splicer Connection{id=341 client_address="x.x.x.x:50682"}: Error in connection task: TLS handshake error: received fatal alert: CertificateUnknown | redacted:/res-demo/vdc/dcv-connection-gateway | dcv-connection-gateway_10.3.146.195 |
| 2024-07-29T21:46:02.651Z | Jul 29 21:46:01.702  WARN HTTP:Splicer Connection{id=341 client_address="x.x.x.x:50682"}: Certificate error: AlertReceived(CertificateUnknown) | redacted:/res-demo/vdc/dcv-connection-gateway | dcv-connection-gateway_10.3.146.195 |
```

**要解決問題：**

1. 在您的帳戶中AWS，前往 [EC2](https://console.aws.amazon.com/ec2)。如果有名為 `*-CertificateRenewalNode-*` 的執行個體，請終止執行個體。

1. 前往 [Lambda](https://console.aws.amazon.com/lambda)。您應該會看到名為 `*-CertificateRenewalLambda-*` 的 Lambda 函數，請檢查 Lambda 程式碼是否有類似如下的內容：

   ```
   export HOME=/tmp/home
   mkdir -p $HOME
   
   cd /tmp
   wget https://bootstrap.pypa.io/pip/3.7/get-pip.py 
   python3 ./get-pip.py
   pip3 install boto3
   eval $(python3 -c "from botocore.credentials import InstanceMetadataProvider, InstanceMetadataFetcher; provider = InstanceMetadataProvider(iam_role_fetcher=InstanceMetadataFetcher(timeout=1000, num_attempts=2)); c = provider.load().get_frozen_credentials(); print(f'export AWS_ACCESS_KEY_ID={c.access_key}'); print(f'export AWS_SECRET_ACCESS_KEY={c.secret_key}'); print(f'export AWS_SESSION_TOKEN={c.token}')")
   
   mkdir certificates
   cd certificates
   git clone https://github.com/Neilpang/acme.sh.git
   cd acme.sh
   ```

1. [ 在這裡](https://github.com/aws-samples/aws-hpc-recipes/blob/main/recipes/security/public_certs/assets/main.yaml)尋找最新的外部資源 Certs 堆疊範本。在範本中尋找 Lambda 程式碼：**資源** → **CertificateRenewalLambda** → **屬性** → **程式碼**。您可能會發現類似如下的內容：

   ```
   sudo yum install -y wget
   export HOME=/tmp/home
   mkdir -p $HOME
   cd /tmp
   wget https://bootstrap.pypa.io/pip/3.7/get-pip.py
   mkdir -p pip
   python3 ./get-pip.py --target $PWD/pip
   $PWD/pip/bin/pip3 install boto3
   eval $(python3 -c "from botocore.credentials import InstanceMetadataProvider, InstanceMetadataFetcher; provider = InstanceMetadataProvider(iam_role_fetcher=InstanceMetadataFetcher(timeout=1000, num_attempts=2)); c = provider.load().get_frozen_credentials(); print(f'export AWS_ACCESS_KEY_ID={c.access_key}'); print(f'export AWS_SECRET_ACCESS_KEY={c.secret_key}'); print(f'export AWS_SESSION_TOKEN={c.token}')")
   
   mkdir certificates
   cd certificates
   VERSION=3.1.0
   wget https://github.com/acmesh-official/acme.sh/archive/refs/tags/$VERSION.tar.gz -O acme-$VERSION.tar.gz
   tar -xvf acme-$VERSION.tar.gz
   cd acme.sh-$VERSION
   ```

1. 將 `*-CertificateRenewalLambda-* ` Lambda 函數中步驟 2 的 區段取代為步驟 3 的程式碼。選取**部署**並等待程式碼變更生效。

1. 若要手動觸發 Lambda 函數，請前往**測試**索引標籤，然後選取**測試**。不需要額外的輸入。這應該會建立憑證 EC2 執行個體，以更新 Secret Manager 中的憑證和 PrivateKey 秘密。

1. 終止現有的 dcv-gateway 執行個體：`{{<env-name>}}-vdc-gateway`並等待自動擴展群組自動部署新的執行個體。

........................

### 先前運作中的虛擬桌面無法再成功連線
<a name="res-troubleshooting-virtual-desktops-was-working"></a>

如果桌面連線關閉或您無法再與其連線，問題可能是因為基礎 Amazon EC2 執行個體故障，或 Amazon EC2 執行個體可能在 RES 環境之外終止或停止。Admin UI 狀態可能會繼續顯示就緒狀態，但嘗試連線失敗。

應使用 Amazon EC2 主控台來判斷執行個體是否已終止或停止。如果停止，請嘗試再次啟動。如果狀態終止，則必須建立另一個桌面。使用者主目錄上存放的任何資料，在新執行個體啟動時仍應可供使用。

如果先前失敗的執行個體仍會出現在 Admin UI 上，則可能需要使用 Admin UI 將其終止。

........................

### 我只能啟動 5 個虛擬桌面
<a name="res-troubleshooting-virtual-desktops-only-five"></a>

使用者可以啟動的虛擬桌面數量預設限制為 5。這可由管理員使用 Admin UI 進行變更，如下所示：
+ 前往**桌面設定**。
+ 選取**一般**索引標籤。
+ 選取**每個專案使用者預設允許工作階段**右側的編輯圖示，並將值變更為所需的新值。
+ 選擇**提交**。
+ 重新整理頁面以確認新設定已就位。

........................

### 桌面 Windows 連線嘗試失敗，並顯示「連線已關閉。傳輸錯誤"
<a name="res-troubleshooting-virtual-desktops-transport-error"></a>

如果 Windows 桌面連線失敗，並顯示 UI 錯誤「連線已關閉。傳輸錯誤"，原因可能是在 Windows 執行個體上建立憑證相關的 DCV 伺服器軟體發生問題。

Amazon CloudWatch 日誌群組`<envname>/vdc/dcv-connection-gateway`可能會使用類似下列訊息記錄連線嘗試錯誤：

```
Nov 24 20:24:27.631 DEBUG HTTP:Splicer Connection{id=9}:
Websocket{session_id="1291e75f-7816-48d9-bbb2-7371b3b911cd"}:
Resolver lookup{client_ip=Some(52.94.36.19) 
session_id="1291e75f-7816-48d9-bbb2-7371b3b911cd"
 protocol_type=WebSocket extension_data=None}:NoStrictCertVerification: 
 Additional stack certificate (0): [s/n: 0E9E9C4DE7194B37687DC4D2C0F5E94AF0DD57E]

Nov 24 20:25:15.384  INFO HTTP:Splicer Connection{id=21}:Websocket{
session_id="d1d35954-f29d-4b3f-8c23-6a53303ebc3f"}: 
Connection initiated error: unreachable, server io error Custom { 
kind: InvalidData, error:
General("Invalid certificate: certificate has expired (code: 10)") }

Nov 24 20:25:15.384  WARN HTTP:Splicer Connection{id=21}:
Websocket{session_id="d1d35954-f29d-4b3f-8c23-6a53303ebc3f"}: 
Error in websocket connection: Server unreachable: Server error: IO error: 
unexpected error: Invalid certificate: certificate has expired (code: 10)
```

如果發生這種情況，解決方法是使用 SSM Session Manager 開啟與 Windows 執行個體的連線，並移除下列 2 個憑證相關檔案：

```
PS C:\Windows\system32\config\systemprofile\AppData\Local\NICE\dcv> dir

    Directory: C:\Windows\system32\config\systemprofile\AppData\Local\NICE\dcv


Mode                LastWriteTime         Length Name
----                -------------         ------ ----
-a----         8/4/2022  12:59 PM           1704 dcv.key
-a----         8/4/2022  12:59 PM           1265 dcv.pem
```

這些檔案應該會自動重新建立，且後續的連線嘗試可能會成功。

如果此方法解決問題，而且如果 Windows 桌面的新啟動產生相同的錯誤，請使用建立軟體堆疊函數，使用重新產生的憑證檔案來建立固定執行個體的新 Windows 軟體堆疊。這可能會產生可用於成功啟動和連線的 Windows 軟體堆疊。

........................

### VDIs卡在佈建狀態
<a name="res-troubleshooting-virtual-desktops-stuck-prov"></a>

如果桌面啟動在 Admin UI 中仍處於佈建狀態，這可能是由於幾個原因所致。

若要判斷原因，請檢查桌面執行個體上的日誌檔案，並尋找可能導致問題的錯誤。本文件包含日誌檔案和 Amazon CloudWatch 日誌群組的清單，其中包含標記為*實用日誌和事件資訊來源*一節中的相關資訊。

以下是此問題的潛在原因。
+ *使用的 AMI ID 已註冊為軟體堆疊，但 RES 不支援。*

  引導佈建指令碼無法完成，因為 Amazon Machine Image (AMI) 沒有所需的預期組態或工具。執行個體上的日誌檔案，例如 `/root/bootstrap/logs/` Linux 執行個體，可能包含與此相關的實用資訊。從 AWSMarketplace 取得的 AMIs ID 可能無法用於 RES 桌面執行個體。它們需要測試以確認是否支援。
+ *從自訂 AMI 啟動 Windows 虛擬桌面執行個體時，不會執行使用者資料指令碼。*

  根據預設，當 Amazon EC2 執行個體啟動時，使用者資料指令碼會執行一次。如果您從現有的虛擬桌面執行個體建立 AMI，然後向 AMI 註冊軟體堆疊，並嘗試使用此軟體堆疊啟動另一個虛擬桌面，則使用者資料指令碼不會在新的虛擬桌面執行個體上執行。

  若要修正此問題，請在您用來建立 AMI 的**原始**虛擬桌面執行個體上，以管理員身分開啟 PowerShell 命令視窗，然後執行下列命令：

  ```
  C:\ProgramData\Amazon\EC2-Windows\Launch\Scripts\InitializeInstance.ps1 –Schedule
  ```

  然後從執行個體建立新的 AMI。您可以使用新的 AMI 來註冊軟體堆疊，並在之後啟動新的虛擬桌面。請注意，您也可以在保持佈建狀態的執行個體上執行相同的命令，並重新啟動執行個體以修正虛擬桌面工作階段，但當您從設定錯誤的 AMI 啟動另一個虛擬桌面時，將會再次遇到相同的問題。

........................

### 啟動後，VDIs會進入錯誤狀態
<a name="res-troubleshooting-virtual-desktops-error-after"></a>

**可能的問題 1：主檔案系統的 目錄適用於具有不同 POSIX 許可的使用者。**  
如果下列案例成立，這可能是您面臨的問題：  

1. 部署的 RES 版本為 2024.01 或更新版本。

1. 在部署 RES 堆疊期間， 的 屬性`EnableLdapIDMapping`設定為 `True`。

1. 在 RES 堆疊部署期間指定的主檔案系統用於 RES 2024.01 之前的版本，或在先前環境中使用，並將 `EnableLdapIDMapping`設定為 `False`。
**解決步驟**：刪除 檔案系統中的使用者目錄。  

1. 叢集管理員主機的 SSM。

1. `cd /home`.

1. `ls` - 應列出目錄名稱符合使用者名稱的目錄，例如 `admin1`、`admin2`.. 等。

1. 刪除目錄 `sudo rm -r 'dir_name'`。**請勿刪除 ssm-user 和 ec2-user 目錄**。

1. 如果使用者已同步到新的 env，請從使用者的 DDB 資料表刪除使用者的 (**叢集管理員除外**)。

1. 啟動 AD 同步 - 在叢集管理員 Amazon EC2 `sudo /opt/idea/python/3.9.16/bin/resctl ldap sync-from-ad`中執行。

1. 從 RES 網頁以 `Error` 狀態重新啟動 VDI 執行個體。驗證 VDI 會在大約 20 分鐘內轉換為 `Ready` 狀態。

........................

### 登入後，VDI 工作階段會進入空白畫面
<a name="res-troubleshooting-virtual-desktops-vdi-blank-screen"></a>

當具有主控台工作階段類型的 VDI 工作階段在您登入後為空白且沒有回應時，這表示 X 伺服器已中斷。這可能是因為 DCV 嘗試串流桌面，但沒有要串流的作業系統問題。最可能的原因是 Xorg 組態發生問題。您可以執行下列命令來減少對預設 Xorg 組態的依賴。

**Debian 型 Linux：**

```
dpkg-divert --package nice-xdcv --divert /usr/bin/Xorg.orig --rename /usr/bin/Xorg ln -sf /usr/bin/Xdcv-console /usr/bin/Xorg 
```

**Red Hat 型 Linux：**

```
rpm -q --whatprovides /usr/bin/Xorg && \
cp /usr/bin/Xorg /usr/bin/Xorg.orig && \
ln -sf /usr/bin/Xdcv-console /usr/bin/Xorg
```

........................

## 虛擬桌面元件
<a name="res-troubleshooting-vd-component"></a>

**Topics**
+ [Amazon EC2 執行個體在主控台中重複顯示已終止](#res-troubleshooting-vd-component-ec2-terminated)
+ [由於無法加入 AD/eVDI 模組，vdc-controller 執行個體正在循環，顯示 API 運作狀態檢查失敗](#res-troubleshooting-vd-component-cycling)
+ [編輯軟體堆疊以新增專案時，專案不會出現在下拉式清單中](#res-troubleshooting-vd-component-not-in-pulldown)
+ [cluster-manager Amazon CloudWatch 日誌顯示「<user-home-init> 帳戶尚無法使用。正在等待使用者同步」（其中帳戶是使用者名稱）](#res-troubleshooting-vd-component-acct-unavailable)
+ [Windows 桌面登入嘗試時顯示「您的帳戶已停用。請洽詢您的管理員"](#res-troubleshooting-vd-component-acct-disabled)
+ [外部/客戶 AD 組態的 DHCP 選項問題](#res-troubleshooting-vd-component-dhcp)
+ [Firefox 錯誤 MOZILLA\_PKIX\_ERROR\_REQUIRED\_TLS\_FEATURE\_MISSING](#res-troubleshooting-vd-firefox)

........................

### Amazon EC2 執行個體在主控台中重複顯示已終止
<a name="res-troubleshooting-vd-component-ec2-terminated"></a>

如果基礎設施執行個體在 Amazon EC2 主控台中重複顯示為已終止，原因可能與其組態相關，並取決於基礎設施執行個體類型。以下是判斷原因的方法。

如果 vdc-controller 執行個體在 Amazon EC2 主控台中顯示重複終止狀態，這可能是由於不正確的秘密標籤所致。RES 維護的秘密具有標籤，做為連接到基礎設施 Amazon EC2 執行個體的 IAM 存取控制政策的一部分。如果 vdc-controller 正在循環，且 CloudWatch 日誌群組中出現下列錯誤，原因可能是秘密未正確標記。請注意，秘密需要標記下列項目：

```
{
    "res:EnvironmentName": "{{<envname>}}" # e.g. "res-demo"
    "res:ModuleName": "virtual-desktop-controller"
}
```

此錯誤的 Amazon CloudWatch 日誌訊息會顯示如下：

```
An error occurred (AccessDeniedException) when calling the GetSecretValue
operation: User: arn:aws:sts::160215750999:assumed-role/{{<envname>}}-vdc-gateway-role-us-east-1/i-043f76a2677f373d0 
is not authorized to perform: secretsmanager:GetSecretValue on resource:
arn:aws:secretsmanager:us-east-1:160215750999:secret:Certificate-res-bi-Certs-5W9SPUXF08IB-F1sNRv 
because no identity-based policy allows the secretsmanager:GetSecretValue action
```

檢查 Amazon EC2 執行個體上的標籤，並確認它們符合上述清單。

........................

### 由於無法加入 AD/eVDI 模組，vdc-controller 執行個體正在循環，顯示 API 運作狀態檢查失敗
<a name="res-troubleshooting-vd-component-cycling"></a>

如果 eVDI 模組運作狀態檢查失敗，則會在環境狀態區段中顯示下列項目。

![環境模組和狀態儀表板的範例](https://docs.aws.amazon.com/zh_tw/res/latest/ug/images/res-environment-modules-status.png)


在這種情況下，除錯的一般路徑是查看**叢集管理員** [CloudWatch](https://console.aws.amazon.com/cloudwatch/home#logsV2:log-groups) 日誌。（尋找名為 的日誌群組`<env-name>/cluster-manager`。)

可能的問題：
+ 如果日誌包含文字 `Insufficient permissions`，請確定建立 res 堆疊時提供的 ServiceAccount 使用者名稱拼寫正確。

  日誌行範例：

  ```
  Insufficient permissions to modify computer account: CN=IDEA-586BD25043,OU=Computers,OU=RES,OU=CORP,DC=corp,DC=res,DC=com: 000020E7: AtrErr: DSID-03153943, #1: 0: 000020E7: DSID-03153943, problem 1005 (CONSTRAINT_ATT_TYPE), data 0, Att 90008 (userAccountControl):len 4 >> 432 ms - request will be retried in 30 seconds
  ```
  + 您可以從 [ SecretsManager 主控台](https://console.aws.amazon.com/secretsmanager/listsecrets)存取 RES 部署期間提供的 ServiceAccount 使用者名稱。在 Secrets Manager 中尋找對應的秘密，然後選擇**擷取純文字**。如果使用者名稱不正確，請選擇**編輯**以更新秘密值。終止目前的叢集管理員和 vdc-controller 執行個體。新執行個體將進入穩定狀態。
  + 如果您使用由提供的[外部資源堆疊建立的資源](create-external-resources.md)，使用者名稱必須是「ServiceAccount」。如果在部署 RES 期間將 `DisableADJoin` 參數設定為 False，請確定「ServiceAccount」使用者具有在 AD 中建立**電腦**物件的許可。
+ 如果使用的使用者名稱正確，但日誌包含文字 `Invalid credentials`，則您輸入的密碼可能**錯誤**或**已過期**。

  日誌行範例：

  ```
  {'msgtype': 97, 'msgid': 1, 'result': 49, 'desc': 'Invalid credentials', 'ctrls': [], 'info': '80090308: LdapErr: DSID-0C090569, comment: AcceptSecurityContext error, data 532, v4563'}
  ```
  + 您可以透過存取在 [Secrets Manager 主控台](https://console.aws.amazon.com/secretsmanager/listsecrets)中存放密碼的秘密，讀取您在建立 env 期間輸入的密碼。選取秘密 （例如 `<env_name>directoryserviceServiceAccountPassword`)，然後選擇**擷取純文字**。
  + 如果秘密中的密碼不正確，請選擇**編輯**以更新秘密中的值。終止目前的叢集管理員和 vdc-controller 執行個體。新執行個體將使用更新的密碼，並進入穩定狀態。
  + 如果密碼正確，可能是已連線 Active Directory 中的密碼已過期。您必須先重設 Active Directory 中的密碼，然後更新秘密。您可以從 [Directory Service 主控台](https://console.aws.amazon.com/directoryservicev2/identity/home)在 Active Directory 中重設使用者的密碼：

    1. 選擇適當的目錄 ID

    1. 選擇**動作**、**重設使用者密碼**，然後使用使用者名稱 （例如「ServiceAccount」) 和新密碼填寫表單。

    1. 如果新設定的密碼與先前的密碼不同，請在對應的 Secret Manager 秘密中更新密碼 （例如 `<env_name>directoryserviceServiceAccountPassword`。

    1. 終止目前的叢集管理員和 vdc-controller 執行個體。新執行個體將進入穩定狀態。

........................

### 編輯軟體堆疊以新增專案時，專案不會出現在下拉式清單中
<a name="res-troubleshooting-vd-component-not-in-pulldown"></a>

此問題可能與下列與將使用者帳戶與 AD 同步相關的問題有關。如果出現此問題，請檢查叢集管理員 Amazon CloudWatch 日誌群組是否有錯誤「`<user-home-init> account not available yet. waiting for user to be synced`」，以判斷原因是否相同或相關。

........................

### cluster-manager Amazon CloudWatch 日誌顯示「<user-home-init> 帳戶尚無法使用。正在等待使用者同步」（其中帳戶是使用者名稱）
<a name="res-troubleshooting-vd-component-acct-unavailable"></a>

SQS 訂閱者忙碌且卡在無限迴圈中，因為它無法到達使用者帳戶。嘗試在使用者同步期間為使用者建立主檔案系統時，會觸發此程式碼。

無法到達使用者帳戶的原因可能是 RES 未正確設定 AD 使用中。例如，在 BI/RES 環境建立中使用的 `ServiceAccountCredentialsSecretArn` 參數不是正確的值。

........................

### Windows 桌面登入嘗試時顯示「您的帳戶已停用。請洽詢您的管理員"
<a name="res-troubleshooting-vd-component-acct-disabled"></a>

![帳戶停用錯誤畫面](https://docs.aws.amazon.com/zh_tw/res/latest/ug/images/res-disabled-account.png)


如果使用者無法登入鎖定的畫面，這可能表示使用者在透過 SSO 成功登入後，已在針對 RES 設定的 AD 中停用。

如果使用者帳戶已在 AD 中停用，SSO 登入應該會失敗。

........................

### 外部/客戶 AD 組態的 DHCP 選項問題
<a name="res-troubleshooting-vd-component-dhcp"></a>

如果您在`"The connection has been closed. Transport error"`將 RES 與您自己的 Active Directory 搭配使用時遇到使用 Windows 虛擬桌面的錯誤，請檢查 dcv-connection-gateway Amazon CloudWatch 日誌是否有類似如下的內容：

```
Oct 28 00:12:30.626  INFO HTTP:Splicer Connection{id=263}:
Websocket{session_id="96cffa6e-cf2e-410f-9eea-6ae8478dc08a"}: Connection initiated error: unreachable, server io error Custom { kind: Uncategorized, error: "failed to lookup address information: Name or service not known" } 

Oct 28 00:12:30.626  WARN HTTP:Splicer Connection{id=263}: Websocket{session_id="96cffa6e-cf2e-410f-9eea-6ae8478dc08a"}: Error in websocket connection: Server unreachable: Server error: IO error: failed to lookup address information: Name or service not known
 
Oct 28 00:12:30.627 DEBUG HTTP:Splicer Connection{id=263}: ConnectionGuard dropped
```

如果您針對自己的 VPC 使用 DHCP 選項的 AD 網域控制器，您需要：

1. 將 AmazonProvidedDNS 新增至兩個網域控制站 IPs。

1. 將網域名稱設定為 ec2.internal。

此處顯示範例。如果沒有此組態，Windows 桌面會為您提供**傳輸錯誤** ，因為 RES/DCV 會尋找 ip-10-0-x-xx.ec2.internal hostname。

![網域名稱和網域名稱伺服器範例](https://docs.aws.amazon.com/zh_tw/res/latest/ug/images/res-domain-name-and-servers.png)


........................

### Firefox 錯誤 MOZILLA\_PKIX\_ERROR\_REQUIRED\_TLS\_FEATURE\_MISSING
<a name="res-troubleshooting-vd-firefox"></a>

當您使用 Firefox Web 瀏覽器時，當您嘗試連線到虛擬桌面時，可能會遇到 MOZILLA\_PKIX\_ERROR\_REQUIRED\_TLS\_FEATURE\_MISSING 錯誤訊息類型。

原因是 RES Web 伺服器已使用 TLS \+ Stapling On 設定，但未使用 Stapling Validation 回應 （請參閱 [ https://support.mozilla.org/en-US/questions/1372483](https://support.mozilla.org/en-US/questions/1372483)：//。

您可以依照 https：//[https://really-simple-ssl.com/mozilla\_pkix\_error\_required\_tls\_feature\_missing ](https://really-simple-ssl.com/mozilla_pkix_error_required_tls_feature_missing)中的指示來修正此問題。

........................

## Env 刪除
<a name="res-troubleshooting-env-deletion"></a>

**Topics**
+ [res-xxx-cluster 堆疊處於「DELETE\_FAILED」狀態，且無法手動刪除，因為「角色無效或無法擔任」錯誤](#res-troubleshooting-env-deletion-role-invalid)
+ [收集日誌](#res-troubleshooting-env-deletion-collect-logs)
+ [下載 VDI 日誌](#res-troubleshooting-env-deletion-download-logs)
+ [從 Linux EC2 執行個體下載日誌](#res-troubleshooting-env-deletion-linux-ec2-logs)
+ [從 Windows EC2 執行個體下載日誌](#res-troubleshooting-env-deletion-windows-ec2-logs)
+ [收集 WaitCondition 錯誤的 ECS 日誌](#res-troubleshooting-env-deletion-waitcondition)
+ [網路界面刪除失敗](#res-troubleshooting-env-deletion-eni-failure)

........................

### res-xxx-cluster 堆疊處於「DELETE\_FAILED」狀態，且無法手動刪除，因為「角色無效或無法擔任」錯誤
<a name="res-troubleshooting-env-deletion-role-invalid"></a>

如果您注意到 "res-xxx-cluster" 堆疊處於 "DELETE\_FAILED" 狀態，且無法手動刪除，您可以執行下列步驟將其刪除。

如果您看到堆疊處於「DELETE\_FAILED」狀態，請先嘗試手動將其刪除。它可能會彈出一個對話方塊，確認刪除堆疊。選擇 **刪除**。

![刪除堆疊確認彈出畫面](https://docs.aws.amazon.com/zh_tw/res/latest/ug/images/res-delete-stack-popup.png)


有時候，即使您刪除所有必要的堆疊資源，您仍可能會看到訊息以選取要保留的資源。在這種情況下，請選取所有資源做為「要保留的資源」，然後選擇**刪除**。

您可能會看到類似 的錯誤 `Role: arn:aws:iam::... is Invalid or cannot be assumed`

![CloudFormation 堆疊視窗顯示無效角色的錯誤](https://docs.aws.amazon.com/zh_tw/res/latest/ug/images/res-cloudformation-stacks-error.png)


這表示刪除堆疊所需的角色會在堆疊之前先刪除。若要解決此問題，請複製角色的名稱。前往 IAM 主控台，並使用如下所示的參數建立具有該名稱的角色，如下所示：
+ 針對**信任的實體類型**，選擇 **AWS服務**。
+ 針對**使用案例**，在 下`Use cases for otherAWS services`選擇 `CloudFormation`。

![IAM 角色建立角色步驟 1 視窗可讓您選取信任的實體](https://docs.aws.amazon.com/zh_tw/res/latest/ug/images/res-select-trusted-entity.png)


選擇**下一步**。請務必提供角色 '`AWSCloudFormationFullAccess`' 和 '`AdministratorAccess`' 許可。您的檢閱頁面看起來應該如下所示：

![此 IAM 畫面可讓您命名、檢閱和建立角色](https://docs.aws.amazon.com/zh_tw/res/latest/ug/images/res-iam-name-review-create-role.png)


然後返回 CloudFormation 主控台並刪除堆疊。您現在應該可以在建立角色後將其刪除。最後，前往 IAM 主控台並刪除您建立的角色。

........................

### 收集日誌
<a name="res-troubleshooting-env-deletion-collect-logs"></a>

**從 EC2 主控台登入 EC2 執行個體**
+ 請依照[這些指示](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/connect-with-systems-manager-session-manager.html)登入您的 Linux EC2 執行個體。
+ 請依照[這些指示](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/connecting_to_windows_instance.html)登入您的 Windows EC2 執行個體。然後開啟 Windows PowerShell 以執行任何命令。

**收集基礎設施主機日誌**

1. Cluster-manager：從下列位置取得叢集管理員的日誌，並將其連接至票證。

   1. 來自 CloudWatch 日誌群組 的所有日誌`<env-name>/cluster-manager`。

   1. `<env-name>-cluster-manager` EC2 執行個體上 `/root/bootstrap/logs`目錄下的所有日誌。遵循本節開頭從「從 EC2 主控台登入 EC2 執行個體」連結到 的指示，以登入您的執行個體。

1. Vdc-controller：從下列位置取得 vdc-controller 的日誌，並將其連接至票證。

   1. 來自 CloudWatch 日誌群組 的所有日誌`<env-name>/vdc-controller`。

   1. `<env-name>-vdc-controller` EC2 執行個體上 `/root/bootstrap/logs`目錄下的所有日誌。遵循本節開頭從「從 EC2 主控台登入 EC2 執行個體」連結到 的指示，以登入您的執行個體。

輕鬆取得日誌的其中一種方法是遵循 [從 Linux EC2 執行個體下載日誌](#res-troubleshooting-env-deletion-linux-ec2-logs)一節中的指示。模組名稱會是執行個體名稱。

**收集 VDI 日誌**

**識別對應的 Amazon EC2 執行個體 **  
如果使用者以工作階段名稱 啟動 VDI`VDI1`，則 Amazon EC2 主控台上執行個體的對應名稱將為 `<env-name>-VDI1-<user name>`。

**收集 Linux VDI 日誌 **  
按照本節開頭「從 Amazon EC2 主控台登入 EC2 執行個體」中連結的指示，從 Amazon EC2 主控台登入對應的 Amazon EC2 執行個體。取得 VDI Amazon EC2 執行個體上 `/root/bootstrap/logs`和 `/var/log/dcv/`目錄下的所有日誌。  
取得日誌的其中一種方法是將日誌上傳至 s3，然後從該處下載日誌。為此，您可以依照下列步驟，從一個目錄取得所有日誌，然後上傳它們：  

1. 請依照下列步驟，在 `/root/bootstrap/logs`目錄下複製 dcv 日誌：

   ```
   sudo su - 
   cd /root/bootstrap
   mkdir -p logs/dcv_logs
   cp -r /var/log/dcv/* logs/dcv_logs/
   ```

1. 現在，請依照下一節列出的步驟[下載 VDI 日誌](#res-troubleshooting-env-deletion-download-logs)，下載日誌。

**收集 Windows VDI 日誌**  
按照本節開頭「從 Amazon EC2 主控台登入 EC2 執行個體」中連結的指示，從 Amazon EC2 主控台登入對應的 Amazon EC2 執行個體。在 VDI EC2 執行個體的 `$env:SystemDrive\Users\Administrator\RES\Bootstrap\Log\`目錄下取得所有日誌。  
取得日誌的其中一種方法是將它們上傳到 S3，然後從那裡下載它們。若要這樣做，請遵循下一節列出的步驟 - [下載 VDI 日誌](#res-troubleshooting-env-deletion-download-logs)。

........................

### 下載 VDI 日誌
<a name="res-troubleshooting-env-deletion-download-logs"></a>

1. 更新 VDI EC2 執行個體 IAM 角色以允許 S3 存取。

1. 前往 EC2 主控台，然後選取您的 VDI 執行個體。

1. 選取其正在使用的 IAM 角色。

1. 在**新增許可**下拉式功能表的**許可政策**區段中，選擇**連接政策**，然後選取 **AmazonS3FullAccess** 政策。

1. 選擇**新增許可**以連接該政策。

1. 之後，根據您的 VDI 類型，依照下列步驟下載日誌。模組名稱會是執行個體名稱。

   1. [從 Linux EC2 執行個體下載日誌](#res-troubleshooting-env-deletion-linux-ec2-logs) 適用於 Linux。

   1. [從 Windows EC2 執行個體下載日誌](#res-troubleshooting-env-deletion-windows-ec2-logs) 適用於 Windows 的 。

1. 最後，編輯角色以移除`AmazonS3FullAccess`政策。

**注意**  
所有 VDIs 都使用相同的 IAM 角色， `<env-name>-vdc-host-role-<region>`

........................

### 從 Linux EC2 執行個體下載日誌
<a name="res-troubleshooting-env-deletion-linux-ec2-logs"></a>

登入您要從中下載日誌的 EC2 執行個體，並執行下列命令，將所有日誌上傳至 s3 儲存貯體：

```
sudo su -
ENV_NAME={{<environment_name>}}
REGION={{<region>}}
ACCOUNT={{<aws_account_number>}}
MODULE={{<module_name>}}

cd /root/bootstrap
tar -czvf ${MODULE}_logs.tar.gz logs/ --overwrite
aws s3 cp ${MODULE}_logs.tar.gz s3://${ENV_NAME}-cluster-${REGION}-${ACCOUNT}/${MODULE}_logs.tar.gz
```

之後，請前往 S3 主控台，選取名稱為 的儲存貯體，`<environment_name>-cluster-<region>-<aws_account_number>`然後下載先前上傳`<module_name>_logs.tar.gz`的檔案。

........................

### 從 Windows EC2 執行個體下載日誌
<a name="res-troubleshooting-env-deletion-windows-ec2-logs"></a>

登入您要從中下載日誌的 EC2 執行個體，並執行下列命令，將所有日誌上傳至 S3 儲存貯體：

```
$ENV_NAME="<environment_name>"
$REGION="{{<region>}}"
$ACCOUNT="{{<aws_account_number>}}"
$MODULE="{{<module_name>}}"

$logDirPath = Join-Path -Path $env:SystemDrive -ChildPath "Users\Administrator\RES\Bootstrap\Log"
$zipFilePath = Join-Path -Path $env:TEMP -ChildPath "logs.zip"
Remove-Item $zipFilePath
Compress-Archive -Path $logDirPath -DestinationPath $zipFilePath
$bucketName = "${ENV_NAME}-cluster-${REGION}-${ACCOUNT}"
$keyName = "${MODULE}_logs.zip"
Write-S3Object -BucketName $bucketName -Key $keyName -File $zipFilePath
```

之後，請前往 S3 主控台，選取名稱為 的儲存貯體，`<environment_name>-cluster-<region>-<aws_account_number>`然後下載先前上傳`<module_name>_logs.zip`的檔案。

........................

### 收集 WaitCondition 錯誤的 ECS 日誌
<a name="res-troubleshooting-env-deletion-waitcondition"></a>

1. 前往部署的堆疊，然後選取**資源**索引標籤。

1. 展開**部署** → **ResearchAndEngineeringStudio** → **安裝程式** → **任務** → **CreateTaskDef** → **CreateContainer** → **LogGroup**，然後選取日誌群組以開啟 CloudWatch 日誌。

1. 從此日誌群組中擷取最新的日誌。

........................

### 網路界面刪除失敗
<a name="res-troubleshooting-env-deletion-eni-failure"></a>

如果您在 RES 定案器堆疊`detachvpcfromlambdacustomresource`刪除的事件區段中發現刪除失敗，這很可能表示 Lambda 服務無法刪除或未及時刪除連接到 RES Lambdas 的網路介面。

您可以導覽至 [Amazon EC2 主控台](https://console.aws.amazon.com/ec2)中的**網路介面**頁面，並依包含 的描述進行篩選，以手動刪除這些過時的網路介面`AWS Lambda VPC ENI-{{{RES-Environment-Name}}}`。最多應該有 14 個網路介面，但根據 Lambda 能夠成功刪除的數量，可能較少。手動刪除這些網路介面，然後重新啟動 RES 堆疊刪除。

## 示範環境
<a name="res-troubleshooting-demo-env"></a>

**Topics**
+ [處理身分提供者的身分驗證請求時發生示範環境登入錯誤](#demo-environment-login-error)
+ [示範堆疊 keycloak 無法運作](#demo-environment-stack-keycloak)

........................

### 處理身分提供者的身分驗證請求時發生示範環境登入錯誤
<a name="demo-environment-login-error"></a>

**問題**

如果您嘗試登入，並在處理身分提供者的身分驗證請求時收到「非預期的錯誤」，您的密碼可能已過期。這可能是您嘗試以 身分登入的使用者的密碼，或是您的 Active Directory 服務帳戶。

**緩解**

1. 在[目錄服務主控台](https://console.aws.amazon.com/directoryservicev2)中重設使用者和服務帳戶密碼。

1. 在 [ Secrets Manager](https://console.aws.amazon.com/secretsmanager) 中更新服務帳戶密碼，以符合您在上面輸入的新密碼：
   + 適用於 Keycloak 堆疊：**PasswordSecret**-...-**RESExternal**-...-**DirectoryService**-... 與描述：Microsoft Active Directory 的密碼 
   + for RES： **res-ServiceAccountPassword**-... with Description： Active Directory Service 帳戶密碼 

1. 前往 [EC2 主控台](https://console.aws.amazon.com/ec2)並終止叢集管理員執行個體。Auto Scaling 規則會自動觸發新執行個體的部署。

........................

### 示範堆疊 keycloak 無法運作
<a name="demo-environment-stack-keycloak"></a>

**問題**

如果您的 keycloak 伺服器當機，且當您重新啟動伺服器時，執行個體的 IP 已變更，這可能會導致 keycloak 中斷 – RES 入口網站的登入頁面無法載入或卡在從未解析的載入狀態。

**緩解**

您需要刪除現有的基礎設施，並重新部署 Keycloak 堆疊，將 Keycloak 還原至運作狀態良好。請遵循下列步驟：

1. 前往 Cloudformation。您應該會在那裡看到兩個與 keycloak 相關的堆疊：
   + `{{<env-name>}}-RESSsoKeycloak-{{<random characters>}}` （堆疊 1)

     `{{<env-name>}}-RESSsoKeycloak-{{<random characters>}}-RESSsoKeycloak-*` (Stack2)

1. 刪除 Stack1。如果系統提示您刪除巢狀堆疊，請選取**是**來刪除巢狀堆疊。

   確定堆疊已完全刪除。

1. 在此下載 RES SSO Keycloak 堆疊範本[https://s3.amazonaws.com/aws-hpc-recipes/main/recipes/res/res_demo_env/assets/res-sso-keycloak.yaml](https://s3.amazonaws.com/aws-hpc-recipes/main/recipes/res/res_demo_env/assets/res-sso-keycloak.yaml)。

1. 使用與已刪除堆疊完全相同的參數值手動部署此堆疊。從 CloudFormation 主控台部署它，方法是前往**建立堆疊** → **使用新資源 （標準）** → **選擇現有範本** → **上傳範本檔案**。使用與已刪除堆疊相同的輸入填入必要的參數。您可以在 CloudFormation 主控台上變更篩選條件並前往**參數**索引標籤，在已刪除的堆疊中找到這些輸入。請確定環境名稱、金鑰對和其他參數符合原始堆疊參數。

1. 部署堆疊後，您的環境即可再次使用。您可以在已部署堆疊的**輸出**索引標籤中找到 ApplicationUrl。

........................

## Active Directory 問題
<a name="active-directory-issues"></a>

**Topics**
+ [我的 VDI 長時間卡在佈建狀態，或在 VDI 就緒後，我無法以 AD 使用者身分登入我的 VDI](#active-directory-issues-vdi-stuck)
+ [設定 SSO 後，我無法登入 RES Web 入口網站](#active-directory-issues-res-web-portal)
+ [即使成功啟動 Linux VDIs，AD 使用者也無法使用檔案瀏覽器存取主目錄](#active-directory-issues-home-directory-access)
+ [啟用 SSH 存取後，AD 管理員使用者無法存取堡壘主機](#active-directory-issues-bastion-host-access)
+ [檢視和管理 RES 外部資源堆疊部署的 Active Directory](#active-directory-issues-external-resource-stack)

### 我的 VDI 長時間卡在佈建狀態，或在 VDI 就緒後，我無法以 AD 使用者身分登入我的 VDI
<a name="active-directory-issues-vdi-stuck"></a>

請先檢查 VDI 安裝和組態日誌 (`/root/bootstrap/logs/`適用於 Linux 的 和 `/opt/idea/app/logs/`目錄，或適用於 Windows 的 `C:\Users\Administrator\RES\Bootstrap\Log\`和 `C:\Program Files\RES\app\logs\`目錄） 是否有任何安裝或組態錯誤。

如果您發現錯誤訊息，指出執行個體無法加入 Active Directory，通常是因為 Cluster Manager 無法在 AD 中為執行個體預設電腦帳戶。檢查 `/{{environment-name}}/cluster-manager` CloudWatch 日誌群組下的 Cluster Manager 日誌，並篩選包含 的錯誤訊息`[preset-computer]`。常見問題包括：
+ AD 服務帳戶的登入資料無效。
  + 檢查您提供給 RES 的服務帳戶秘密。請確定使用者名稱和密碼是以金鑰值對形式提供，`{{{username}}: {{password}}}`且憑證有效。您將需要透過終止現有的執行個體，並允許自動擴展群組在您變更服務帳戶秘密後自動啟動新的執行個體，來循環叢集管理員執行個體。然後啟動新的 VDIs以套用變更。
+ 服務帳戶沒有在 AD 中建立電腦帳戶的許可。
  + 請確定您的服務帳戶具有列於 的所有必要許可[設定 Microsoft Active Directory 的服務帳戶](prerequisites.md#service-account-ms-ad)。在 AD 中修正服務帳戶許可後，您將需要啟動新的 VDIs。
+ 無法連線至 LDAP 伺服器。
  + 如果您使用受管 AD，請確定您的 AD 組態允許 VPC 內的 LDAP/LDAPS 連線，且 VPC 的 DHCP 選項在[建立或變更 AWSManaged Microsoft AD 的 DHCP 選項集](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/dhcp_options_set.html)後正確設定。AWS
  + 對於 LDAPS 連線， 參數`DomainTLSCertificateSecretArn`是必要的，而且您必須提供有效的 CA 憑證來保護連線。您需要透過終止現有的執行個體，並允許自動擴展群組在變更 TLS 憑證秘密後自動啟動新的執行個體，來循環叢集管理員執行個體。然後啟動新的 VDIs以套用變更。
  + 若要測試 RES 和 AD 之間的連線，請在 Cluster Manager 執行個體上執行下列 ldapsearch 命令 （取代使用者 OU、LDAP 連線 URI、服務帳戶使用者名稱和密碼）。如果您的 AD 已正確設定為允許連線，則此命令應傳回所提供 OU 下的所有使用者。

    ```
    ldapsearch -x -b "OU=Users,OU=RES,OU=CORP,DC=corp,DC=res,DC=com" -D "ServiceAccount@corp.res.com" -H ldap://corp.res.com -w {{service-account-password}} "(objectClass=group)"
    ```

如果您在安裝 RES `true`時將 DisableADJoin 設定為 ，則 **Linux** VDIs只會連線到 Active Directory，而不是透過 SSSD 服務加入。從 EC2 主控台連線至您的 VDI 執行個體，並在其`id {{username}}`上執行命令。如果命令無法傳回對應 AD 使用者的 UID/GID，請在 VDI 執行個體`sudo systemctl status sssd`上使用 命令檢查 SSSD 服務狀態，並在 `/var/log/sssd/`目錄下檢查 SSSD 服務日誌。

如果您需要自訂 SSSD 組態以連線至 AD，您可以手動編輯 SSSD 組態檔案 (`/etc/sssd/sssd.conf`)，並使用`sudo systemctl restart sssd`基礎設施/VDI 主機 (2024.12.01 及更舊版本的命令重新啟動 SSSD 服務），或從 RES Web 入口網站提供額外的 SSSD 組態[Active Directory 同步](active-directory-sync.md)，之後會自動套用至現有或新的 VDIs (2025.03 及更高版本）。

........................

### 設定 SSO 後，我無法登入 RES Web 入口網站
<a name="active-directory-issues-res-web-portal"></a>

檢查 `{{environment-name}}.accounts.users`和 `{{environment-name}}.accounts.groups` DynamoDB 資料表，以查看使用者和群組是否從您的 Active Directory 同步。如果資料表空白或缺少您正在登入的使用者，請檢查 `/{{environment-name}}/cluster-manager` CloudWatch 日誌群組 (2024.12 版本之前） 或 `/{{environment-name}}/ad-sync` CloudWatch 日誌群組 (2024.12 版本及更新版本） 中的 AD 同步日誌。

除了 中提到的常見 AD 組態問題之外[我的 VDI 長時間卡在佈建狀態，或在 VDI 就緒後，我無法以 AD 使用者身分登入我的 VDI](#active-directory-issues-vdi-stuck)，其他錯誤可能包括：
+ 服務帳戶沒有在 AD 中查詢使用者和群組的許可。
  + 請確定您的服務帳戶具有列於 的所有必要許可[設定 Microsoft Active Directory 的服務帳戶](prerequisites.md#service-account-ms-ad)。
+ Active Directory 中的使用者/群組缺少必要的屬性，例如電子郵件地址。
  + 相應地更新您的使用者/群組屬性以修正問題。

修正 AD 同步問題後，您可以等待每小時發生的下一個排程 AD 同步，或依照 [如何手動執行同步 (2024.12 和 2024.12.01 版）](active-directory-sync.md#active-directory-sync-manually)(2024.12 和 2024.12.01 版本） 或 [如何手動啟動或停止同步 (2025.03 及更新版本）](active-directory-sync.md#active-directory-sync-start-stop)(2025.03 及更新版本） 中的指示手動觸發同步。

........................

### 即使成功啟動 Linux VDIs，AD 使用者也無法使用檔案瀏覽器存取主目錄
<a name="active-directory-issues-home-directory-access"></a>

在 Cluster Manager 執行個體`id {{username}}`上執行 命令，檢查叢集管理員是否可以看見 AD 使用者。如果命令無法傳回對應 AD 使用者的 UID/GID，請檢查 `/{{environment-name}}/cluster-manager` CloudWatch 日誌群組下的 Cluster Manager 日誌，並搜尋有關啟動 SSSD 服務的任何錯誤。如果 Cluster Manager 日誌中沒有錯誤，請使用 Cluster Manager 執行個體`sudo systemctl status sssd`上的 命令以及 `/var/log/sssd/`目錄下的 SSSD 服務日誌來檢查 SSSD 服務狀態。

如果叢集管理員可以看到 AD 使用者，請執行命令 來檢查使用者主目錄 (`/home/{{username}}`) 上的 UID/GID`ls -n /home`。比較使用者主目錄的 UID/GID 與 `id {{username}}`命令傳回的 UID/GID。如果 UID/GID 不相符，表示使用者的主目錄可能會在 RES 之外或從先前的 RES 部署建立。**備份任何重要的使用者資料**、刪除主目錄，並向使用者啟動新的 Linux VDI。成功佈建新的 VDI 後，將使用適當的 UID/GID 重新建立主目錄。

........................

### 啟用 SSH 存取後，AD 管理員使用者無法存取堡壘主機
<a name="active-directory-issues-bastion-host-access"></a>

透過在堡壘主機執行個體`id {{username}}`上執行 命令，檢查堡壘主機是否可以看見 AD 使用者。如果命令無法傳回對應 AD 使用者的 UID/GID，請檢查 `/{{environment-name}}/bastion-host` CloudWatch 日誌群組下的堡壘主機日誌，並搜尋有關啟動 SSSD 服務的任何錯誤。如果堡壘主機日誌中沒有錯誤，請使用堡壘主機執行個體`sudo systemctl status sssd`上的 命令以及 `/var/log/sssd/`目錄下的 SSSD 服務日誌來檢查 SSSD 服務狀態。

........................

### 檢視和管理 RES 外部資源堆疊部署的 Active Directory
<a name="active-directory-issues-external-resource-stack"></a>

如果您的AWS受管 Active Directory 是由 RES 外部資源堆疊部署，則應該會有名為 的執行個體，其名稱開頭為在您AWS帳戶下`AdDomainWindowsNode-{{external-resource-stack-name}}-WindowsManagementHost`部署的 ，可用來存取和管理 Active Directory。您可以使用下列登入資料，在 EC2 主控台中透過 Fleet Manager 登入執行個體：
+ username：管理員
+ 密碼：部署外部資源堆疊時提供的 AdminPassword 參數

如需管理AWS受管 Active Directory，請參閱 *AWSDirectory Service 管理指南*中的[使用 Amazon EC2 執行個體管理使用者和群組](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/ms_ad_manage_users_groups_ec2.html)。

........................