

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 架构详情
<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 控制台
+ 可选的 MCP 服务器，用于 AI 辅助分析测试结果和错误

## 负载测试 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 网络令牌，该令牌用于允许控制台向解决方案的（Amazon API Gat APIs eway 终端节点）提交请求。HTTPS 请求由控制台发送到包含令牌的授权标头。 APIs 

根据请求，API Gateway 调用相应的 AWS Lambda 函数对存储在 DynamoDB 表中的数据执行必要的任务，将测试场景作为 JSON 对象存储在亚马逊 S3 中，检索 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 构建的 ReactJS 应用程序，[Cloudscape](https://cloudscape.design/) 是一个用于构建直观的 Web 应用程序的开源设计系统。该控制台托管在 Amazon S3 中，可通过亚马逊进行访问 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 服务器选项，才会部署此组件。

MCP 服务器使 AI 代理能够使用 Amazon Q、Claude 和其他兼容 MCP 的人工智能助手等工具查询测试结果、分析性能指标并深入了解您的负载测试数据。有关 MCP 服务器架构和配置的详细信息，请参阅本节中的 [MCP 服务器](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>

此解决方案使用使用 A [mazon Linux 2023](https://aws.amazon.com/linux/amazon-linux-2023/) 构建的容器映像作为安装了 Ta [ur](https://gettaurus.org/) us 负载测试框架的基础映像。Taurus 是一个开源测试自动化框架 JMeter，支持 K6、Locust 和其他测试工具。AWS 将此映像托管在亚马逊弹性容器注册表 (Amazon ECR) 的 Elastic Registry 公共存储库中。该解决方案使用此镜像在 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 ECS) 和 AWS Fargate 来模拟多个区域的数千名并发用户，以持续的速度生成 HTTP 请求。

您可以使用随附的 Web 控制台定义测试参数。该解决方案使用这些参数生成 JSON 测试场景并将其存储在 Amazon S3 中。有关测试脚本和测试参数的更多信息，请参阅本节中的[测试类型](design-considerations.md#test-types)。

AWS Step Functions 状态机在 AWS Fargate 集群中运行和监控 AWS ECS 任务。AWS Step Functions 状态机包括一个 ecr-checker AWS Lambda 函数、一个 AWS Lambda 函数、一个任务运行器 task-status-checker 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)” 部分。

如果您选择实时数据，则该解决方案将通过 CloudWatch 与该区域中的 Fargate 任务对应的日志在每个区域中启动 Lamb real-time-data-publisher da 函数。然后，该解决方案会处理数据并将其发布到您启动主堆栈的区域内的 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 服务器选项，才会部署此组件。

MCP 服务器充当 AI 开发工具和 DLT 部署之间的桥梁，为性能测试结果的智能分析提供了标准化接口。该架构集成了多个 AWS 服务，为 AI 代理交互创建了一个安全、可扩展的接口：

## AWS AgentCore 网关
<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 服务器 Lambda 函数是一个自定义的无服务器组件，用于处理来自 AI 代理的 MCP 请求并将其转换为针对您的 DLT 资源的查询。

此 Lambda 函数充当 MCP 集成的智能层，可从 DynamoDB 表中检索测试结果，访问存储在 S3 存储桶中的性能项目，并查询日志以获取详细的执行信息。 CloudWatch Lambda 函数实现只读访问模式，并将原始 DLT 数据转换为结构化的、人工智能友好的格式，代理可以轻松解释和分析。

## 身份验证集成
<a name="MCP-Auth-Integration"></a>

身份验证系统利用您现有的 Cognito 用户池基础架构，在 Web 控制台和 MCP 服务器界面上保持一致的访问控制。

此集成使用基于 OAuth 2.0 令牌的身份验证。用户通过 Cognito 登录过程进行一次身份验证，即可获得用于用户界面交互和 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 中的网络内容。  | 
|   [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 身份和访问管理 AWS Identity Access](https://aws.amazon.com/iam/)   |   **核心。**处理用户角色和权限管理。  | 
|   [AWS Lambda](https://aws.amazon.com/lambda/)   |   **核心。**为 APIs 实施、测试结果解析和启动 workers/leader 任务提供逻辑。  | 
|   [AWS Step Functions](https://aws.amazon.com/step-functions/)   |   **核心。**为指定区域的 AWS Fargate 任务编排 Amazon ECS 容器的预配置  | 
|   [AWS Amplify](https://aws.amazon.com/amplify/)   |   **支持。**提供由 AW [S Ampli](https://aws.amazon.com/amplify) fy 提供支持的网络控制台。  | 
|   [亚马逊 CloudWatch 活动](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) 服务器，用于 AI 代理与 API 集成。  | 

# AWS 上的分布式负载测试的工作原理
<a name="how-distributed-load-testing-on-aws-works"></a>

以下详细分解显示了运行测试场景所涉及的步骤。

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

1. 您可以使用 Web 控制台向解决方案的 API 提交包含配置详细信息的测试场景。

1. 测试场景配置以 JSON 文件 `s3://<bucket-name>/test-scenarios/<$TEST_ID>/<$TEST_ID>.json` () 的形式上传到亚马逊简单存储服务 (Amazon S3)。

1. AWS Step Functions 状态机使用测试 ID、任务计数、测试类型和文件类型作为 AWS Step Functions 状态机输入来运行。如果已安排测试，它将首先创建一个 CloudWatch 事件规则，该规则将在指定日期触发 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-checkerAWS Lambda 函数检查亚马逊弹性容器服务 (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-checkerAWS Lambda 函数检查所有的 Amazon ECS 工作线程任务是否都使用相同的测试 ID 运行。如果任务仍在置备，则它会等待一分钟，然后再次检查。所有 Amazon ECS 任务运行后，它会返回测试 ID、任务计数、测试类型、所有任务 IDs 和前缀，并将其传递给任务运行器函数。

1. 任务运行器 AWS Lambda 函数再次运行，这次是启动单个 Amazon ECS 任务来充当领导节点。此 ECS 任务向每个工作任务发送启动测试消息，以便同时启动测试。

1.  task-status-checkerAWS 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 函数将汇总结果写入亚马逊 DynamoDB 表。

## MCP 服务器工作流程（可选）
<a name="mcp-server-workflow"></a>

如果您部署了可选的 MCP 服务器集成，AI 代理可以通过以下工作流程访问和分析您的负载测试数据：

 **MCP 服务器架构** 

![\[显示与 DLT 组件集成的 MCP 服务器架构\]](http://docs.aws.amazon.com/zh_cn/solutions/latest/distributed-load-testing-on-aws/images/mcp-server-architecture.png)


1.  **客户互动**-客户通过 AWS Gateway 托管的 MCP 终端节点与 DLT 的 MCP 进行交互。 AgentCore AI 代理连接到此端点以请求访问负载测试数据。

1.  **授权**- AgentCore Gateway 处理针对解决方案 Cognito 用户池应用程序客户端的授权。网关会验证用户的 Cognito 令牌，以确保他们有权访问 DLT MCP 服务器。授权用户将获得访问权限，代理工具访问权限仅限于只读操作。

1.  **工具规格** —— AgentCore 网关连接到 DLT MCP 服务器 Lambda 函数。工具规范定义了 AI 代理可用于与您的负载测试数据进行交互的可用工具。

1.  **只读 API 访问权限**-Lambda 函数的范围仅限于通过现有 DLT API Gateway 终端节点进行只读 API 访问。该函数提供四个主要操作：
   +  **列出方案**-从 DynamoDB 场景表中检索测试场景列表
   +  **获取场景测试结果**-访问来自 DynamoDB 和 S3 的特定场景的详细测试结果
   +  **获取 Fargate 负载测试运行器**-查询有关在 ECS 集群中运行 Fargate 任务的信息
   +  **获取可用的区域堆栈**-从中检索有关已部署的区域基础设施的信息 CloudFormation

MCP 服务器集成利用现有的 DLT 基础架构（API Gateway、Cognito、DynamoDB、S3），为基于人工智能的分析和见解提供对测试数据的安全、只读访问权限。

# 设计注意事项
<a name="design-considerations"></a>

本节介绍了 AWS 上的分布式负载测试解决方案的重要设计决策和配置选项，包括支持的应用程序、测试类型、计划选项和部署注意事项。

## 受支持的应用程序
<a name="supported-applications"></a>

只要您的 AWS 账户与应用程序之间存在网络连接，该解决方案就支持测试基于云的应用程序和本地应用程序。该解决方案支持 APIs 使用 HTTP 或 HTTPS 协议。

## 测试类型
<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 等），还可以选择添加自定义请求标头和正文有效负载。此配置使您能够 APIs 使用自定义授权令牌、内容类型或应用程序所需的任何其他 HTTP 标头和请求正文进行测试。

### JMeter 测试
<a name="jmeter-script-support"></a>

使用 Web 控制台创建测试场景时，可以上传 JMeter 测试脚本。该解决方案将脚本上传到场景 S3 存储桶。当 Amazon ECS 任务运行时，他们会从 S3 下载 JMeter 脚本并执行测试。

**重要**  
尽管您的 JMeter 脚本可以定义并发性（虚拟用户）、交易速率 (TPS)、加速时间和其他加载参数，但该解决方案将使用您在创建测试期间在 Traffic Shape 屏幕中指定的值来覆盖这些配置。Traffic Shape 配置控制测试执行的任务计数、并发度（每个任务的虚拟用户数）、加速持续时间和保持持续时间。

如果您有 JMeter 输入文件，则可以将输入文件与 JMeter 脚本一起压缩。您可以在创建测试场景时选择 zip 文件。

如果要包含插件，则捆绑的 zip 文件的 /plugins 子目录中包含的任何.jar 文件都将被复制到 JMeter 扩展目录中，可供负载测试。

**注意**  
如果在 JMeter 脚本文件中包含 JMeter 输入文件，则必须在 JMeter 脚本文件中包含输入文件的相对路径。此外，输入文件必须位于相对路径上。例如，当您的 JMeter 输入文件和脚本文件位于/ home/user directory and you refer to the input files in the JMeter script file, the path of input files must be ./INPUT\$1FILES. If you use /home/user/INPUT \$1FILES中时，测试将失败，因为它无法找到输入文件。

如果包含 JMeter 插件，则.jar 文件必须捆绑在 zip 文件根目录下名为 /plugins 的子目录中。相对于压缩文件的根目录，jar 文件的路径必须是。 /plugins/bundled\$1plugin.jar。

有关如何使用 JMeter 脚本的更多信息，请参阅[JMeter 用户手册](https://jmeter.apache.org/usermanual/index.html)。

### K6 测试
<a name="k6-script-support"></a>

该解决方案支持基于 K6 框架的测试。K6 是在 [AGPL](https://github.com/grafana/k6/blob/master/LICENSE.md) -3.0 许可下发布的。创建新的 K6 测试时，解决方案会显示许可证确认消息。您可以将 K6 测试文件以及任何必要的输入文件上传到存档文件中。

**重要**  
尽管您的 K6 脚本可以定义并发性（虚拟用户）、阶段、阈值和其他负载参数，但该解决方案将使用您在创建测试期间在 “流量形状” 屏幕中指定的值来覆盖这些配置。Traffic Shape 配置控制测试执行的任务计数、并发度（每个任务的虚拟用户数）、加速持续时间和保持持续时间。

### 蝗虫试验
<a name="locust-script-support"></a>

该解决方案支持基于 Locust 框架的测试。您可以将 Locust 测试文件以及任何必要的输入文件上传到存档文件中。

**重要**  
尽管您的 Locust 脚本可以定义并发性（用户数）、生成率和其他加载参数，但该解决方案将使用您在测试创建期间在 Traffic Shape 屏幕中指定的值来覆盖这些配置。Traffic Shape 配置控制测试执行的任务计数、并发度（每个任务的虚拟用户数）、加速持续时间和保持持续时间。

## 安排测试
<a name="scheduling-tests"></a>

该解决方案为运行负载测试提供了三个执行定时选项：
+  **立即运行**-创建后立即执行负载测试
+  **Run Onc** e-在未来的特定日期和时间执行测试
+  **按计划运行**-使用 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 控制面板显示平均响应时间、并发用户数、成功请求数和失败请求数。该解决方案按秒汇总每个指标，并每分钟更新一次仪表板。

## User management
<a name="user-management"></a>

在初始配置期间，您需要提供一个用户名和电子邮件地址，Amazon Cognito 使用该用户名和电子邮件地址来授予您访问解决方案网络控制台的权限。控制台不提供用户管理。要添加其他用户，您必须使用 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/)。