

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

# 架構詳細資訊
<a name="architecture-details"></a>

本節說明[構成此解決方案的元件和 AWS 服務](#aws-services-in-this-solution)，以及這些元件如何一起運作的架構詳細資訊。

AWS 解決方案上的分散式負載測試包含三個高階元件：[前端](front-end.md)、[後端](back-end.md)和選用的 [MCP 伺服器](MCP-Server.md)。

# 前端
<a name="front-end"></a>

前端提供與解決方案互動的界面，包括：
+ 用於程式設計存取的負載測試 API
+ 用於建立、排程和執行效能測試的 Web 主控台
+ 用於 AI 輔助分析測試結果和錯誤的選用 MCP 伺服器

## 負載測試 API
<a name="load-testing-api"></a>

AWS 上的分散式負載測試會將 Amazon API Gateway 設定為託管解決方案的 RESTful API。使用者可以透過隨附的 Web 主控台、RESTful API 和選用的 MCP 伺服器，安全地與負載測試系統互動。API 做為「前門」，用於存取存放在 Amazon DynamoDB 中的測試資料。您也可以使用 APIs來存取您建置到解決方案中的任何延伸功能。

此解決方案會利用 Amazon Cognito 使用者集區的使用者身分驗證功能。成功驗證使用者後，Amazon Cognito 會發出 JSON Web 字符，用於允許主控台向解決方案的 APIs(Amazon API Gateway 端點） 提交請求。HTTPS 請求由主控台傳送至具有包含字符的授權標頭的 APIs。

根據請求，API Gateway 會叫用適當的 AWS Lambda 函數，對存放在 DynamoDB 資料表中的資料執行必要的任務、將測試案例儲存為 Amazon S3 中的 JSON 物件、擷取 Amazon CloudWatch 指標影像，並將測試案例提交至 AWS Step Functions 狀態機器。

如需解決方案 API 的詳細資訊，請參閱本指南的[分散式負載測試 API](https://docs.aws.amazon.com/solutions/latest/distributed-load-testing-on-aws/distributed-load-testing-api.html) 一節。

## Web 主控台
<a name="web-console"></a>

此解決方案包含 Web 主控台，可用來設定和執行測試、監控執行中的測試，以及檢視詳細的測試結果。主控台是使用 [Cloudscape](https://cloudscape.design/) 建置的 ReactJS 應用程式，這是用於建置直覺式 Web 應用程式的開放原始碼設計系統。主控台託管在 Amazon S3 中，並透過 Amazon CloudFront 存取。應用程式利用 AWS Amplify 與 Amazon Cognito 整合來驗證使用者。Web 主控台也包含檢視執行中測試的即時資料的選項，其中訂閱 AWS IoT Core 中的對應主題。

Web 主控台 URL 是 CloudFront 分佈網域名稱，可在 CloudFormation 輸出中作為**主控台**找到。啟動 CloudFormation 範本後，您也會收到一封電子郵件，其中包含 Web 主控台 URL 和登入的一次性密碼。

## MCP 伺服器 （選用）
<a name="mcp-server-front-end"></a>

選用的模型內容通訊協定 (MCP) 伺服器為 AI 開發工具提供額外的界面，以透過自然語言互動存取和分析負載測試資料。只有在解決方案部署期間選取 MCP Server 選項時，才會部署此元件。

MCP Server 可讓 AI 代理器查詢測試結果、分析效能指標，以及使用 Amazon Q、Claude 和其他 MCP 相容 AI 助理等工具深入了解負載測試資料。如需 MCP Server 架構和組態的詳細資訊，請參閱本節中的 [MCP Server](MCP-Server.md)。

# Backend
<a name="back-end"></a>

後端包含容器映像管道和負載測試引擎，您用來為測試產生負載。您可以透過前端與後端互動。此外，針對每個測試啟動的 AWS Fargate 任務上的 Amazon ECS 會以唯一的測試識別符 (ID) 標記。這些測試 ID 標籤可用來協助您監控此解決方案的成本。如需詳細資訊，請參閱《*AWS Billing and* [Cost Management 使用者指南》中的使用者定義的成本分配標籤](https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/custom-tags.html)。

## 容器映像管道
<a name="container-image-pipeline"></a>

此解決方案使用以 [Amazon Linux 2023 ](https://aws.amazon.com/linux/amazon-linux-2023/)建置的容器映像，做為已安裝 [Taurus](https://gettaurus.org/) 負載測試架構的基礎映像。Taurus 是一種開放原始碼測試自動化架構，支援 JMeter、K6、Locust 和其他測試工具。AWS 會在 Amazon Elastic Container Registry (Amazon ECR) 公有儲存庫中託管此映像。解決方案會使用此映像在 AWS Fargate 叢集上的 Amazon ECS 中執行任務。

如需詳細資訊，請參閱本指南的[容器映像自訂](https://docs.aws.amazon.com/solutions/latest/distributed-load-testing-on-aws/container-image.html)一節。

## 測試基礎設施
<a name="testing-infrastructure"></a>

除了主要 CloudFormation 範本之外，解決方案還提供區域範本，以啟動在多個區域中執行測試所需的資源。解決方案會將此範本存放在 Amazon S3 中，並在 Web 主控台中提供其連結。每個區域堆疊都包含 VPC、AWS Fargate 叢集，以及用於處理即時資料的 Lambda 函數。

如需如何在其他 區域中部署測試基礎設施的詳細資訊，請參閱本指南的[多區域部署](https://docs.aws.amazon.com/solutions/latest/distributed-load-testing-on-aws/multi-region-deployment.html)一節。

## 負載測試引擎
<a name="load-testing-engine"></a>

分散式負載測試解決方案使用 Amazon Elastic Container Service (Amazon ECS) 和 AWS Fargate 模擬多個區域的數千名並行使用者，以持續的速度產生 HTTP 請求。

您可以使用隨附的 Web 主控台來定義測試參數。解決方案使用這些參數來產生 JSON 測試案例，並將其存放在 Amazon S3 中。如需測試指令碼和測試參數的詳細資訊，請參閱本節中的[測試類型](design-considerations.md#test-types)。

AWS Step Functions 狀態機器會在 AWS Fargate 叢集中執行和監控 Amazon ECS 任務。AWS Step Functions 狀態機器包含 ecr-checker AWS Lambda 函數、task-status-checker AWS Lambda 函數、任務執行器 AWS Lambda 函數、任務取消器 AWS Lambda 函數，以及結果剖析器 AWS Lambda 函數。如需工作流程的詳細資訊，請參閱本指南的測試[工作流程](https://docs.aws.amazon.com/solutions/latest/distributed-load-testing-on-aws/test-workflow.html)一節。如需測試結果的詳細資訊，請參閱本指南的[測試結果](https://docs.aws.amazon.com/solutions/latest/distributed-load-testing-on-aws/test-results.html)一節。如需測試取消工作流程的詳細資訊，請參閱本指南的測試[取消工作流程](https://docs.aws.amazon.com/solutions/latest/distributed-load-testing-on-aws/test-cancel-workflow.html)一節。

如果您選取即時資料，解決方案會透過對應至該區域中 Fargate 任務的 CloudWatch 日誌，real-time-data-publisher Lambda 函數。解決方案接著會在您啟動主要堆疊的區域中，處理資料並將其發佈至 AWS IoT Core 中的主題。如需詳細資訊，請參閱本指南的[即時資料](https://docs.aws.amazon.com/solutions/latest/distributed-load-testing-on-aws/live-data.html)一節。

# MCP 伺服器
<a name="MCP-Server"></a>

選用的模型內容通訊協定 (MCP) 伺服器整合可讓 AI 代理器透過自然語言互動，以程式設計方式存取和分析負載測試資料。只有在解決方案部署期間選取 MCP Server 選項時，才會部署此元件。

MCP 伺服器可做為 AI 開發工具和 DLT 部署之間的橋樑，提供標準化界面，以智慧分析效能測試結果。架構整合了數個 AWS 服務，為 AI 代理器互動建立安全、可擴展的界面：

## AWS AgentCore Gateway
<a name="AWS-AgentCore-Gateway"></a>

AWS AgentCore Gateway 是一項全受管服務，可為 MCP 伺服器提供標準化託管和通訊協定管理。在此解決方案中，AgentCore Gateway 會在請求存取您的負載測試資料時，做為 AI 代理器連線的公有端點。

服務會處理所有 MCP 通訊協定通訊，包括工具探索、身分驗證字符驗證和請求路由。AgentCore Gateway 以多租戶服務的形式運作，內建安全保護，可防範公有端點的常見威脅，同時驗證每個請求的 Cognito 字符簽章和宣告。

## DLT MCP 伺服器 Lambda
<a name="MCP-Server-Lambda"></a>

DLT MCP Server Lambda 函數是一種自訂無伺服器元件，可處理來自 AI 代理器的 MCP 請求，並將其轉換為針對 DLT 資源的查詢。

此 Lambda 函數充當 MCP 整合的智慧層、從 DynamoDB 資料表擷取測試結果、存取存放在 S3 儲存貯體中的效能成品，以及查詢 CloudWatch 日誌以取得詳細的執行資訊。Lambda 函數實作唯讀存取模式，並將原始 DLT 資料轉換為結構化的 AI 易記格式，客服人員可以輕鬆解譯和分析。

## 身分驗證整合
<a name="MCP-Auth-Integration"></a>

身分驗證系統利用您現有的 Cognito 使用者集區基礎設施，在 Web 主控台和 MCP Server 介面之間維持一致的存取控制。

此整合使用 OAuth 2.0 字符型身分驗證。使用者透過 Cognito 登入程序驗證一次，並接收可用於 UI 互動和 MCP 伺服器存取的字符。系統會維護與 Web 界面相同的許可界限和存取控制，確保使用者只能透過 AI 代理器存取他們可以透過主控台存取的相同負載測試資料。

## 此解決方案中的 AWS 服務
<a name="aws-services-in-this-solution"></a>

此解決方案包含下列 AWS 服務：


| AWS 服務 | 說明 | 
| --- | --- | 
|   [Amazon API Gateway](https://aws.amazon.com/api-gateway/)   |   **核心。**在解決方案中託管 REST API 端點。  | 
|   [AWS CloudFormation](https://aws.amazon.com/cloudformation/)   |   **核心。**管理解決方案基礎設施的部署。  | 
|   [Amazon CloudFront](https://aws.amazon.com/cloudfront/)   |   **核心。**提供 Amazon S3 中託管的 Web 內容。  | 
|   [Amazon CloudWatch](https://aws.amazon.com/cloudwatch/)   |   **核心。**存放解決方案日誌和指標。  | 
|   [Amazon Cognito](https://aws.amazon.com/cognito/)   |   **核心。**處理 API 的使用者管理和身分驗證。  | 
|   [Amazon DynamoDB](https://aws.amazon.com/dynamodb/)   |   **核心。**存放部署資訊和測試案例詳細資訊和結果。  | 
|   [Amazon Elastic Container Service](https://aws.amazon.com/ecs/)   |   **核心。**在 AWS Fargate 容器上部署和管理獨立的 Amazon ECS 任務。  | 
|   [AWS Fargate](https://aws.amazon.com/fargate/)   |   **核心。**託管解決方案的 Amazon ECS 容器  | 
|   [AWS Identity and Access Management](https://aws.amazon.com/iam/)   |   **核心。**處理使用者角色和許可管理。  | 
|   [AWS Lambda](https://aws.amazon.com/lambda/)   |   **核心。**提供 APIs 實作、測試結果剖析和啟動工作者/領導任務的邏輯。  | 
|   [AWS Step Functions](https://aws.amazon.com/step-functions/)   |   **核心。**協調在指定區域中的 AWS Fargate 任務上佈建 Amazon ECS 容器  | 
|   [AWS Amplify](https://aws.amazon.com/amplify/)   |   **支援。**提供採用 [AWS Amplify](https://aws.amazon.com/amplify) 技術的 Web 主控台。  | 
|   [Amazon CloudWatch Events](https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/WhatIsCloudWatchEvents.html)   |   **支援**。將測試排程在指定的日期或週期性日期自動開始。  | 
|   [Amazon Elastic Container Registry](https://aws.amazon.com/ecr/)   |   **支援**。在公有 ECR 儲存庫中託管容器映像。  | 
|   [AWS IoT Core](https://aws.amazon.com/iot-core/)   |   **支援。**訂閱 AWS IoT Core 中的對應主題，即可檢視執行中測試的即時資料。  | 
|   [AWS Systems Manager](https://aws.amazon.com/systems-manager/)   |   **支援。**提供資源操作和成本資料的應用程式層級資源監控和視覺化。  | 
|   [Amazon S3](https://aws.amazon.com/s3/)   |   **支援。**託管靜態 Web 內容、日誌、指標和測試資料。  | 
|   [Amazon Virtual Private Cloud](https://aws.amazon.com/vpc/)   |   **支援。**包含解決方案在 AWS Fargate 上執行的 Amazon ECS 容器。  | 
|   [Amazon Bedrock AgentCore](https://aws.amazon.com/bedrock/agentcore/)   |   **支援、選用。**託管解決方案選用的遠端模型內容通訊協定 (MCP) Server for AI 代理程式與 API 整合。  | 

# AWS 上的分散式負載測試如何運作
<a name="how-distributed-load-testing-on-aws-works"></a>

下列詳細明細顯示執行測試案例所涉及的步驟。

**測試工作流程**  
 ![\[image3\]](http://docs.aws.amazon.com/zh_tw/solutions/latest/distributed-load-testing-on-aws/images/image3.png) 

1. 您可以使用 Web 主控台，將包含組態詳細資訊的測試案例提交至解決方案的 API。

1. 測試案例組態會以 JSON 檔案 () 的形式上傳至 Amazon Simple Storage Service (Amazon S3)`s3://<bucket-name>/test-scenarios/<$TEST_ID>/<$TEST_ID>.json`。

1. AWS Step Functions 狀態機器會使用測試 ID、任務計數、測試類型和檔案類型做為 AWS Step Functions 狀態機器輸入來執行。如果已排程測試，它會先建立 CloudWatch Events 規則，該規則會在指定的日期觸發 AWS Step Functions。如需排程工作流程的詳細資訊，請參閱本指南的測試[排程工作流程](https://docs.aws.amazon.com/solutions/latest/distributed-load-testing-on-aws/test-scheduling-workflow.html)一節。

1. 組態詳細資訊會存放在案例 Amazon DynamoDB 資料表中。

1. 在 AWS Step Functions 任務執行器工作流程中， task-status-checker AWS Lambda 函數會檢查 Amazon Elastic Container Service (Amazon ECS) 任務是否已針對相同的測試 ID 執行。如果發現具有相同測試 ID 的任務正在執行，則會導致錯誤。如果 AWS Fargate 叢集中沒有執行中的 Amazon ECS 任務，則函數會傳回測試 ID、任務計數和測試類型。

1. 任務執行器 AWS Lambda 函數會從上一個步驟取得任務詳細資訊，並在 AWS Fargate 叢集中執行 Amazon ECS 工作者任務。Amazon ECS API 使用 RunTask 動作來執行工作者任務。這些工作者任務會啟動，然後等待領導者任務的開始訊息，以開始測試。RunTask 動作限制為每個定義 10 個任務。如果您的任務計數超過 10，任務定義將執行多次，直到所有工作者任務都已啟動為止。函數也會產生字首，以區分結果剖析 AWS Lambda 函數中的目前測試。

1. task-status-checker AWS Lambda 函數會檢查所有 Amazon ECS 工作者任務是否以相同的測試 ID 執行。如果任務仍在佈建，它會等待一分鐘並再次檢查。執行所有 Amazon ECS 任務後，它會傳回測試 ID、任務計數、測試類型、所有任務 IDs和字首，並將其傳遞給任務執行器函數。

1. 任務執行器 AWS Lambda 函數會再次執行，這次啟動單一 Amazon ECS 任務以做為領導節點。此 ECS 任務會將啟動測試訊息傳送至每個工作者任務，以同時啟動測試。

1. task-status-checker AWS Lambda 函數會再次檢查 Amazon ECS 任務是否以相同的測試 ID 執行。如果任務仍在執行中，它會等待一分鐘並再次檢查。一旦沒有執行中的 Amazon ECS 任務，它會傳回測試 ID、任務計數、測試類型和字首。

1. 當任務執行器 AWS Lambda 函數在 AWS Fargate 叢集中執行 Amazon ECS 任務時，每個任務會從 Amazon S3 下載測試組態並開始測試。

1. 測試執行後，Amazon CloudWatch 會記錄每個任務的平均回應時間、並行使用者數量、成功請求數量，以及失敗的請求數量，並且可以在 CloudWatch 儀表板中檢視。

1. 如果您在測試中包含即時資料，解決方案會使用訂閱篩選條件在 CloudWatch 中篩選即時測試結果。然後，解決方案會將資料傳遞至 Lambda 函數。

1. Lambda 函數接著會建構收到的資料，並將其發佈至 AWS IoT Core 主題。

1. Web 主控台會訂閱測試的 AWS IoT Core 主題，並接收發佈至主題的資料，以在測試執行時繪製即時資料的圖表。

1. 測試完成後，容器映像會將詳細報告匯出為 XML 檔案至 Amazon S3。每個檔案都會獲得檔案名稱的 UUID。例如，s3：//dlte-bucket/test-scenarios/*<\$1TEST\$1ID>*/results/*<\$1UUID>*.json。

1. 當 XML 檔案上傳到 Amazon S3 時，結果剖析器 AWS Lambda 函數會從字首開始讀取 XML 檔案中的結果，並剖析和彙總所有結果為一個摘要結果。

1. 結果剖析器 AWS Lambda 函數會將彙總結果寫入 Amazon DynamoDB 資料表。

## MCP 伺服器工作流程 （選用）
<a name="mcp-server-workflow"></a>

如果您部署選用的 MCP Server 整合，AI 代理器可以透過下列工作流程存取和分析負載測試資料：

 **MCP 伺服器架構** 

![\[MCP 伺服器架構顯示與 DLT 元件的整合\]](http://docs.aws.amazon.com/zh_tw/solutions/latest/distributed-load-testing-on-aws/images/mcp-server-architecture.png)


1.  **客戶互動** - 客戶透過 AWS AgentCore Gateway 託管的 MCP 端點與 DLT 的 MCP 互動。AI 代理器會連線至此端點，請求存取以載入測試資料。

1.  **授權** - AgentCore Gateway 會對 Solution Cognito 使用者集區應用程式用戶端處理授權。閘道會驗證使用者的 Cognito 權杖，以確保他們具有存取 DLT MCP 伺服器的許可。授權使用者可透過僅限唯讀操作的代理工具存取獲得存取權。

1.  **工具規格** - AgentCore Gateway 連接到 DLT MCP Server Lambda 函數。工具規格定義 AI 代理器可用來與負載測試資料互動的可用工具。

1.  **唯讀 API 存取** - Lambda 函數的範圍限定為透過現有 DLT API Gateway 端點的唯讀 API 存取。函數提供四個主要操作：
   +  **列出案例** - 從 DynamoDB 案例資料表擷取測試案例的清單
   +  **取得案例測試結果** - 從 DynamoDB 和 S3 存取特定案例的詳細測試結果
   +  **取得 Fargate 負載測試執行器** - 查詢在 ECS 叢集中執行 Fargate 任務的相關資訊
   +  **取得可用的區域堆疊** - 從 CloudFormation 擷取已部署區域基礎設施的相關資訊

MCP Server 整合利用現有的 DLT 基礎設施 (API Gateway、Cognito、DynamoDB、S3)，提供安全、唯讀的存取權，以測試 AI 驅動的分析和洞察資料。

# 設計考量
<a name="design-considerations"></a>

本節說明 AWS 上分散式負載測試解決方案的重要設計決策和組態選項，包括支援的應用程式、測試類型、排程選項和部署考量。

## 支援的應用程式
<a name="supported-applications"></a>

只要您有從 AWS 帳戶到應用程式的網路連線，此解決方案支援測試雲端型應用程式和內部部署應用程式。解決方案支援使用 HTTP 或 HTTPS 通訊協定APIs。

## 測試類型
<a name="test-types"></a>

AWS 上的分散式負載測試支援多種測試類型：簡易 HTTP 端點測試、JMeter、K6 和 Locust。

### 簡單 HTTP 端點測試
<a name="single-http-support"></a>

Web 主控台提供 HTTP 端點組態介面，可讓您測試任何 HTTP 或 HTTPS 端點，而無需撰寫自訂指令碼。您可以定義端點 URL，從下拉式選單中選取 HTTP 方法 (GET、POST、PUT、DELETE 等），並選擇性地新增自訂請求標頭和內文承載。此組態可讓您使用自訂授權字符、內容類型，或應用程式所需的任何其他 HTTP 標頭和請求內文來測試 APIs。

### JMeter 測試
<a name="jmeter-script-support"></a>

使用 Web 主控台建立測試案例時，您可以上傳 JMeter 測試指令碼。解決方案會將指令碼上傳至案例 S3 儲存貯體。當 Amazon ECS 任務執行時，他們會從 S3 下載 JMeter 指令碼並執行測試。

**重要**  
雖然您的 JMeter 指令碼可能定義並行 （虛擬使用者）、交易速率 (TPS)、漸進測試時間和其他負載參數，但解決方案會使用您在測試建立期間在流量形狀畫面中指定的值來覆寫這些組態。流量形狀組態可控制測試執行的任務計數、並行 （每個任務的虛擬使用者）、漸進測試持續時間和保留持續時間。

如果您有 JMeter 輸入檔案，您可以將輸入檔案與 JMeter 指令碼一起壓縮。您可以在建立測試案例時選擇 zip 檔案。

如果您想要包含外掛程式，任何包含在綁定 zip 檔案中 /plugins 子目錄中的 .jar 檔案都會複製到 JMeter 擴充功能目錄，並可用於負載測試。

**注意**  
如果您在 JMeter 指令碼檔案中包含 JMeter 輸入檔案，則必須在 JMeter 指令碼檔案中包含輸入檔案的相對路徑。此外，輸入檔案必須位於相對路徑。例如，當您的 JMeter 輸入檔案和指令碼檔案位於 /home/user 目錄中，而您參考 JMeter 指令碼檔案中的輸入檔案時，輸入檔案的路徑必須為 。/INPUT\$1FILES。如果您改為使用 /home/user/INPUT\$1FILES，則測試將會失敗，因為它將無法找到輸入檔案。

如果您包含 JMeter 外掛程式，.jar 檔案必須封裝在 zip 檔案根目錄中名為 /plugins 的子目錄中。相對於 zip 檔案的根目錄，jar 檔案的路徑必須是 ./plugins/BUNDLED\$1PLUGIN.jar。

如需如何使用 JMeter 指令碼的詳細資訊，請參閱 [JMeter 使用者手冊](https://jmeter.apache.org/usermanual/index.html)。

### K6 測試
<a name="k6-script-support"></a>

解決方案支援 K6 架構型測試。K6 是根據 [AGPL-3.0 授權發行。](https://github.com/grafana/k6/blob/master/LICENSE.md)解決方案會在建立新的 K6 測試時顯示授權確認訊息。您可以在封存檔案中上傳 K6 測試檔案以及任何必要的輸入檔案。

**重要**  
雖然 K6 指令碼可能會定義並行 （虛擬使用者）、階段、閾值和其他負載參數，但解決方案會使用您在測試建立期間在流量形狀畫面中指定的值來覆寫這些組態。流量形狀組態可控制測試執行的任務計數、並行 （每個任務的虛擬使用者）、漸進測試持續時間和保留持續時間。

### Locust 測試
<a name="locust-script-support"></a>

解決方案支援 Locust 架構型測試。您可以上傳 Locust 測試檔案，以及封存檔案中任何必要的輸入檔案。

**重要**  
雖然您的 Locust 指令碼可能會定義並行 （使用者計數）、產生率和其他負載參數，但解決方案會使用您在測試建立期間在流量形狀畫面中指定的值來覆寫這些組態。流量形狀組態可控制測試執行的任務計數、並行 （每個任務的虛擬使用者）、漸進測試持續時間和保留持續時間。

## 排程測試
<a name="scheduling-tests"></a>

解決方案提供三種執行負載測試的執行時間選項：
+  **立即執行** - 在建立後立即執行載入測試
+  **執行一次** - 在未來的特定日期和時間執行測試
+  **在排程上執行** - 使用 Cron 表達式建立週期性測試以定義排程

選取**執行一次**時，您會以 24 小時格式指定執行時間，以及負載測試應開始執行的執行日期。

當您選取在**排程上執行**時，您可以手動輸入 Cron 表達式或從常見的 Cron 模式選取 （例如每小時、每天特定時間、工作日或每月）。Cron 表達式使用精細的排程格式，其中包含分鐘、小時、月中的日、月、週中的日和年的欄位。您也必須指定過期日期，以定義排程測試何時應停止執行。如需排程如何運作的詳細資訊，請參閱本指南的測試[排程工作流程](https://docs.aws.amazon.com/solutions/latest/distributed-load-testing-on-aws/test-scheduling-workflow.html)一節。

**注意**  
測試持續時間：考慮排程時的總測試持續時間。例如，具有 10 分鐘漸進測試時間和 40 分鐘保留時間的測試大約需要 80 分鐘才能完成。
最小間隔：確保排程測試之間的間隔長於預估測試持續時間。例如，如果測試大約需要 80 分鐘，請將其排程為每 3 小時執行一次。
每小時限制：系統不允許只以一小時的差異排程測試，即使預估測試持續時間少於一小時。

## 並行測試
<a name="concurrent-tests"></a>

此解決方案會為每個測試建立 Amazon CloudWatch 儀表板，以即時顯示 Amazon ECS 叢集中執行之所有任務的合併輸出。CloudWatch 儀表板會顯示平均回應時間、並行使用者數、成功請求數和失敗請求數。解決方案會依秒彙總每個指標，並每分鐘更新儀表板。

## 使用者管理
<a name="user-management"></a>

在初始組態期間，您會提供 Amazon Cognito 用來授予您存取解決方案 Web 主控台的使用者名稱和電子郵件地址。主控台不提供使用者管理。若要新增其他使用者，您必須使用 Amazon Cognito 主控台。如需詳細資訊，請參閱《*Amazon Cognito 開發人員指南*》中的在[使用者集區中管理使用者](https://docs.aws.amazon.com/cognito/latest/developerguide/managing-users.html)。

如需將現有使用者遷移至 Amazon Cognito 使用者集區，請參閱 AWS 部落格[方法，以將使用者遷移至 Amazon Cognito 使用者集區](https://aws.amazon.com/blogs/security/approaches-for-migrating-users-to-amazon-cognito-user-pools)。

## 區域部署
<a name="regional-deployment"></a>

此解決方案使用 Amazon Cognito，僅適用於特定 AWS 區域。因此，您必須在可使用 Amazon Cognito 的區域部署此解決方案。如需依區域分類的最新服務可用性，請參閱 [AWS 區域服務清單](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/)。