

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

# 构建基于云的测试环境
<a name="integration-dev-iteration-cloud"></a>

**注意**  
本主题涵盖针对已集成 Amazon GameLift Servers 服务器 SDK 5.x 的游戏所进行的迭代测试。如果您的游戏使用的是服务器 SDK 版本 4.x 或更早版本，请参阅[使用 Amazon GameLift Servers Local 测试您的集成。](integration-testing-local.md)。

使用 Amazon GameLift Servers Anywhere 实例集在基于云的托管环境中迭代构建和测试游戏组件。创建具有托管资源并连接到 Amazon GameLift Servers 服务的 Anywhere 实例集，在其上运行游戏服务器，并根据需要测试游戏功能。

**使用 Amazon GameLift Servers 代理部署 Anywhere 实例集**  
如果您的游戏服务器生成包与 Amazon GameLift Servers SDK 5.x 或更高版本集成，您可以使用 Amazon GameLift Servers 代理将其部署到基于云的 Anywhere 实例集。该代理是一个后台进程，用于管理游戏服务器生命周期以及实例集中每个计算上的其他任务。这些任务包括向 Anywhere 队列注册计算、获取身份验证令牌以及基于一组指令的 starting/stopping 游戏服务器进程。该代理由实例集的运行时配置控制，在实例集生命周期内，您可以随时更新这些配置。（该代理会自动部署到托管式 EC2 实例集。） 要了解更多信息并下载代理，请参阅[Amazon GameLift Servers GitHub存储库](https://github.com/aws/amazon-gamelift-agent)。

## 使用 Amazon EC2 设置迭代测试
<a name="integration-dev-iteration-cloud-ec2"></a>

使用此 [Amazon GameLift Servers Toolkit 解决方案]( https://github.com/aws/amazon-gamelift-toolkit/tree/main/development-instance-with-amazon-gamelift-anywhere-and-gamelift-agent)中的引导式工作流程来设置基于云的托管环境，以反映使用 Amazon GameLift Servers 的托管式托管体验。

 GitHub 存储库提供了一组脚本，这些脚本可以自动执行使用 Amazon GameLift Servers Anywhere 和 A Amazon GameLift Servers gent 设置测试环境的大部分过程。它还针对在有新游戏服务器生成包要测试时更新环境提供指导。您可以运行一个脚本来部署具有示例游戏服务器生成包的测试环境，也可以使用您自己的游戏服务器生成包逐步设置它。

在此工作流程中，您将完全使用 AWS CloudShell 来运行脚本和完成命令行任务。 AWS 管理控制台

**注意**  
对于本教程中的任务，您需要具有以下服务权限的 AWS 账户用户：Amazon GameLift Servers、、Amazon S3 AWS CloudShell、 AWS Systems Manager、Amazon EC2 和 AWS Identity and Access Management。对 AWS 账户拥有管理员级别访问权限的用户已经拥有所需的权限。

此工作流程包含以下任务：
+ **为 Amazon GameLift Servers 打包游戏服务器生成包。**此工作流程提供了一个用于构建示例 C\$1\$1 游戏服务器的脚本，该游戏服务器已与 Amazon GameLift Servers 服务器 SDK 5.x 集成，随时可以进行托管。如果您已完成集成，也可以使用自己的游戏项目。
+ **设置 Amazon Simple Storage Service 存储桶以存储游戏服务器生成包和依赖项。**当您生成新版本的游戏生成包时，您可以将其存储在 S3 中，并使用脚本更新 Anywhere 实例集以进行游戏测试。
+ **获取并构建 Amazon GameLift Servers 代理。**该代理将根据您的配置来管理托管资源上的游戏服务器进程。它使用的逻辑和行为与 Amazon GameLift Servers 托管式 EC2 托管相同。
+ **为托管资源设置 Anywhere 实例集。**有了 Anywhere 实例集，您就可以将 Amazon GameLift Servers 服务用于不受 Amazon GameLift Servers 管理的托管资源。在此步骤中，您还将配置运行时配置，该配置用于指示 Amazon GameLift Servers 代理何时以及如何启动游戏服务器进程。
+ **设置 Amazon EC2 实例。**这是用于迭代测试的测试环境。使用标准 EC2 实例比使用完全托管式 Amazon GameLift Servers 实例（针对生产级使用进行了优化）速度要快得多。使用标准 EC2 实例时，您可以根据需要快速且持续地更新游戏服务器。
+ **将游戏服务器生成包和 Amazon GameLift Servers 代理部署到 Amazon EC2 实例。**此工作流程提供了一个脚本，用于获取最新版本的游戏生成包和所有依赖项，并将其安装到您的 EC2 实例上。在此工作流程中，依赖关系包括Amazon GameLift Servers代理和 CloudWatch 代理。
+ **启动 Amazon GameLift Servers 代理。**安装后，该代理会自动启动并开始执行指令。这些指令包括：
  + 将 EC2 实例注册为 Amazon GameLift Servers Anywhere 实例集内的计算。
  + 与Amazon GameLift Servers服务建立 WebSocket 连接并获取最新的运行时配置。
  + 根据运行时配置中的指令启动游戏服务器进程。在此工作流程中，该代理会按照指令启动游戏服务器可执行文件的单个进程。
+ **测试游戏场景。**设置好测试环境并安装好最新的游戏服务器生成包后，就可以开始测试了。此工作流程将引导您完成多个测试步骤，包括启动游戏会话。访问 CloudWatch 游戏服务器日志以跟踪游戏会话启动并准备接受玩家时的进度。

  在开发游戏组件（包括游戏客户端和客户端后端服务）时，可以将其包含在测试场景中。使用游戏客户端请求游戏会话，从 Amazon GameLift Servers 服务中检索连接信息，然后直接连接到游戏会话。
+ **部署新的游戏服务器生成包并重复测试。**在开发游戏时，您可以生成新的游戏服务器生成包，然后快速将其部署到 EC2 测试环境进行测试。将它们上传到 Amazon S3 存储桶，然后使用工作流程脚本更新测试环境。

## 将您的游戏过渡到 Amazon GameLift Servers 托管式实例集
<a name="integration-dev-iteration-cloud-transition"></a>

在完成开发测试并准备好发布后，就可以切换到 Amazon GameLift Servers 托管式实例集了。使用托管式实例集来微调和测试游戏托管资源。实施游戏会话放置解决方案（队列和对战构建器），选择最佳托管硬件（包括竞价型实例集）和位置，然后选择容量扩展策略。您可能还想开始使用 AWS CloudFormation 来更有效地管理所有游戏托管资源的生命周期，包括舰队、队列和媒人。

从基于云的 Anywhere 测试实例集过渡到 Amazon GameLift Servers 托管式实例集的工作量很少。您无需更改任何游戏代码，而且可以重复使用相同的队列和对战构建器。请执行以下任务：
+ **创建 Amazon GameLift Servers 生成包资源。**使用 Anywhere 测试实例集时，您需要手动将游戏服务器生成包和依赖项部署到每个实例集计算。使用托管式实例集时，请将您的游戏生成包上传到 Amazon GameLift Servers，后者会自动将生成包部署到所有实例集计算。请参阅[为 Amazon GameLift Servers 创建游戏服务器生成包](gamelift-build-cli-uploading.md)，详细了解如何打包游戏生成包文件以及在 Amazon S3 存储桶中创建包含文件的生成包资源。
+ **创建托管式实例集。**使用控制台或 AWS CLI 创建一个实例集，并指定 EC2 托管式实例集。这种类型的实例集需要额外的配置设置，包括指定生成包资源和实例类型。您可以使用相同的运行时配置来管理每个实例集计算上的游戏服务器生命周期。请参阅[创建Amazon GameLift Servers托管 EC2 舰队](fleets-creating.md)，详细了解如何创建托管式实例集。
+ **重定向实例集别名（可选）。**如果您设置了要用于 Anywhere 实例集的别名，则可以对托管式实例集使用相同的别名。请参阅[创建 Amazon GameLift Servers别名](aliases-creating.md)，详细了解如何创建或更新别名。