

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

# 使用 Terraform 在 Amazon EC2 和 Amazon FSx 上部署 SQL Server 容錯移轉叢集執行個體
<a name="deploy-sql-server-failover-cluster-instances-on-amazon-ec2-and-amazon-fsx"></a>

*Mark Hudson 和 Matt Burgess，Amazon Web Services*

## 總結
<a name="deploy-sql-server-failover-cluster-instances-on-amazon-ec2-and-amazon-fsx-summary"></a>

此模式使用 Terraform 在 Amazon Elastic Compute Cloud (Amazon EC2) 上的 Windows Server 容錯移轉叢集 (WSFC) 節點之間部署 SQL Server 容錯移轉叢集執行個體 (FCIs)。此外， 模式會使用 Amazon FSx 共用儲存來儲存資料和日誌檔案。

當 SQL Server 資料庫遷移至 時 AWS，第一個選擇是 Amazon RDS for SQL Server。不過，有時 Amazon RDS for SQL Server 不適合，而且 SQL Server 必須部署在高度可用的架構中的 Amazon EC2 上。在此解決方案中，SQL Server FCIs會跨 WSFC 節點安裝。

此模式隨附的 Terraform 模組最多可佈建兩個 Amazon EC2 SQL Server 執行個體。Amazon FSx for Windows File Server 檔案系統可做為仲裁見證，並存放共用的資料和日誌檔案。無論設定的執行個體數量為何，SQL Server 執行個體節點一律會建立並加入 FCI 叢集，以確保環境同位。（通常，一個執行個體設定為開發，兩個執行個體用於生產環境。) 對於使用兩個節點以獲得高可用性的組態，會佈建內部 Network Load Balancer。Network Load Balancer 使用 FCI 叢集上設定的運作狀態探查來識別哪個節點是主要節點。

## 先決條件和限制
<a name="deploy-sql-server-failover-cluster-instances-on-amazon-ec2-and-amazon-fsx-prereqs"></a>

**先決條件**
+ 作用中 AWS 帳戶。
+ 在個別可用區域中具有兩個子網路的 Amazon Virtual Private Cloud (Amazon VPC)。
+ Amazon VPC [DHCP 選項集](https://docs.aws.amazon.com/vpc/latest/userguide/DHCPOptionSet.html)。設定網域名稱以解析您的 Active Directory 網域名稱，以及網域和 NetBIOS 名稱伺服器以指向您的 Active Directory 網域控制站。如需詳細資訊，請參閱[其他資訊](#deploy-sql-server-failover-cluster-instances-on-amazon-ec2-and-amazon-fsx-additional)中的 *VPC 組態*。
+ AWS Directory Service for Microsoft Active Directory (AWS Managed Microsoft AD).
+ 自訂 Amazon Machine Image (AMI)。如需詳細資訊，請參閱[其他資訊](#deploy-sql-server-failover-cluster-instances-on-amazon-ec2-and-amazon-fsx-additional)中的 *AMI 組態*。
+ 包含 SQL Server ISO 映像的 Amazon Simple Storage Service (Amazon S3) 儲存貯體。只有在搭配提供的 `component.yaml` 檔案使用 [EC2 Image Builder](https://docs.aws.amazon.com/imagebuilder/latest/userguide/what-is-image-builder.html) 來建置自訂 AMI 時，才需要此先決條件。
+ AWS Key Management Service (AWS KMS) 加密金鑰。
+ 根據預設，SQL Server 是使用開發人員版本產品金鑰進行安裝。生產系統應該使用由相關變數傳遞給模組的有效產品金鑰。

**限制**
+ 此解決方案需要 AWS Managed Microsoft AD。不過，如果您願意，您可以改用自我管理 Active Directory 實作。若要這麼做，請修改包含的 Amazon FSx Terraform 模組以移除 `active_directory_id` 屬性。然後，新增自我管理 Active Directory 所需的四個屬性，如 [Terraform 文件](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/fsx_windows_file_system)所示。
+ SQL Server 設定為使用混合模式身分驗證。如果您願意，您可以使用僅限 Windows 的身分驗證。若要這樣做，請在提供的使用者資料指令碼中，移除提供給`setup.exe`命令的 `/SECURITYMODE`和 `/SAPWD` 參數。您可以移除`sql_accounts.tf`檔案，也可以修改`instances.tf`檔案以移除`sql_sa_password`項目。
+ 刪除部署的叢集時，您必須在 Active Directory 中移除對應的虛擬電腦物件和個別電腦物件。若要移除物件，請使用 Active Directory 管理工具。
+ 有些 AWS 服務 不適用於所有 AWS 區域。如需區域可用性，請參閱[AWS 依區域的服務](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/)。如需特定端點，請參閱[服務端點和配額](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html)，然後選擇服務的連結。

**產品版本**

此解決方案已使用下列版本進行測試：
+ Windows Server 2019
+ SQL Server 2019
+ [Terraform 0.13.0 版](https://developer.hashicorp.com/terraform/language/v1.1.x/upgrade-guides/0-13)

## Architecture
<a name="deploy-sql-server-failover-cluster-instances-on-amazon-ec2-and-amazon-fsx-architecture"></a>

**來源技術堆疊**
+ SQL Server

**目標技術堆疊**
+ 使用 Amazon EC2 的 WSFC 節點上的 SQL Server FCI
+ Amazon FSx for Windows File Server
+ Amazon S3 儲存貯體
+ AWS Secrets Manager
+ AWS Managed Microsoft AD
+ AWS KMS
+ AWS Identity and Access Management (IAM)

**目標架構**

下圖顯示此解決方案的架構。

![\[在 Amazon EC2 上跨 Windows Server 容錯移轉叢集節點部署 SQL Server 容錯移轉叢集執行個體的架構。\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/patterns/images/pattern-img/45f3ab19-d240-4353-ab6e-f6e565f537a4/images/0bff16f2-94e7-4e86-91ea-7ab5f3725620.png)


上圖顯示以下項目：
+ 提供 EC2 執行個體存取 AWS KMS 和 Secrets Manager 的 IAM 角色
+ 兩個 SQL Server 節點部署在跨兩個可用區域的私有子網路中的 Amazon EC2 執行個體上
+ Network Load Balancer，用於促進與作用中 SQL Server 執行個體的連線 （設定單一節點叢集時未部署）
+ Amazon FSx for Windows File Server 檔案系統部署在兩個私有子網路中，供 SQL Server 節點共用儲存
+ 用於存放 Active Directory 和 SQL Server 登入資料和組態的 Secrets Manager
+ 用於存放 SQL Server 安裝映像的 Amazon S3 儲存貯體
+ AWS Managed Microsoft AD 適用於 Windows 身分驗證
+ AWS KMS 用於建立加密金鑰

**自動化和擴展**

您可以使用 [GitHub 儲存庫](https://github.com/aws-samples/cluster-amazon-elastic-compute-cloud-amazon-fsx-microsoft-sql-server)中的 Terraform 模組來自動化目標架構的部署。您必須修改 `terraform.tfvars` 檔案，以包含您環境特有的變數值。Amazon S3 儲存貯體、 AWS Managed Microsoft AD 元件、 AWS KMS 加密金鑰和某些秘密是此部署的先決條件，不包含在 Terraform 程式碼中。

## 工具
<a name="deploy-sql-server-failover-cluster-instances-on-amazon-ec2-and-amazon-fsx-tools"></a>

**AWS 服務**
+ [AWS Directory Service for Microsoft Active Directory](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/directory_microsoft_ad.html) 可讓您的目錄感知工作負載 AWS 和資源在 中使用 Microsoft Active Directory AWS 雲端。在此模式中， AWS Managed Microsoft AD 用於 Windows Server 和 SQL Server 身分驗證，以及 DNS。
+ [Amazon Elastic Compute Cloud (Amazon EC2)](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/concepts.html) 在 AWS 雲端中提供可擴展的運算容量。您可以視需要啟動任意數量的虛擬伺服器，，並快速進行擴展或縮減。在此模式中，SQL Server 容錯移轉叢集執行個體會安裝在 Amazon EC2 執行個體上。
+ [EC2 Image Builder](https://docs.aws.amazon.com/imagebuilder/latest/userguide/what-is-image-builder.html) 可協助您自動化自訂伺服器映像的建立、管理和部署。
+ [Amazon FSx for Windows File Server](https://docs.aws.amazon.com/fsx/latest/WindowsGuide/what-is.html) 在 Windows Server 上提供全受管共用儲存。在此模式中，FSx for Windows File Server 為 SQL Server 資料和日誌檔案以及規定人數見證提供共用儲存。
+ [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) 透過控制已驗證並獲授權使用的人員，協助您安全地管理對 AWS 資源的存取。
+ [AWS Key Management Service (AWS KMS)](https://docs.aws.amazon.com/kms/latest/developerguide/overview.html) 可協助您建立和控制密碼編譯金鑰，以協助保護您的資料。在此模式中，它會用來加密 Secrets Manager 秘密、Amazon Elastic Block Store (Amazon EBS) 磁碟區上的 SQL Server 儲存體，以及 FSx for Windows File Server 檔案系統。
+ [AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html) 可協助您將程式碼中的硬式編碼憑證 (包括密碼) 取代為 Secrets Manager 的 API 呼叫，以便透過程式設計方法來擷取機密。在此模式中，用於安裝和執行 SQL Server 的 Active Directory 登入資料、`sa`使用者登入資料和資料庫連線資訊會儲存在 Secrets Manager 中。
+ [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) 是一種雲端型物件儲存服務，可協助您儲存、保護和擷取任何數量的資料。此模式使用 Amazon S3 儲存貯體來存放 SQL Server 安裝映像。
+ [Amazon Virtual Private Cloud (Amazon VPC)](https://docs.aws.amazon.com/vpc/latest/userguide/what-is-amazon-vpc.html) 可協助您在已定義的虛擬網路中啟動 AWS 資源。此虛擬網路與您在自己的資料中心中操作的傳統網路相似，且具備使用 AWS可擴展基礎設施的優勢。

** ****其他工具**
+ [Microsoft SQL Server FCIs](https://learn.microsoft.com/en-us/sql/sql-server/failover-clusters/windows/always-on-failover-cluster-instances-sql-server?view=sql-server-ver15)安裝在 Windows Server 叢集節點之間。此外，它們可以跨多個子網路安裝。在此模式中，SQL Server FCI 執行個體會跨 WSFC 節點安裝。
+ [Terraform](https://www.terraform.io/) 是一種基礎設施即程式碼 (IaC) 工具，可協助您使用程式碼來佈建和管理雲端基礎設施和資源。在此模式中，Terraform 用於建立資源和設定 SQL Server FCI 執行個體。
+ [Windows Server 容錯移轉叢集](https://learn.microsoft.com/en-us/sql/sql-server/failover-clusters/windows/windows-server-failover-clustering-wsfc-with-sql-server?view=sql-server-ver15)提供基礎設施功能，可支援 SQL Server 等託管伺服器應用程式的高可用性。在此模式中，FCI 節點會利用 WSFC 功能，透過執行個體層級的備援提供本機高可用性。

**程式碼儲存庫**

此模式的程式碼可在 GitHub [cluster-amazon-elastic-compute-cloud-amazon-fsx-microsoft-sql-server](https://github.com/aws-samples/cluster-amazon-elastic-compute-cloud-amazon-fsx-microsoft-sql-server) 儲存庫中使用。下列資源可在 儲存庫中使用：
+ 提供解決方案概觀和其他安裝和使用資訊`README.md`的檔案
+ 一組基本的 Terraform 組態檔案和 Amazon FSx 特定模組，用於佈建此模式的元件
+ 做為 Amazon EC2 使用者資料指令碼執行的執行個體設定指令碼
+ Image Builder 可用來建立自訂 AMI 的 `component.yam`l 檔案

## 最佳實務
<a name="deploy-sql-server-failover-cluster-instances-on-amazon-ec2-and-amazon-fsx-best-practices"></a>

**安全性和修補**
+ AMI 先決條件安裝和組態是部署 SQL Server FCI 叢集的最低需求。可能需要其他軟體和組態，才能符合組織的標準和安全要求。
+ 部署之後，請持續修補 Windows。您可以直接修補執行中的執行個體，或使用最新的 Windows 修補程式建立新的 AMI，並使用新的 AMI 取代執行個體 （一次一個）。 每月 AWS 發行新的 Windows AMIs，其中包含最新的作業系統修補程式、驅動程式和啟動代理程式。我們建議您在啟動新執行個體或建置自訂映像時，檢查是否有最新的 AMI。
+ Amazon EC2 執行個體設定為允許所有傳出流量。在生產環境中部署時，應設定安全群組中的傳出規則，將此流量限制在所需的目的地。
+ FSx for Windows File Server 檔案系統可以自動記錄檔案共用和檔案和資料夾存取的稽核日誌，如果這是您環境中的需求，請將它們運送到您所需的目的地。
+ 定期自動輪換 Secrets Manager 秘密。對於 Amazon EC2 執行個體金鑰對，請考慮自動輪換解決方案，如[如何使用 AWS Secrets Manager 安全地存放和輪換 SSH 金鑰對](https://aws.amazon.com/blogs/security/how-to-use-aws-secrets-manager-securely-store-rotate-ssh-key-pairs/)所述。對於 Active Directory 登入資料和 SQL Server `sa`登入資料秘密，請根據您的密碼管理政策設定自動輪換。

**Active Directory 管理**
+ 在 FCI 叢集中，Windows 會在 Active Directory 中產生電腦名稱物件 (CNO)。CNO 會回應 DNS 請求，並將流量轉送至作用中的 SQL 節點。*我們不*建議使用此 Active Directory 提供的 DNS。TTL 太高，無法提供合理的容錯移轉時間，通常需要最多 5 分鐘才能反映新的主要 IP 地址。相反地，對於高可用性的安裝，內部 Network Load Balancer 設定為在 30 秒內容錯移轉。
+ 建立叢集需要 Active Directory 網域管理員。此需求是因為在 Active Directory 中建立叢集物件和修改許可所需的許可較高。不過，SQL Server 服務不需要以網域管理員身分執行。因此，我們建議您為此目的建立第二個 Active Directory 使用者。不過，如果服務將以網域管理員使用者身分執行，您可以消除此使用者。在這種情況下，網域管理員使用者必須新增至在此模式中建立的 Active Directory 管理員群組。

## 史詩
<a name="deploy-sql-server-failover-cluster-instances-on-amazon-ec2-and-amazon-fsx-epics"></a>

### 設定叢集登入資料
<a name="set-up-cluster-credentials"></a>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 建立 Active Directory 群組。 | 在 中 AWS Managed Microsoft AD，建立下列群組：[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/patterns/deploy-sql-server-failover-cluster-instances-on-amazon-ec2-and-amazon-fsx.html)如需詳細資訊，請參閱 AWS 文件中的[建立 AWS Managed Microsoft AD 群組](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/ms_ad_create_group.html)。 | AD 管理員 | 
| 建立 Active Directory 使用者。 | 在 中 AWS Managed Microsoft AD，建立下列使用者[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/patterns/deploy-sql-server-failover-cluster-instances-on-amazon-ec2-and-amazon-fsx.html)如需詳細資訊，請參閱 AWS 文件中的[建立 AWS Managed Microsoft AD 使用者](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/ms_ad_manage_users_groups_create_user.html)。 | AD 管理員 | 
| 將 Active Directory 登入資料新增至秘密。 | 使用 Secrets Manager 建立四個秘密來存放下列資訊：[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/patterns/deploy-sql-server-failover-cluster-instances-on-amazon-ec2-and-amazon-fsx.html)如需詳細資訊，請參閱 AWS 文件中的[建立 AWS Secrets Manager 秘密](https://docs.aws.amazon.com/secretsmanager/latest/userguide/create_secret.html)。 | AWS 管理員 | 

### 準備環境
<a name="prepare-the-environment"></a>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 建立 Windows AMI。 | 建立包含必要軟體和組態的自訂 Windows AMI。如需詳細資訊，請參閱[其他資訊](#deploy-sql-server-failover-cluster-instances-on-amazon-ec2-and-amazon-fsx-additional)。 | AWS 管理員、AWS DevOps | 
| 安裝 Terraform。 | 若要安裝 Terraform，請遵循 [Terraform](https://learn.hashicorp.com/tutorials/terraform/install-cli) 網站上的說明。 | AWS DevOps | 
| 複製儲存庫。 | 複製此模式的[儲存庫](https://github.com/aws-samples/cluster-amazon-elastic-compute-cloud-amazon-fsx-microsoft-sql-server)。如需詳細資訊，請參閱 GitHub [網站上的複製儲存庫](https://docs.github.com/en/repositories/creating-and-managing-repositories/cloning-a-repository)。 | AWS DevOps | 

### 安裝叢集
<a name="install-the-cluster"></a>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 修改 Terraform 變數。 | 更新提供的`terraform.tfvars`檔案，將所有變數設定為適合您環境的值。例如，更新 `domain_group_administrators`和 `domain_group_rdp_users`變數以使用您的 Active Directory 網域名稱和先前建立的 Active Directory 群組名稱。 | AWS DevOps | 
| 初始化 Terraform。 | 若要查看提議的部署，請導覽至儲存庫的根目錄。使用 Terraform 命令列界面 (CLI) 執行 `terraform init` ，然後執行 `terraform plan`。 | AWS DevOps | 
| 部署 資源。 | 若要部署 SQL 叢集和相關聯的資源，請使用 Terraform CLI 來執行 `terraform apply`。 | AWS DevOps、AWS 管理員 | 
| 驗證部署。 | 若要驗證部署，請使用下列步驟：[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/patterns/deploy-sql-server-failover-cluster-instances-on-amazon-ec2-and-amazon-fsx.html) | DBA、AWS 系統管理員 | 

## 疑難排解
<a name="deploy-sql-server-failover-cluster-instances-on-amazon-ec2-and-amazon-fsx-troubleshooting"></a>


| 問題 | 解決方案 | 
| --- | --- | 
| Terraform 佈建已完成，但 Windows 容錯移轉叢集管理員未顯示叢集已建立或叢集處於不可操作狀態。 | 叢集的整個資源和組態安裝可能需要 45-60 分鐘。Terraform 完成後，使用者資料指令碼必須執行到完成，這需要多次重新啟動。若要監控進度，您可以使用`C:\`磁碟機中的 `Checkpoints`目錄和 中的 SQL Server 安裝日誌`C:\Program Data\Microsoft SQL Server\150\Log`。完成後， `C:\ProgramData\Amazon\EC2-Windows\Launch\Log\UserdataExecution.log` 檔案中會提供**安裝完成**訊息。 | 
| 佈建正常運作的叢集之後，使用 Terraform 刪除並重新建立叢集不會成功。Terraform 完成，但叢集未正確設定。 | 佈建程序的一部分涉及向 Active Directory 和 Active Directory DNS 註冊機器和虛擬物件。當 Amazon EC2 叢集節點和叢集節點存在電腦名稱時，FCI 無法正確初始化，且佈建會失敗。若要修正此問題，請執行下列步驟：[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/patterns/deploy-sql-server-failover-cluster-instances-on-amazon-ec2-and-amazon-fsx.html) | 

## 相關資源
<a name="deploy-sql-server-failover-cluster-instances-on-amazon-ec2-and-amazon-fsx-resources"></a>

**AWS 文件**
+ [使用映像建置器建立自訂映像](https://docs.aws.amazon.com/imagebuilder/latest/userguide/create-images.html)
+ [建立 KMS 金鑰](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html)
+ [建立一般用途儲存貯體](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html)
+ [建立金鑰政策](https://docs.aws.amazon.com/kms/latest/developerguide/key-policy-overview.html)
+ [建立您的 AWS Managed Microsoft AD](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/ms_ad_getting_started_create_directory.html)

## 其他資訊
<a name="deploy-sql-server-failover-cluster-instances-on-amazon-ec2-and-amazon-fsx-additional"></a>

**Terraform 模組資訊**

此模組使用混合 AMI 組態和使用者資料組態，以取得佈建時間和穩定性的良好組合。在佈建期間，Windows 需要多次重新啟動和等待。已實作檢查點方法，以防止持久性使用者資料重新啟動期間無限迴圈。使用者資料設定為持久性。因此，使用者資料組態指令碼具有且必須繼續開發為等冪性。冪等性可簡化更新程序，允許在更新週期期間交換執行個體，無需手動設定即可重新加入或重新建立 FCI 叢集。

**SQL Server 連線字串和容錯移轉叢集**

模組將發佈秘密，其中包含應用於此資料庫連線字串的端點地址。秘密名稱遵循格式 `{environment_name}/sqlserver/{cluster_name}/endpoint`。對於只使用一個節點的安裝，您可以預期這是 Amazon EC2 執行個體 SQL Server 介面的 IP 地址。對於高可用性安裝 （兩個執行個體），您可以預期這是內部 Network Load Balancer 的 DNS 名稱。

此模組不支援容錯移轉叢集虛擬 IPs。虛擬 IP 必須保留在相同的子網路中才能運作。在 中 AWS，單一子網路無法跨越多個可用區域。因此，使用虛擬 IPs 會移除將此模組視為高度可用的能力。

每個 Amazon EC2 執行個體都會獲得三個私有 IP 地址。它們的 usai 如下所示：
+ **網路流量的主要 IP** – 輸出流量的來源 IP。
+ **FCI 通訊** – 用來維護容錯移轉叢集的狀態和同步。
+ **SQL Server (TCP 連接埠 1433)** – 接聽程式和 也會接聽活動訊號流量，以判斷哪個執行個體是主要執行個體。

**VPC 組態**

[先決條件](#deploy-sql-server-failover-cluster-instances-on-amazon-ec2-and-amazon-fsx-prereqs)會列出設定為使用 Active Directory 進行 DNS 解析的 DHCP 選項集。不過，此先決條件並非硬性要求。硬性要求是 EC2 執行個體必須能夠解析您的 Active Directory 網域名稱。您可以透過其他方式達成此要求，例如使用 Amazon Route 53 Resolver 端點。如需詳細資訊，請參閱[整合 Directory Service 的 DNS 解析與 Amazon Route 53 解析程式](https://aws.amazon.com/blogs/networking-and-content-delivery/integrating-your-directory-services-dns-resolution-with-amazon-route-53-resolvers/) (AWS 部落格文章）。

**AMI 組態**

此模式中使用的 AMI 必須包含下列必要軟體和組態：

1. 下載 SQL Server 2019 安裝檔案並將其展開至 `C:\SQL_Install_media`。

1. 安裝下列 Windows 功能：
   + `Install-WindowsFeature Failover-Clustering`
   + `Install-WindowsFeature RSAT-AD-PowerShell`
   + `Install-WindowsFeature RSAT-AD-Tools`
   + `Install-WindowsFeature RSAT-Clustering-Mgmt`
   + `Install-WindowsFeature RSAT-Clustering-PowerShell`
   + `Install-WindowsFeature RSAT-Clustering-CmdInterface`

1. 停用 Windows 防火牆，如下所示：
   + `Get-NetFirewallProfile | Set-NetFirewallProfile -Enabled False`

1. 啟用 CredSSP 身分驗證方法 (`<domain>`以組織的 Windows 網域名稱取代），如下所示：
   + `Enable-WSManCredSSP -Role "Server" -Force`
   + `Enable-WSManCredSSP -Role "Client" -DelegateComputer *.<domain>.com -Force`

1. 設定下列登錄機碼：
   + 允許 NTLM 身分驗證憑證：
     + `HKLM:\Software\Policies\Microsoft\Windows\CredentialsDelegation`
       + 名稱：`AllowFreshCredentialsWhenNTLMOnly`
       + 值：1
       + 類型：`REG_DWORD`
   + 允許本機網域電腦從 PowerShell 使用 NTLM：
     + 路徑： `HKLM:\Software\Policies\Microsoft\Windows\CredentialsDelegation\AllowFreshCredentialsWhenNTLMOnly`
       + 名稱：`1`
       + 值：`wsman/*.<domain>.com`
       + 類型：`REG_SZ`

1. 設定 [PowerShell Gallery](https://learn.microsoft.com/en-us/powershell/gallery/overview?view=powershellget-3.x)，如下所示：
   + `[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12`
   + `Install-PackageProvider -Name NuGet -MinimumVersion 2.8.5.201 -Force`
   + `Set-PSRepository -Name PSGallery -InstallationPolicy Trusted`

1. 安裝下列 Windows PowerShell 模組`*`：
   + `Install-Module -Name ComputerManagementDsc`
   + `Install-Module -Name FailOverClusterDsc`
   + `Install-Module -Name PSDscResources`
   + `Install-Module -Name xSmbShare`
   + `Install-Module -Name xActiveDirectory`
   + `Install-Module -Name SqlServer`

若要使用映像建置器建立 AMI，請遵循映像建置器文件中[使用 EC2 Image Builderconsole 精靈建立映像管道](https://docs.aws.amazon.com/imagebuilder/latest/userguide/start-build-image-pipeline.html)中的指示。若要使用先前的先決條件建立配方的元件，請使用下列步驟：

1. 從 [GitHub 儲存庫](https://github.com/aws-samples/cluster-amazon-elastic-compute-cloud-amazon-fsx-microsoft-sql-server)的 `ami `資料夾下載 [component.yaml](https://github.com/aws-samples/cluster-amazon-elastic-compute-cloud-amazon-fsx-microsoft-sql-server/blob/main/ami/component.yaml) 檔案。

1. 將內容複製到新的映像建置器元件。

1. 使用您的資訊更新下列預留位置：
   + `<domain>` – 您的 Active Directory 網域名稱
   + `<bucket_name>` – 包含 SQL Server 映像的 Amazon S3 儲存貯體名稱