

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

# 組態指南
<a name="configuration-guide"></a>

此組態指南為技術對象提供部署後的指示，說明如何進一步自訂並與 AWS 產品上的 Research and Engineering Studio 整合。

**Topics**
+ [

# 身分管理
](manage-users.md)
+ [

# 建立子網域
](create-subdomains.md)
+ [

# 建立 ACM 憑證
](acm-certificate.md)
+ [

# Amazon CloudWatch Logs
](log-groups.md)
+ [

# 設定自訂許可界限
](permission-boundaries.md)
+ [

# 設定 RES 就緒 AMIs
](res-ready-ami.md)
+ [

# 可設定的 DCV 工作階段驗證閾值
](dcv-session-validation-thresholds.md)
+ [

# 在 RES 安裝後設定自訂網域
](setup-custom-domain-after-install.md)

# 身分管理
<a name="manage-users"></a>

Research and Engineering Studio 可以使用任何 SAML 2.0 相容身分提供者。若要使用 Amazon Cognito 做為原生使用者目錄，以允許使用者使用 Cognito 使用者身分登入 Web 入口網站和 Linux 型 VDIs，請參閱 [設定 Amazon Cognito 使用者](setting-up-cognito-users.md)。如果您使用外部資源或計劃使用 IAM Identity Center 部署 RES，請參閱 [使用 IAM Identity Center 設定單一登入 (SSO)](sso-idc.md)。如果您有自己的 SAML 2.0 相容身分提供者，請參閱 [為單一登入 (SSO) 設定您的身分提供者](configure-id-federation.md)。

**Topics**
+ [

# 設定 Amazon Cognito 使用者
](setting-up-cognito-users.md)
+ [

# Active Directory 同步
](active-directory-sync.md)
+ [

# 使用 IAM Identity Center 設定單一登入 (SSO)
](sso-idc.md)
+ [

# 為單一登入 (SSO) 設定您的身分提供者
](configure-id-federation.md)
+ [

# 設定使用者的密碼
](setting-user-passwords.md)

# 設定 Amazon Cognito 使用者
<a name="setting-up-cognito-users"></a>

研究與工程 Studio (RES) 可讓您將 Amazon Cognito 設定為原生使用者目錄。這可讓使用者使用 Amazon Cognito 使用者身分登入 Web 入口網站和 Linux 型 VDIs。管理員可以使用 AWS 主控台中的 csv 檔案，將多個使用者匯入使用者集區。如需大量使用者匯入的詳細資訊，請參閱《*Amazon Cognito 開發人員指南*》中的[從 CSV 檔案將使用者匯入使用者集](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pools-using-import-tool.html)區。RES 支援同時使用 Amazon Cognito 型原生使用者目錄和 SSO。

## 管理設定
<a name="setting-up-cognito-users-admin"></a>

身為 RES 管理員，若要將 RES 環境設定為使用 Amazon Cognito 做為使用者目錄，請在可從**環境管理**頁面存取的**身分管理**頁面上切換**使用 Amazon Cognito 做為使用者目錄**按鈕。若要允許使用者自行註冊，請切換相同頁面上**的使用者自行註冊**按鈕。

![\[顯示 cognito 目錄設定的身分管理頁面\]](http://docs.aws.amazon.com/zh_tw/res/latest/ug/images/id-management-cognito-directory.png)


## 使用者在流程中註冊/登入
<a name="setting-up-cognito-users-user-signin"></a>

如果已啟用**使用者自我註冊**，您可以為使用者提供 Web 應用程式的 URL。在那裡，使用者會找到顯示**還不是使用者的選項？ 在此註冊**。

![\[具有自我註冊選項的使用者登入頁面\]](http://docs.aws.amazon.com/zh_tw/res/latest/ug/images/user-sign-up.png)


## 註冊流程
<a name="setting-up-cognito-users-signup"></a>

選擇**還不是使用者的使用者？ 在此註冊**時，系統會要求您輸入其電子郵件和密碼來建立 帳戶。

![\[建立使用者自我註冊的帳戶頁面\]](http://docs.aws.amazon.com/zh_tw/res/latest/ug/images/create-account.png)


在註冊流程中，系統會要求使用者輸入電子郵件中收到的驗證碼，以完成註冊程序。

![\[驗證碼項目頁面\]](http://docs.aws.amazon.com/zh_tw/res/latest/ug/images/verify-email.png)


如果停用自我註冊，使用者將不會看到註冊連結。管理員必須在 RES 外部設定 Amazon Cognito 中的使用者。（請參閱《*Amazon Cognito 開發人員指南*》中的以[管理員身分建立使用者帳戶](https://docs.aws.amazon.com/cognito/latest/developerguide/how-to-create-user-accounts.html)。)

![\[驗證碼項目頁面\]](http://docs.aws.amazon.com/zh_tw/res/latest/ug/images/user-sign-in.png)


## 登入頁面選項
<a name="setting-up-cognito-users-login"></a>

如果同時啟用 SSO 和 Amazon Cognito，則會顯示**使用組織 SSO 登入**的選項。當使用者按一下該選項時，它會將其重新路由至其 SSO 登入頁面。根據預設，如果啟用 Amazon Cognito，使用者將會進行身分驗證。

![\[使用者登入頁面，其中包含註冊、驗證帳戶或使用組織 SSO 登入的選項\]](http://docs.aws.amazon.com/zh_tw/res/latest/ug/images/org-sso-sign-in.png)


## Constraints
<a name="setting-up-cognito-users-constraints"></a>
+ 您的 Amazon Cognito **群組名稱**最多可有六個字母；只接受小寫字母。
+ Amazon Cognito 註冊不允許兩個具有相同使用者名稱但不同網域地址的電子郵件地址。
+ 如果同時啟用 Active Directory 和 Amazon Cognito，且系統偵測到重複的使用者名稱，則僅允許 Active Directory 使用者進行身分驗證。管理員應採取步驟，不設定 Amazon Cognito 與其 Active Directory 之間的重複使用者名稱。
+ Cognito 使用者將無法啟動 Windows 型 VDIs因為 RES 不支援 Windows 執行個體的 Amazon Cognito 型身分驗證。

## Amazon Cognito 使用者的管理員群組
<a name="admin-group-cognito-users-sync"></a>

根據預設，RES 會在`admins`群組管理員權限中授予 Cognito 使用者。若要將使用者新增至 Cognito `admins`群組：

1. 導覽至 [Amazon Cognito 主控台](https://console.aws.amazon.com/cognito/home)，然後選擇用於 RES 的現有使用者集區。

1. 導覽至**使用者管理**下的**群組**，然後選擇**建立群組。**

1. 在**建立群組**頁面上的**群組名稱中，**輸入 `admins`。

1. 選取您建立的`admins`群組，然後選擇**新增使用者至群組**以新增 Cognito 使用者。

1. 遵循 手動啟動 Cognito 同步[同步](#setting-up-cognito-users-sync)。

Amazon Cognito 同步成功後，新增至`admins`群組的使用者會收到管理員權限。

## 同步
<a name="setting-up-cognito-users-sync"></a>

RES 每小時會從 Amazon Cognito 同步其資料庫與使用者和群組資訊。屬於群組「管理員」的任何使用者都會在其 VDIs 中獲得 sudo 權限。

您也可以從 Lambda 主控台手動啟動同步。

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

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

1. 搜尋 Cognito 同步 Lambda。此 Lambda 遵循此命名慣例：`{RES_ENVIRONMENT_NAME}_cognito-sync-lambda`。

1. 選取**測試**。

1. 在**測試事件**區段中，選擇右上角**的測試**按鈕。事件內文格式並不重要。

## Cognito 的安全考量
<a name="setting-up-cognito-users-security"></a>

在 2024.12 版本之前，預設會啟用[使用者活動記錄](https://docs.aws.amazon.com/cognito/latest/developerguide/feature-plans-features-plus.html)，這是 Amazon Cognito Plus 計劃功能的一部分。此功能已從基準部署中移除，為想要嘗試 RES 的客戶節省成本。您可以視需要重新啟用此功能，以符合組織的雲端安全設定。

# Active Directory 同步
<a name="active-directory-sync"></a>



## 執行期組態
<a name="active-directory-sync-runtime"></a>

安裝期間，與 Active Directory (AD) 相關的所有 AWS CloudFormation 參數都是選用的。

![\[Active Directory 選用詳細資訊\]](http://docs.aws.amazon.com/zh_tw/res/latest/ug/images/active-directory-details.png)


對於執行時間提供的任何秘密 ARN （例如 `ServiceAccountCredentialsSecretArn`或 `DomainTLSCertificateSecretArn`)，請務必將下列標籤新增至 RES 的秘密，以取得讀取秘密值的許可：
+ 金鑰：`res:EnvironmentName`、值：`<your RES environment name>`
+ 金鑰：`res:ModuleName`、值：`directoryservice`

Web 入口網站中的任何 AD 組態更新都會在下一次排定的 AD 同步期間自動取得 （每小時）。使用者可能需要在變更 AD 組態後重新設定 SSO （例如，如果切換到不同的 AD)。

初次安裝後，管理員可以在**身分管理**頁面下的 RES Web 入口網站中檢視或編輯 AD 組態：

![\[Active Directory 網域組態設定詳細資訊\]](http://docs.aws.amazon.com/zh_tw/res/latest/ug/images/res-active-directory-domain.png)


![\[Active Directory 同步快顯\]](http://docs.aws.amazon.com/zh_tw/res/latest/ug/images/active-directory-synchronization.png)


### 自動加入 Active Directory
<a name="toggle-join-active-directory"></a>

管理員可以設定**自動加入 Active Directory ** 設定，以在 VDI 啟動期間控制目錄網域加入行為。

 ** 組態選項： **
+  ** 已啟用 **- 在啟動期間自動將 Windows 和 Linux VDIs 加入目錄網域。
+  ** 已停用 ** - 關閉自動加入網域。Linux 執行個體可以在有或沒有加入網域的情況下啟動。Windows 執行個體需要網域加入才能成功啟動，因此管理員必須在其自訂啟動指令碼中包含網域加入邏輯。

**重要**  
 如果您停用此設定，請確認您的 Windows 執行個體自訂啟動指令碼包含必要的網域加入邏輯。

### 其他設定
<a name="active-directory-sync-addl-settings"></a>

**篩選條件**

管理員可以使用使用者篩選和群組篩選選項篩選**要同步的使用者**或**群組**。篩選條件必須遵循 [LDAP 篩選條件語法](https://ldap.com/ldap-filters/)。範例篩選條件為：

```
(sAMAccountname=<user>)
```

**自訂 SSSD 參數**

管理員可以提供索引鍵/值對的字典，其中包含要寫入叢集執行個體上 SSSD 組態檔案 `[domain_type/DOMAIN_NAME]` 區段的 SSSD 參數和值。RES 會自動套用 SSSD 更新 – 它會重新啟動叢集執行個體上的 SSSD 服務，並觸發 AD 同步程序。

一些常見的自訂 SSSD 設定包括：
+ `enumerate` - 設定為「true」以快取目錄服務中的所有使用者和群組項目。停用此功能可能會為使用者的第一次登入新增短暫延遲。
+ `ldap_id_mapping` - 設定為「true」，將 LDAP/AD 使用者和群組 IDs 映射至 Linux 系統上的本機 UIDs GIDs。啟用此功能可以改善與現有 POSIX 指令碼和應用程式的相容性。

如需 SSSD 組態檔案的完整說明，請參閱 的 Linux 手冊頁面`SSSD`。

![\[其他 SSSD 組態\]](http://docs.aws.amazon.com/zh_tw/res/latest/ug/images/res-additional-sssd-config1.png)


SSSD 參數和值必須與 RES SSSD 組態相容，如下所述：
+ `id_provider` 由 RES 內部設定，不得修改。
+ AD 相關組態，包括 `ldap_uri`、 `ldap_search_base``ldap_default_bind_dn`和 `ldap_default_authtok` 是根據其他提供的 AD 組態設定，不得修改。

下列範例會啟用 SSSD 日誌的偵錯層級：

![\[顯示輸入新金鑰和值對的其他 SSSD 組態\]](http://docs.aws.amazon.com/zh_tw/res/latest/ug/images/res-additional-sssd-config2.png)


## 初始 AD 同步後的電子郵件更新 (2025.09 及更新版本）
<a name="ad-sync-update-email"></a>

如果 Active Directory 使用者的電子郵件地址已變更，管理員可以手動啟動 AD 同步，或等待下一次排定的 AD 同步，以收取變更並同步至 RES。

## 如何手動啟動或停止同步 (2025.03 及更新版本）
<a name="active-directory-sync-start-stop"></a>

導覽至**身分管理**頁面，然後選擇 **Active Directory 網域**容器中的**啟動 AD 同步**按鈕，以隨需觸發 AD 同步。

![\[Active Directory 網域組態\]](http://docs.aws.amazon.com/zh_tw/res/latest/ug/images/res-ad-directory-sync1.png)


若要停止持續的 AD 同步，請選取 **Active Directory 網域**容器中的**停止 AD 同步**按鈕。

![\[Active Directory 網域組態頁面顯示停止同步的選項\]](http://docs.aws.amazon.com/zh_tw/res/latest/ug/images/res-ad-directory-sync2.png)


您也可以在 **Active Directory 網域**容器中檢查 AD 同步狀態和最新的同步時間。

![\[Active Directory 網域組態頁面顯示最新的同步時間\]](http://docs.aws.amazon.com/zh_tw/res/latest/ug/images/res-ad-directory-sync3.png)


## 如何手動執行同步 (2024.12 和 2024.12.01 版）
<a name="active-directory-sync-manually"></a>

Active Directory 同步程序已從 Cluster Manager 內部主機移至背景中的一次性 Amazon Elastic Container Service (ECS) 任務。程序排程為每小時執行一次，您可以在`<res-environment-name>-ad-sync-cluster`叢集下的 Amazon ECS 主控台中找到執行中的 ECS 任務。

**若要手動啟動它：**

1. 導覽至 [Lambda 主控台](https://console.aws.amazon.com/lambda)並搜尋稱為 的 lambda`<res-environment>-scheduled-ad-sync`。

1. 開啟 Lambda 函數並前往**測試** 

1. 在**事件 JSON** 中輸入下列項目：

   ```
   {
       "detail-type": "Scheduled Event"
   }
   ```

1. 選擇**測試**。

1. 在 **CloudWatch** 下觀察執行中 AD Sync 任務的日誌 → **日誌群組** → `/<environment-name>/ad-sync`。您將看到每個執行中 ECS 任務的日誌。選取最新的 以檢視日誌。

**注意**  
如果您變更 AD 參數或新增 AD 篩選條件，RES 會將新使用者新增至新指定的參數，並移除先前已同步且不再包含在 LDAP 搜尋空間中的使用者。
RES 無法移除主動指派給專案的使用者或群組。您必須從專案中移除使用者，讓 RES 從環境中移除他們。

## SSO 組態
<a name="active-directory-sync-sso-config"></a>

提供 AD 組態後，使用者必須設定單一登入 (SSO)，才能以 AD 使用者身分登入 RES Web 入口網站。SSO 組態已從**一般設定**頁面移至新的**身分管理**頁面。如需設定 SSO 的詳細資訊，請參閱 [身分管理](manage-users.md)。

# 使用 IAM Identity Center 設定單一登入 (SSO)
<a name="sso-idc"></a>

如果您還沒有連接到受管 Active Directory 的身分中心，請從 開始[步驟 1：設定身分中心](#set-up-identity-center)。如果您已有與受管 Active Directory 連線的身分中心，請從 開始[步驟 2：連線至身分中心](#connect-identity-center)。

**注意**  
如果您要部署至 GovCloud 區域，請在 AWS GovCloud (US) 部署 Research and Engineering Studio 的分割區帳戶中設定 SSO。

## 步驟 1：設定身分中心
<a name="set-up-identity-center"></a>

### 啟用 IAM Identity Center
<a name="enabling-identity-center"></a>

1. 登入 [AWS Identity and Access Management 主控台](https://console.aws.amazon.com/iam)。

1. 開啟 **Identity Center**。

1. 選擇**啟用**。

1. 選擇**使用 啟用 AWS Organizations**。

1. 選擇**繼續**。

**注意**  
請確定您位於擁有受管 Active Directory 的相同區域。

### 將 IAM Identity Center 連線至受管 Active Directory
<a name="connecting-identity-center-ad"></a>

啟用 IAM Identity Center 之後，請完成下列建議的設定步驟：

1. 在導覽窗格中，選擇**設定**。

1. 在**身分來源**下，選擇**動作**，然後選擇**變更身分來源**。

1. 在**現有目錄**下，選取您的目錄。

1. 選擇**下一步**。

1. 檢閱您的變更**ACCEPT**，然後在確認方塊中輸入 。

1. 選擇**變更身分來源**。

### 將使用者和群組同步到身分中心
<a name="syncing-identity-center"></a>

在 中所做的變更[將 IAM Identity Center 連線至受管 Active Directory](#connecting-identity-center-ad)完成後，會出現綠色確認橫幅。

1. 在確認橫幅中，選擇**開始引導設定**。

1. 從**設定屬性映射**中，選擇**下一步**。

1. 在**使用者**區段下，輸入您要同步的使用者。

1. 選擇**新增**。

1. 選擇**下一步**。

1. 檢閱您的變更，然後選擇**儲存組態**。

1. 同步程序可能需要幾分鐘的時間。如果您收到有關使用者未同步的警告訊息，請選擇**繼續同步**。

### 啟用使用者
<a name="enabling-users"></a>

1. 從功能表中，選擇**使用者**。

1. 選取您要為其啟用存取權的 （使用者）。

1. 選擇**啟用使用者存取**。

## 步驟 2：連線至身分中心
<a name="connect-identity-center"></a>

### 在 IAM Identity Center 中設定應用程式
<a name="setup-application-identity-center"></a>

1. 開啟 [IAM Identity Center 主控台](https://console.aws.amazon.com/singlesignon/)。

1. 選擇 **Applications (應用程式)**。

1. 選擇**新增應用程式**。

1. 在**設定偏好設定**下，選擇**我有想要設定的應用程式**。

1. 在**應用程式類型**下，選擇 **SAML 2.0。**

1. 選擇**下一步**。

1. 輸入您要使用的顯示名稱和描述。

1. 在 **IAM Identity Center 中繼資料**下，複製 **IAM Identity Center SAML 中繼資料**檔案的連結。使用 RES 入口網站設定 IAM Identity Center 時，您將需要此項目。

1. 在**應用程式屬性**下，輸入您的**應用程式啟動 URL**。例如 `<your-portal-domain>/sso`。

1. 在**應用程式 ACS URL** 下，從 RES 入口網站輸入重新導向 URL。若要尋找此項目：

   1. 在**環境管理**下，選擇**一般設定**。

   1. 選取**身分提供者**索引標籤。

   1. 在**單一登入**下，您會找到 **SAML 重新導向 URL**。

1. 在**應用程式 SAML 對象**下，輸入 Amazon Cognito URN。

   若要建立 urn：

   1. 從 RES 入口網站開啟**一般設定**。

   1. 在**身分提供者**索引標籤下，找到**使用者集區 ID**。

   1. 將**使用者集區 ID** 新增至此字串：

      ```
      urn:amazon:cognito:sp:<user_pool_id>
      ```

1. 輸入 Amazon Cognito URN 之後，請選擇**提交**。

### 設定應用程式的屬性映射
<a name="configure-attribute-mappings"></a>

1. 從 **Identity Center** 開啟所建立應用程式的詳細資訊。

1. 選擇**動作**，然後選擇**編輯屬性映射**。

1. 在**主旨**下，輸入 **\$1\$1user:email\$1**。

1. 在**格式**下，選擇 **emailAddress**。

1. 選擇**新增屬性映射**。

1. **在應用程式中的使用者屬性**下，輸入 'email'。

1. 在 **IAM Identity Center 中此字串值或使用者屬性的映射**下，輸入 **\$1\$1user:email\$1**。

1. 在**格式**下，輸入「未指定」。

1. 選擇**儲存變更**。

### 在 IAM Identity Center 中將使用者新增至應用程式
<a name="add-users-to-application"></a>

1. 從 Identity Center 開啟所建立應用程式的**指派使用者**，然後選擇**指派使用者**。

1. 選取您要指派應用程式存取權的使用者。

1. 選擇 **Assign users (指派使用者)**。

### 在 RES 環境中設定 IAM Identity Center
<a name="setup-sso-environment"></a>

1. 在環境**管理**下的研究和工程 Studio 環境中，開啟**一般設定**。

1. 開啟**身分提供者**索引標籤。

1. 在**單一登入下**，選擇**編輯** (**狀態**旁邊）。

1. 使用下列資訊完成表單：

   1. 選擇 **SAML**。

   1. 在**提供者名稱**下，輸入使用者易記的名稱。

   1. 選擇**輸入中繼資料文件端點 URL**。

   1. 輸入您在 期間複製的 URL[在 IAM Identity Center 中設定應用程式](#setup-application-identity-center)。

   1. 在**提供者電子郵件屬性**下，輸入 'email'。

   1. 選擇**提交**。

1. 重新整理頁面並檢查**狀態**是否顯示為已啟用。

# 為單一登入 (SSO) 設定您的身分提供者
<a name="configure-id-federation"></a>

Research and Engineering Studio 與任何 SAML 2.0 身分提供者整合，以驗證使用者對 RES 入口網站的存取。這些步驟提供與您選擇的 SAML 2.0 身分提供者整合的指示。如果您想要使用 IAM Identity Center，請參閱 [使用 IAM Identity Center 設定單一登入 (SSO)](sso-idc.md)。

**注意**  
使用者的電子郵件必須符合 IDP SAML 聲明和 Active Directory。您需要將身分提供者與 Active Directory 連線，並定期同步使用者。

**Topics**
+ [

## 設定您的身分提供者
](#configure-id-federation_config-idp)
+ [

## 設定 RES 以使用您的身分提供者
](#configure-id-federation_config-res)
+ [

## 在非生產環境中設定您的身分提供者
](#configure-id-federation-demo-env)
+ [

## 偵錯 SAML IdP 問題
](#configure-id-federation_debug)

## 設定您的身分提供者
<a name="configure-id-federation_config-idp"></a>

本節提供設定身分提供者的步驟，其中包含來自 RES Amazon Cognito 使用者集區的資訊。

1. RES 假設您有一個 AD (AWS 受管 AD 或自我佈建 AD)，其使用者身分允許存取 RES 入口網站和專案。將您的 AD 連接到您的身分服務提供者，並同步使用者身分。檢查身分提供者的文件，了解如何連接 AD 和同步使用者身分。例如，請參閱*AWS IAM Identity Center 《 使用者指南*》中的[使用 Active Directory 做為身分來源](https://docs.aws.amazon.com/singlesignon/latest/userguide/gs-ad.html)。

1. 在您的身分提供者 (IdP) 中為 RES 設定 SAML 2.0 應用程式。此組態需要下列參數：
   + **SAML 重新導向 URL** — IdP 用來傳送 SAML 2.0 回應給服務提供者的 URL。
**注意**  
根據 IdP，SAML 重新導向 URL 可能有不同的名稱：  
應用程式 URL
聲明消費者服務 (ACS) URL
ACS POST 繫結 URL

**若要取得 URL**

     1. 以**管理員**或 **clusteradmin** 身分登入 RES。

     1. 導覽至**環境管理** ⇒ **一般設定** ⇒ **身分提供者**。

     1. 選擇 **SAML 重新導向 URL**。
   + **SAML 對象 URI** — 服務提供者端 SAML 對象實體的唯一 ID。
**注意**  
根據 IdP，SAML 對象 URI 可能有不同的名稱：  
ClientID
應用程式 SAML 對象
SP 實體 ID

     以下列格式提供輸入。

     ```
     urn:amazon:cognito:sp:user-pool-id
     ```

**尋找您的 SAML 對象 URI**

     1. 以**管理員**或 **clusteradmin** 身分登入 RES。

     1. 導覽至**環境管理** ⇒ **一般設定** ⇒ **身分提供者**。

     1. 選擇**使用者集區 ID**。

1. 張貼到 RES 的 SAML 聲明必須將下列欄位/宣告設定為使用者的電子郵件地址：
   + SAML 主體或 NameID
   + SAML 電子郵件

1. 您的 IdP 會根據組態，將欄位/宣告新增至 SAML 聲明。RES 需要這些欄位。根據預設，大多數供應商會自動填入這些欄位。如果您必須設定，請參閱下列欄位輸入和值。

   
   + **AudienceRestriction** — 設定為 `urn:amazon:cognito:sp:user-pool-id`。以 Amazon Cognito 使用者集區的 ID 取代 *user-pool-id*。

     ```
     <saml:AudienceRestriction>
         <saml:Audience> urn:amazon:cognito:sp:user-pool-id
     </saml:AudienceRestriction>
     ```
   + **回應** — `InResponseTo`設定為 `https://user-pool-domain/saml2/idpresponse`。將 *user-pool-domain* 取代為您的 Amazon Cognito 使用者集區的網域名稱。

     ```
     <saml2p:Response 
       Destination="https://user-pool-domain/saml2/idpresponse"
       ID="id123" 
       InResponseTo="_dd0a3436-bc64-4679-a0c2-cb4454f04184" 
       IssueInstant="Date-time stamp" 
       Version="2.0" 
       xmlns:saml2p="urn:oasis:names:tc:SAML:2.0:protocol" 
       xmlns:xs="http://www.w3.org/2001/XMLSchema">
     ```
   + **SubjectConfirmationData** — `Recipient`設定為您的使用者集區`saml2/idpresponse`端點和`InResponseTo`原始 SAML 請求 ID。

     ```
     <saml2:SubjectConfirmationData 
       InResponseTo="_dd0a3436-bc64-4679-a0c2-cb4454f04184" 
       NotOnOrAfter="Date-time stamp" 
       Recipient="https://user-pool-domain/saml2/idpresponse"/>
     ```
   + **AuthnStatement** — 將 設定為下列項目：

     ```
     <saml2:AuthnStatement AuthnInstant="2016-10-30T13:13:28.152TZ"
       SessionIndex="32413b2e54db89c764fb96ya2k" SessionNotOnOrAfter="2016-10-30T13:13:28">
         <saml2:SubjectLocality />
         <saml2:AuthnContext>
             <saml2:AuthnContextClassRef>urn:oasis:names:tc:SAML:2.0:ac:classes:Password</saml2:AuthnContextClassRef>
         </saml2:AuthnContext>
     </saml2:AuthnStatement>
     ```

1. 如果您的 SAML 應用程式有登出 URL 欄位，請將其設定為：`<domain-url>/saml2/logout`。

**取得網域 URL**

   1. 以**管理員**或 **clusteradmin** 身分登入 RES。

   1. 導覽至**環境管理** ⇒ **一般設定** ⇒ **身分提供者**。

   1. 選擇**網域 URL**。

1. 如果您的 IdP 接受簽署憑證以與 Amazon Cognito 建立信任，請下載 Amazon Cognito 簽署憑證並將其上傳到您的 IdP。

**若要取得簽署憑證**

   1. 開啟 Amazon Cognito [主控台](https://console.aws.amazon.com/cognito/v2/idp/user-pools/)。

   1. 選取您的使用者集區。您的使用者集區應該是 `res-<environment name>-user-pool`。

   1. 選取**登入體驗**索引標籤。

   1. 在**聯合身分提供者登入**區段中，選擇**檢視簽署憑證**。  
![\[在所選使用者集區的聯合身分提供者登入區段中，具有檢視簽署憑證按鈕的 Amazon Cognito 主控台。\]](http://docs.aws.amazon.com/zh_tw/res/latest/ug/images/cognito-user-pool-signing-cert.png)

      您可以使用此憑證來設定 Active Directory IDP、新增 `relying party trust`，以及啟用此依賴方的 SAML 支援。
**注意**  
這不適用於 Keycloak 和 IDC。

   1. 應用程式設定完成後，請下載 SAML 2.0 應用程式中繼資料 XML 或 URL。您可以在下一節中使用它。

## 設定 RES 以使用您的身分提供者
<a name="configure-id-federation_config-res"></a>

**完成 RES 的單一登入設定**

1. 以**管理員**或 **clusteradmin** 身分登入 RES。

1. 導覽至**環境管理** ⇒ **一般設定** ⇒ **身分提供者**。  
![\[RES 中的環境設定使用者介面，包括單一登入的 區段。\]](http://docs.aws.amazon.com/zh_tw/res/latest/ug/images/environment-settings.png)

1. 在**單一登入**下，選擇狀態指示燈旁的編輯圖示，以開啟**單一登入組態**頁面。  
![\[RES 中的單一登入組態使用者介面。\]](http://docs.aws.amazon.com/zh_tw/res/latest/ug/images/sso-config.png)

   1. 針對**身分提供者**，選擇 **SAML**。

   1. 在**提供者名稱**中，輸入身分提供者的唯一名稱。
**注意**  
不允許使用下列名稱：  
Cognito
IdentityCenter

   1. 在**中繼資料文件來源**下，選擇適當的選項並上傳中繼資料 XML 文件，或從身分提供者提供 URL。

   1. 在**提供者電子郵件屬性**中，輸入文字值 `email`。

   1. 選擇**提交**。

1. 重新載入**環境設定**頁面。如果組態正確，則會啟用單一登入。

## 在非生產環境中設定您的身分提供者
<a name="configure-id-federation-demo-env"></a>

如果您使用提供的[外部資源](prerequisites.md#external-resources)來建立非生產 RES 環境，並將 IAM Identity Center 設定為您的身分提供者，您可能想要設定不同的身分提供者，例如 Okta。RES SSO 啟用表單會要求三個組態參數：

1. 供應商名稱 — 無法修改

1. 中繼資料文件或 URL — 可以修改

1. 供應商電子郵件屬性 — 可以修改

**若要修改中繼資料文件和提供者電子郵件屬性，請執行下列動作：**

1.  前往 Amazon Cognito 主控台。

1. 從導覽中，選擇**使用者集區**。

1. 選取您的使用者集區以檢視**使用者集區概觀**。

1. 從**登入體驗**索引標籤，前往**聯合身分提供者登入**並開啟您設定的身分提供者。

1. 一般而言，您只需要變更中繼資料，並讓屬性映射保持不變。若要更新**屬性映射**，請選擇**編輯**。若要更新**中繼資料文件**，請選擇**取代中繼資料**。  
![\[Amazon CognitoUser 集區概觀。\]](http://docs.aws.amazon.com/zh_tw/res/latest/ug/images/res-attributemetadata.png)

1. 如果您編輯屬性映射，則需要更新 DynamoDB 中的`<environment name>.cluster-settings`資料表。

   1. 開啟 DynamoDB 主控台，然後從導覽中選擇**資料表**。

   1. 尋找並選取`<environment name>.cluster-settings`資料表，然後從**動作**功能表中選取**探索項目**。

   1. 在**掃描或查詢項目**下，前往**篩選條件**並輸入下列參數：
      + **屬性名稱** — `key`
      + **值** — `identity-provider.cognito.sso_idp_provider_email_attribute`

   1. 選擇**執行**。

1. 在**傳回的項目**下，尋找`identity-provider.cognito.sso_idp_provider_email_attribute`字串，然後選擇**編輯**以修改字串，以符合您在 Amazon Cognito 中的變更。  
![\[Amazon CognitoUpdate DynamoDB 中傳回的篩選條件和項目。\]](http://docs.aws.amazon.com/zh_tw/res/latest/ug/images/res-scanqueryitems.png)

## 偵錯 SAML IdP 問題
<a name="configure-id-federation_debug"></a>

**SAML 追蹤器** — 您可以將此擴充功能用於 Chrome 瀏覽器，以追蹤 SAML 請求並檢查 SAML 聲明值。如需詳細資訊，請參閱 Chrome Web Store 中的 [ SAML 追蹤器](https://chromewebstore.google.com/detail/saml-tracer/mpdajninpobndbfcldcmbpnnbhibjmch?pli=1)。

**SAML 開發人員工具** — OneLogin 提供可用於解碼 SAML 編碼值的工具，並檢查 SAML 聲明中的必要欄位。如需詳細資訊，請參閱 OneLogin [網站上的 Base 64 Decode \$1 Inflate](https://www.samltool.com/decode.php)。

**Amazon CloudWatch Logs** — 您可以在 CloudWatch Logs 中檢查 RES 日誌是否有錯誤或警告。您的日誌位於名稱格式為 的日誌群組中`/res-environment-name/cluster-manager`。

**Amazon Cognito 文件** — 如需 SAML 與 Amazon Cognito 整合的詳細資訊，請參閱《*Amazon Cognito 開發人員指南*》中的[將 SAML 身分提供者新增至使用者集](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pools-saml-idp.html)區。

# 設定使用者的密碼
<a name="setting-user-passwords"></a>

1. 從[Directory Service 主控台中，](https://console.aws.amazon.com/directoryservicev2/)選取所建立堆疊的目錄。

1. 在**動作**功能表下，選擇**重設使用者密碼**。

1. 選取使用者並輸入新密碼。

1. 選擇**重設密碼**。

# 建立子網域
<a name="create-subdomains"></a>

如果您使用的是自訂網域，則需要設定子網域來支援入口網站的 Web 和 VDI 部分。

**注意**  
如果您要部署到 GovCloud 區域，請在託管網域公有託管區域的商業分割區帳戶中設定 Web 應用程式和 VDI 子網域。

1. 開啟 [Route 53 主控台](https://console.aws.amazon.com/route53/)。

1. 尋找您建立的網域，然後選擇**建立記錄**。

1. 輸入 'web' 做為**記錄名稱**。

1. 選取 **CNAME** 做為**記錄類型**。

1. 針對**值**，輸入您在初始電子郵件中收到的連結。

1. 選擇**建立記錄**。

1. 若要建立 VDC 的記錄，請擷取 NLB 地址。

   1. 開啟 [AWS CloudFormation 主控台](https://console.aws.amazon.com/cloudformation)。

   1. 選擇 `<environment-name>-vdc`。

   1. 選擇**資源**並開啟 `<environmentname>-vdc-external-nlb`。

   1. 從 NLB 複製 DNS 名稱。

1. 開啟 [Route 53 主控台](https://console.aws.amazon.com/route53/)。

1. 尋找您的網域，然後選擇**建立記錄**。

1. 在**記錄名稱**下，輸入 `vdc`。

1. 在**記錄類型**下，選取 **CNAME**。

1. 針對 NLB，輸入 DNS。

1. 選擇**建立記錄**。

# 建立 ACM 憑證
<a name="acm-certificate"></a>

根據預設，RES 會使用網域 amazonaws.com 在應用程式負載平衡器下託管 Web 入口網站。若要使用您自己的網域，您需要設定您提供或從 AWS Certificate Manager (ACM) 請求的公有 SSL/TLS 憑證。如果您使用 ACM，您將收到需要提供做為參數 AWS 的資源名稱，以加密用戶端和 Web 服務主機之間的 SSL/TLS 通道。

**提示**  
如果您要部署外部資源示範套件，則需要在 中部署外部資源堆疊`PortalDomainName`時，在 中輸入您選擇的網域[建立外部資源](create-external-resources.md)。

**若要建立自訂網域的憑證：**

1. 從 主控台開啟 [AWS Certificate Manager](https://console.aws.amazon.com/acm/home#/certificates/request) 以請求公有憑證。如果您要在 GovCloud 區域中部署，請在 GovCloud 分割區帳戶中建立憑證。

1. 選擇**請求公有憑證**，然後選擇**下一步**。

1. 在**網域名稱**下，請求 `*.PortalDomainName`和 的憑證`PortalDomainName`。

1. 在**驗證方法**下，選擇 **DNS 驗證**。

1. 選擇**請求**。

1. 從**憑證清單中，開啟您請求的**憑證。每個憑證將具有**待定驗證**做為狀態。
**注意**  
如果您沒有看到憑證，請重新整理清單。

1. 執行以下任意一項：
   + **商業部署：**

     從每個請求憑證的憑證**詳細資訊**中，選擇在 **Route 53 中建立記錄**。憑證的狀態應變更為**已發行**。
   + **GovCloud 部署：**

     如果您要部署在 GovCloud 區域中，請複製 CNAME 金鑰和值。從商業分割區帳戶，使用 值在公有託管區域中建立新的記錄。憑證的狀態應變更為**已發行**。

1. 複製新的憑證 ARN 以輸入 做為 的參數`ACMCertificateARNforWebApp`。

# Amazon CloudWatch Logs
<a name="log-groups"></a>

Research and Engineering Studio 在安裝期間會在 CloudWatch 中建立下列日誌群組。如需預設保留，請參閱下表：


| CloudWatch Log 群組 | Retention | 
| --- | --- | 
| /aws/lambda/<installation-stack-name>-cluster-endpoints | 永不過期 | 
| /aws/lambda/<installation-stack-name>-cluster-manager-scheduled-ad-sync | 永不過期 | 
| /aws/lambda/<installation-stack-name>-cluster-settings | 永不過期 | 
| /aws/lambda/<installation-stack-name>-oauth-credentials | 永不過期 | 
| /aws/lambda/<installation-stack-name>-self-signed-certificate | 永不過期 | 
| /aws/lambda/<installation-stack-name>-update-cluster-prefix-list | 永不過期 | 
| /aws/lambda/<installation-stack-name>-vdc-scheduled-event-transformer | 永不過期 | 
| /aws/lambda/<installation-stack-name>-vdc-update-cluster-manager-client-scope | 永不過期 | 
| /<installation-stack-name>/cluster-manager | 3 個月 | 
| /<installation-stack-name>/vdc/controller | 3 個月 | 
| /<installation-stack-name>/vdc/dcv-broker | 3 個月 | 
| /<installation-stack-name>/vdc/dcv-connection-gateway | 3 個月 | 

如果您想要變更日誌群組的預設保留，您可以前往 [CloudWatch 主控台](https://console.aws.amazon.com/cloudwatch)，並依照指示在 [ CloudWatch Logs 中變更日誌資料保留](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/Working-with-log-groups-and-streams.html#SettingLogRetention)。

# 設定自訂許可界限
<a name="permission-boundaries"></a>

 自 2024.04 起，您可以選擇透過連接自訂許可界限來修改 RES 建立的角色。透過提供許可界限的 ARN 做為 IAMPermissionBoundary 參數的一部分，可以將自訂許可界限定義為 RES CloudFormation 安裝的一部分。如果此參數為空，則不會在任何 RES 角色上設定許可界限。以下是 RES 角色操作所需的動作清單。請確定您計劃使用的任何許可界限明確允許下列動作：

```
[
    {
        "Effect": "Allow",
        "Resource": "*",
        "Sid": "ResRequiredActions",
        "Action": [
            "access-analyzer:*",
            "account:GetAccountInformation",
            "account:ListRegions",
            "acm:*",
            "airflow:*",
            "amplify:*",
            "amplifybackend:*",
            "amplifyuibuilder:*",
            "aoss:*",
            "apigateway:*",
            "appflow:*",
            "application-autoscaling:*",
            "appmesh:*",
            "apprunner:*",
            "aps:*",
            "athena:*",
            "auditmanager:*",
            "autoscaling-plans:*",
            "autoscaling:*",
            "backup-gateway:*",
            "backup-storage:*",
            "backup:*",
            "batch:*",
            "bedrock:*",
            "budgets:*",
            "ce:*",
            "cloud9:*",
            "cloudformation:*",
            "cloudfront:*",
            "cloudtrail-data:*",
            "cloudtrail:*",
            "cloudwatch:*",
            "codeartifact:*",
            "codebuild:*",
            "codeguru-profiler:*",
            "codeguru-reviewer:*",
            "codepipeline:*",
            "codestar-connections:*",
            "codestar-notifications:*",
            "codestar:*",
            "cognito-identity:*",
            "cognito-idp:*",
            "cognito-sync:*",
            "comprehend:*",
            "compute-optimizer:*",
            "cur:*",
            "databrew:*",
            "datapipeline:*",
            "datasync:*",
            "dax:*",
            "detective:*",
            "devops-guru:*",
            "dlm:*",
            "dms:*",
            "drs:*",
            "dynamodb:*",
            "ebs:*",
            "ec2-instance-connect:*",
            "ec2:*",
            "ec2messages:*",
            "ecr:*",
            "ecs:*",
            "eks:*",
            "elastic-inference:*",
            "elasticache:*",
            "elasticbeanstalk:*",
            "elasticfilesystem:*",
            "elasticloadbalancing:*",
            "elasticmapreduce:*",
            "elastictranscoder:*",
            "es:*",
            "events:*",
            "firehose:*",
            "fis:*",
            "fms:*",
            "forecast:*",
            "fsx:*",
            "geo:*",
            "glacier:*",
            "glue:*",
            "grafana:*",
            "guardduty:*",
            "health:*",
            "iam:*",
            "identitystore:*",
            "imagebuilder:*",
            "inspector2:*",
            "inspector:*",
            "internetmonitor:*",
            "iot:*",
            "iotanalytics:*",
            "kafka:*",
            "kafkaconnect:*",
            "kinesis:*",
            "kinesisanalytics:*",
            "kms:*",
            "lambda:*",
            "lightsail:*",
            "logs:*",
            "memorydb:*",
            "mgh:*",
            "mobiletargeting:*",
            "mq:*",
            "neptune-db:*",
            "organizations:DescribeOrganization",
            "osis:*",
            "personalize:*",
            "pi:*",
            "pipes:*",
            "polly:*",
            "quicksight:*",
            "rds-data:*",
            "rds:*",
            "redshift-data:*",
            "redshift-serverless:*",
            "redshift:*",
            "rekognition:*",
            "resiliencehub:*",
            "resource-groups:*",
            "route53:*",
            "route53domains:*",
            "route53resolver:*",
            "rum:*",
            "s3:*",
            "sagemaker:*",
            "scheduler:*",
            "schemas:*",
            "sdb:*",
            "secretsmanager:*",
            "securityhub:*",
            "serverlessrepo:*",
            "servicecatalog:*",
            "servicequotas:*",
            "ses:*",
            "signer:*",
            "sns:*",
            "sqs:*",
            "ssm:*",
            "ssmmessages:*",
            "states:*",
            "storagegateway:*",
            "sts:*",
            "support:*",
            "tag:GetResources",
            "tag:GetTagKeys",
            "tag:GetTagValues",
            "textract:*",
            "timestream:*",
            "transcribe:*",
            "transfer:*",
            "translate:*",
            "vpc-lattice:*",
            "waf-regional:*",
            "waf:*",
            "wafv2:*",
            "wellarchitected:*",
            "wisdom:*",
            "xray:*"
        ]
    }
]
```

# 設定 RES 就緒 AMIs
<a name="res-ready-ami"></a>

透過支援 RES 的 Amazon Machine Image (AMIs)，您可以在自訂 AMI 上預先安裝虛擬桌面執行個體 VDIs) 的 RES AMIs 相依性。使用 RES-ready AMIs 可改善使用預先製作映像的 VDI 執行個體開機時間。使用 EC2 Image Builder，您可以將 AMIs 建置並註冊為新的軟體堆疊。如需映像建置器的詳細資訊，請參閱[映像建置器使用者指南](https://docs.aws.amazon.com/imagebuilder/latest/userguide/what-is-image-builder.html)。

開始之前，您必須[部署最新版本的 RES](update-the-product.md)。

**重要**  
在 RES 2025.06.01 之前建立的 RES 就緒 AMIs 與 RES 2025.06.01 和所有後續版本不相容。將您的 RES 環境從 2025.06.01 之前的版本升級至最新的版本時，您必須重建所有 RES 就緒AMIs。

**Topics**
+ [

## 準備 IAM 角色以存取 RES 環境
](#prepare-role)
+ [

## 建立 EC2 Image Builder 元件
](#image-builder-component)
+ [

## 準備您的 EC2 Image Builder 配方
](#prepare-recipe)
+ [

## 設定 EC2 Image Builder 基礎設施
](#configure-ib-infrastructure)
+ [

## 設定映像建置器映像管道
](#image-builder-pipeline)
+ [

## 執行映像建置器映像管道
](#run-image-pipeline)
+ [

## 在 RES 中註冊新的軟體堆疊
](#register-res-ready-stack)

## 準備 IAM 角色以存取 RES 環境
<a name="prepare-role"></a>

若要從 EC2 Image Builder 存取 RES 環境服務，您必須建立或修改名為 RES-EC2InstanceProfileForImageBuilder 的 IAM 角色。如需有關設定 IAM 角色以在映像建置器中使用的資訊，請參閱《*映像建置器使用者指南*》中的 [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/imagebuilder/latest/userguide/image-builder-setting-up.html#image-builder-IAM-prereq)。

**您的角色需要：**
+ 包含 Amazon EC2 服務的信任關係。
+ AmazonS3ReadOnlyAccess、AmazonSSMManagedInstanceCore 和 EC2InstanceProfileForImageBuilder 政策。

## 建立 EC2 Image Builder 元件
<a name="image-builder-component"></a>

遵循《[映像建置器使用者指南》中的指示，使用映像建置器主控台建立元件](https://docs.aws.amazon.com/imagebuilder/latest/userguide/create-component-console.html)。 **

**輸入您的元件詳細資訊：**

1. 針對**類型**，選擇**建置**。

1. 針對**映像作業系統 (OS)**，選擇 Linux 或 Windows。

1. 針對**元件名稱**，輸入有意義的名稱，例如 **research-and-engineering-studio-vdi-<operating-system>**。

1. 輸入元件的版本編號，並選擇性地新增描述。

   ```
   key : value 
   ```

1. 在**定義文件中**，輸入下列定義檔案。如果您遇到任何錯誤，YAML 檔案會區分空間，而且最可能的原因。
**重要**  
在定義檔案中，如果您的 RES 環境版本不是最新的，請將下載 URI (`- source: 's3://research-engineering-studio-us-east-1/releases/latest/res-installation-scripts.tar.gz'`) **latest**中的 取代為確切的版本編號 （例如 **2025.06**)。

------
#### [ Linux ]

   ```
   #  Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
   #
   #  Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance
   #  with the License. A copy of the License is located at
   #
   #      http://www.apache.org/licenses/LICENSE-2.0
   #
   #  or in the 'license' file accompanying this file. This file is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES
   #  OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions
   #  and limitations under the License.
   name: research-and-engineering-studio-vdi-linux
   description: An RES EC2 Image Builder component to install required RES software dependencies for Linux VDI.
   schemaVersion: 1.0
   parameters:
     - GPUFamily:
         type: string
         description: GPU family (NONE, NVIDIA, or AMD)
         default: NONE
   phases:
     - name: build
       steps:
         - name: PrepareRESBootstrap
           action: ExecuteBash
           onFailure: Abort
           maxAttempts: 3
           inputs:
             commands:
               - "mkdir -p /root/bootstrap/logs"
               - "mkdir -p /root/bootstrap/latest"
         - name: DownloadRESLinuxInstallPackage
           action: S3Download
           onFailure: Abort
           maxAttempts: 3
           inputs:
             - source: "s3://research-engineering-studio-us-east-1/releases/latest/res-installation-scripts.tar.gz"
               destination: "/root/bootstrap/res-installation-scripts/res-installation-scripts.tar.gz"
         - name: RunInstallScript
           action: ExecuteBash
           onFailure: Abort
           maxAttempts: 3
           inputs:
             commands:
               - "cd /root/bootstrap/res-installation-scripts"
               - "tar -xf res-installation-scripts.tar.gz"
               - "cd scripts/virtual-desktop-host/linux"
               - "/bin/bash install.sh -g {{ GPUFamily }}"
         - name: RebootAfterInstall
           action: Reboot
           onFailure: Abort
           maxAttempts: 3
           inputs:
               delaySeconds: 0
         - name: RunInstallPostRebootScript
           action: ExecuteBash
           onFailure: Abort
           maxAttempts: 3
           inputs:
             commands:
               - "cd /root/bootstrap/res-installation-scripts/scripts/virtual-desktop-host/linux"
               - 'sed -i ''/^export AWS_DEFAULT_PROFILE="bootstrap_profile"$/d'' install_post_reboot.sh'
               - "/bin/bash install_post_reboot.sh -g {{ GPUFamily }}"
         - name: PreventAL2023FromUninstallingCronie
           action: ExecuteBash
           onFailure: Abort
           maxAttempts: 3
           inputs:
             commands:
               - "rm -f /tmp/imagebuilder_service/crontab_installed"
   ```

------
#### [ Windows ]

   ```
   #  Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
   #
   #  Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance
   #  with the License. A copy of the License is located at
   #
   #      http://www.apache.org/licenses/LICENSE-2.0
   #
   #  or in the 'license' file accompanying this file. This file is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES
   #  OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions
   #  and limitations under the License.
   name: research-and-engineering-studio-vdi-windows
   description: An RES EC2 Image Builder component to install required RES software dependencies for Windows VDI.
   schemaVersion: 1.0
   
   phases:
     - name: build
       steps:
          - name: CreateRESBootstrapFolder
            action: CreateFolder
            onFailure: Abort
            maxAttempts: 3
            inputs:
               - path: 'C:\Users\Administrator\RES\Bootstrap'
                 overwrite: true
          - name: DownloadRESWindowsInstallPackage
            action: S3Download
            onFailure: Abort
            maxAttempts: 3
            inputs:
               - source: 's3://research-engineering-studio-us-east-1/releases/latest/res-installation-scripts.tar.gz'
                 destination: '{{ build.CreateRESBootstrapFolder.inputs[0].path }}\res-installation-scripts.tar.gz'
          - name: RunInstallScript
            action: ExecutePowerShell
            onFailure: Abort
            maxAttempts: 3
            inputs:
               commands:
                   - 'cd {{ build.CreateRESBootstrapFolder.inputs[0].path }}'
                   - 'tar -xf res-installation-scripts.tar.gz'
                   - 'Import-Module .\scripts\virtual-desktop-host\windows\Install.ps1'
                   - 'Install-WindowsEC2Instance -PrebakeAMI'
   ```

------

1. 建立任何選用標籤，然後選擇**建立元件**。

## 準備您的 EC2 Image Builder 配方
<a name="prepare-recipe"></a>

EC2 Image Builder 配方會定義基本映像，以做為建立新映像的起點，以及您新增的一組元件來自訂映像，並確認一切如預期般運作。您必須建立或修改配方，以使用必要的 RES 軟體相依性來建構目標 AMI。如需配方的詳細資訊，請參閱[管理配方](https://docs.aws.amazon.com/imagebuilder/latest/userguide/manage-recipes.html)。

RES 支援下列映像作業系統：
+ Amazon Linux 2 (x86 和 ARM64)
+ Amazon Linux 2023 (x86 和 ARM64) 
+ RHEL 8 (x86) 和 9 (x86)
+ Rocky Linux 9 (x86)
+ Ubuntu 22.04.3 (x86)
+ Ubuntu 24.04.3 (x86)
+ Windows Server 2019、2022 (x86)
+ Windows 10、11 (x86)

**注意**  
從 2026.03 版開始，Amazon Linux 2 和 RHEL 8 不再包含在預設軟體堆疊中。如有需要，仍然可以註冊具有這些作業系統的自訂軟體堆疊。

------
#### [ Create a new recipe ]

1. 在 開啟 EC2 Image Builder 主控台[https://console.aws.amazon.com/imagebuilder](https://console.aws.amazon.com/imagebuilder)。

1. 在**已儲存資源**下，選擇**映像配方**。

1. 選擇**建立映像配方**。

1. 輸入唯一的名稱和版本號碼。

1. 選取 RES 支援的基本映像。

1. 在**執行個體組態**下，如果未預先安裝 SSM 代理程式，請進行安裝。在**使用者資料**和任何其他必要的使用者資料中輸入資訊。
**注意**  
如需如何安裝 SSM 代理程式的資訊，請參閱：  
在[ Linux 的 EC2 執行個體上手動安裝 SSM 代理](https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-manual-agent-install.html)程式。
在適用於[ Windows Server 的 EC2 執行個體上手動安裝和解除安裝 SSM Agent](https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-install-win.html)。

1. 對於 Linux 型配方，將 Amazon 受管`aws-cli-version-2-linux`建置元件新增至配方。對於以 Windows 為基礎的配方，將 Amazon 受管`aws-cli-version-2-windows`建置元件新增至配方。RES 安裝指令碼使用 AWS CLI 提供 DynamoDB 叢集設定組態值的 VDI 存取權。

1. 新增為 Linux 或 Windows 環境建立的 EC2 Image Builder 元件。
**重要**  
您必須先新增 `aws-cli-version-2-linux`（適用於 Linux) 或 ` aws-cli-version-2-windows`（適用於 Windows) 組建元件，才能依序新增這些元件。  

![\[元件頁面顯示已新增的建置元件\]](http://docs.aws.amazon.com/zh_tw/res/latest/ug/images/res-ami-build-components.png)


1. （建議） 新增 Amazon 受管`simple-boot-test-<linux-or-windows>`測試元件，以確認可以啟動 AMI。這是最低建議。您可以選取其他符合您需求的測試元件。

1. 視需要完成任何選用區段，新增任何其他所需的元件，然後選擇**建立配方**。

------
#### [ Modify a recipe ]

如果您有現有的 EC2 Image Builder 配方，您可以新增下列元件來使用它：

1. 對於 Linux 型配方，將 Amazon 受管`aws-cli-version-2-linux`建置元件新增至配方。對於以 Windows 為基礎的配方，將 Amazon 受管`aws-cli-version-2-windows`建置元件新增至配方。RES 安裝指令碼使用 AWS CLI 提供 DynamoDB 叢集設定組態值的 VDI 存取權。

1. 新增為 Linux 或 Windows 環境建立的 EC2 Image Builder 元件。
**重要**  
您必須先新增 `aws-cli-version-2-linux`（適用於 Linux) 或 ` aws-cli-version-2-windows`（適用於 Windows) 組建元件，才能依序新增這些元件。  

![\[元件頁面顯示已新增的建置元件\]](http://docs.aws.amazon.com/zh_tw/res/latest/ug/images/res-ami-build-components.png)


1. 視需要完成任何選用區段，新增任何其他所需的元件，然後選擇**建立配方**。

------

## 設定 EC2 Image Builder 基礎設施
<a name="configure-ib-infrastructure"></a>

您可以使用基礎設施組態來指定映像建置器用來建置和測試映像建置器映像的 Amazon EC2 基礎設施。若要搭配 RES 使用，您可以選擇建立新的基礎設施組態，或使用現有的基礎設施組態。
+ 若要建立新的基礎設施組態，請參閱[建立基礎設施組態](https://docs.aws.amazon.com/imagebuilder/latest/userguide/create-infra-config.html)。
+ 若要使用現有的基礎設施組態，[請更新基礎設施組態](https://docs.aws.amazon.com/imagebuilder/latest/userguide/update-infra-config.html)。

**若要設定 Image Builder 基礎設施：**

1. 針對 **IAM 角色**，輸入您先前在 中設定的角色[準備 IAM 角色以存取 RES 環境](#prepare-role)。

1. 針對**執行個體類型**，選擇至少具有 4 GB 記憶體的類型，並支援您選擇的基本 AMI 架構。請參閱 [Amazon EC2 執行個體類型](https://aws.amazon.com/ec2/instance-types/)。

1. 對於 **VPC、子網路和安全群組**，您必須允許網際網路存取以下載軟體套件。還必須允許存取 RES 環境的 `cluster-settings` DynamoDB 資料表和 Amazon S3 叢集儲存貯體。

## 設定映像建置器映像管道
<a name="image-builder-pipeline"></a>

映像建置器映像管道會組合基礎映像、用於建置和測試的元件、基礎設施組態和分發設定。若要為 RES 就緒 AMIs 設定映像管道，您可以選擇建立新的管道，或使用現有的管道。如需詳細資訊，請參閱[《映像建置器使用者指南》中的建立和更新 AMI 映像管道](https://docs.aws.amazon.com/imagebuilder/latest/userguide/ami-image-pipelines.html)。 **

------
#### [ Create a new Image Builder pipeline ]

1. 在 開啟映像建置器主控台[https://console.aws.amazon.com/imagebuilder](https://console.aws.amazon.com/imagebuilder)。

1. 從導覽窗格中，選擇**映像管道**。

1. 選擇**建立映像管道**。

1. 輸入唯一名稱、選用描述、排程和頻率來指定管道詳細資訊。

1. 針對**選擇配方**，選擇**使用現有配方**，然後選取在 中建立的配方[準備您的 EC2 Image Builder 配方](#prepare-recipe)。確認您的配方詳細資訊正確無誤。

1. 針對**定義映像建立程序**，根據使用案例選擇預設或自訂工作流程。在大多數情況下，預設工作流程已足夠。如需詳細資訊，請參閱[為您的 EC2 Image Builder 管道設定映像工作流程](https://docs.aws.amazon.com/imagebuilder/latest/userguide/pipeline-workflows.html)。

1. 針對**定義基礎設施組態**，選擇**選擇現有的基礎設施組態**，然後選取在 中建立的基礎設施組態[設定 EC2 Image Builder 基礎設施](#configure-ib-infrastructure)。確認您的基礎設施詳細資訊正確無誤。

1. 針對**定義分佈設定**，選擇**使用服務預設值建立分佈設定**。輸出映像必須位於與您的 RES 環境 AWS 區域 相同的 中。使用服務預設值，會在使用映像建置器的區域中建立映像。

1. 檢閱管道詳細資訊，然後選擇**建立管道**。

------
#### [ Modify an existing Image Builder pipeline ]

1. 若要使用現有的管道，請修改詳細資訊以使用在 中建立的配方[準備您的 EC2 Image Builder 配方](#prepare-recipe)。

1. 選擇**儲存變更**。

------

## 執行映像建置器映像管道
<a name="run-image-pipeline"></a>

若要產生設定的輸出映像，您必須啟動映像管道。建置程序可能需要長達一小時的時間，具體取決於映像配方中的元件數量。

**若要執行映像管道：**

1. 從**映像管道中**，選取在 中建立的管道[設定映像建置器映像管道](#image-builder-pipeline)。

1. 在**動作**中，選擇**執行管道**。

## 在 RES 中註冊新的軟體堆疊
<a name="register-res-ready-stack"></a>

1. 遵循 中的指示[軟體堆疊 (AMIs)](software-stacks.md)來註冊軟體堆疊。

1. 針對 **AMI ID**，輸入內建於 之輸出映像的 AMI ID[執行映像建置器映像管道](#run-image-pipeline)。

# 可設定的 DCV 工作階段驗證閾值
<a name="dcv-session-validation-thresholds"></a>

當 VDI 工作階段恢復或啟動時，RES 會重複檢查 DCV 工作階段是否已到達就緒狀態。如果工作階段未在特定重試次數內就緒，則會標示為 ERROR。

這些重試閾值可透過 `<env-name>.cluster-settings` DynamoDB 資料表設定，讓管理員根據其環境進行調校。這對於由於自訂 AMI 組態、其他軟體安裝或其他 VDI 設定邏輯而導致開機時間較長的環境特別有用。


| 金錀 | Description | 預設值 | 
| --- | --- | --- | 
| vdc.validation\$1request\$1threshold | 將未就緒工作階段標記為 ERROR 之前重試次數上限 | 50 | 
| vdc.session\$1deleted\$1threshold | 將刪除的工作階段標記為 ERROR 之前重試次數上限 | 15 | 

# 在 RES 安裝後設定自訂網域
<a name="setup-custom-domain-after-install"></a>

**注意**  
*先決條件*：您必須先將憑證和 PrivateKey 內容存放在 Secrets Manager 秘密中，才能執行這些步驟。

**將憑證新增至 Web 用戶端**

1. 更新連接至外部-alb 負載平衡器接聽程式的憑證：

   1. 導覽至 AWS 主控台中 **EC2** > **Load Balancing** > Load Balancer 下的 RES 外部**負載平衡器**。

   1. 搜尋遵循命名慣例 的負載平衡器`<env-name>-external-alb`。

   1. 檢查連接至負載平衡器的接聽程式。

   1. 更新具有與新憑證詳細資訊連接之預設 SSL/TLS 憑證的接聽程式。

   1. 儲存您的變更。

1. 在叢集設定資料表中：

   1. 在 DynamoDB -> Tables -> 中尋找叢集設定資料表`<env-name>.cluster-settings`。

   1. 前往**探索項目**並**依屬性篩選 – **名稱 "key"、類型 "string"、條件 "contains" 和值 "external\$1alb"。

   1. `cluster.load_balancers.external_alb.certificates.provided` 設定為 True。

   1. 更新 的值`cluster.load_balancers.external_alb.certificates.custom_dns_name`。這是 Web 使用者介面的自訂網域名稱。

   1. 更新 的值`cluster.load_balancers.external_alb.certificates.acm_certificate_arn`。這是存放在 Amazon Certificate Manager (ACM) 中對應憑證的 Amazon Resource Name (ARN)。

1. 更新您為 Web 用戶端建立的對應 Route53 子網域記錄，以指向外部 alb 負載平衡器的 DNS 名稱`<env-name>-external-alb`。

1. 如果已在環境中設定 SSO，請使用與您在 RES Web 入口網站中**環境管理** > **身分管理** > **單一登入** > **狀態** > **編輯**按鈕中最初使用的相同輸入來重新設定 SSO。

**將憑證新增至 VDIs 或輪換憑證**

1. 將下列標籤新增至秘密，授予 RES 應用程式對秘密執行 GetSecret 操作的許可：
   + `res:EnvironmentName` : `<env-name>`
   + `res:ModuleName` : `virtual-desktop-controller`

1. 在叢集設定資料表中：

   1. 在 DynamoDB -> Tables -> 中尋找叢集設定資料表`<env-name>.cluster-settings`。

   1. 前往**探索項目**並**依屬性篩選 – **名稱 "key"、類型 "string"、條件 "contains" 和值 "dcv\$1connection\$1gateway"。

   1. `vdc.dcv_connection_gateway.certificate.provided` 設定為 True。

   1. 更新 的值`vdc.dcv_connection_gateway.certificate.custom_dns_name`。這是 VDI 存取的自訂網域名稱。

   1. 更新 的值`vdc.dcv_connection_gateway.certificate.certificate_secret_arn`。這是存放憑證內容之秘密的 ARN。

   1. 更新 的值`vdc.dcv_connection_gateway.certificate.private_key_secret_arn`。這是存放私有金鑰內容之秘密的 ARN。

1. 更新用於閘道執行個體的啟動範本：

   1. 在 AWS 主控台的 **EC2** > Auto Scaling > **Auto Scaling** 群組下開啟 **Auto Scaling 群組**。

   1. 選取對應至 RES 環境的閘道自動擴展群組。名稱遵循命名慣例 `<env-name>-vdc-gateway-asg`。

   1. 在詳細資訊區段中尋找並開啟啟動範本。

   1. 在**詳細資訊** > **動作** > 選擇**修改範本** （建立新版本）。

   1. 向下捲動至**進階詳細資訊**。

   1. 捲動至最底部，至**使用者資料**。

   1. 尋找單字 `CERTIFICATE_SECRET_ARN`和 `PRIVATE_KEY_SECRET_ARN`。使用提供給存放憑證 （請參閱步驟 2.ARNs 更新這些值。

   1. 確定 Auto Scaling 群組已設定為使用最近建立的啟動範本版本 （從 Auto Scaling 群組頁面）。

1. 更新您為虛擬桌面建立的對應 Route53 子網域記錄，以指向外部 nlb 負載平衡器的 DNS 名稱：`<env-name>-external-nlb`。

1. 終止現有的 dcv-gateway 執行個體： `<env-name>-vdc-gateway`並等待新的執行個體啟動。dcv-gateway 執行個體會在每天 12：00 AM （午夜） UTC 檢查儲存在 Secrets Manager 中的憑證和私有金鑰值的變更，並在更新時自動擷取和套用新值。