

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

# 创建Amazon GameLift Servers托管 EC2 舰队
<a name="fleets-creating"></a>

本主题介绍如何创建Amazon GameLift Servers托管 EC2 舰队。托管队伍使用针对多人游戏托管进行了优化的亚马逊弹性计算云 (Amazon EC2) 计算实例。您可以创建托管队列，将计算部署到全局 AWS 区域 和支持的 Local Zones。Amazon GameLift Servers

创建新的托管 EC2 舰队资源时，会立即启动队列创建的第一阶段。在Amazon GameLift Servers部署 EC2 实例、安装运行时环境和在实例上构建游戏服务器以及开始启动游戏服务器时，托管队列的创建会经历几个阶段。根据您的游戏服务器构建所需的运行时环境，在创建队列时Amazon GameLift Servers部署最新版本的 Amazon 系统映像 (AMI)（队列中所有未来的实例都将使用相同的版本）。您可以在控制台中或使用 AWS Command Line Interface (AWS CLI) 监控队列的状态。当实例集准备就绪并可托管游戏会话时，其状态会变更为 `ACTIVE`。有关创建托管式实例集的更多信息，请参阅以下主题：

**注意**  
作为最佳实践，我们建议每 30 天更换一次舰队，以维护托管游戏服务器的安全 up-to-date运行环境。这需要创建一个新实例集并将玩家流量迁移到该实例集。有关更多指导，请参阅[Amazon GameLift Servers 的安全最佳实践](security-best-practices.md)。

**创建托管 EC2 车队**

使用Amazon GameLift Servers控制台或 AWS Command Line Interface (AWS CLI) 创建托管 EC2 队列。

------
#### [ Console ]

在[Amazon GameLift Servers控制台](https://console.aws.amazon.com/gamelift/)中，使用导航窗格打开 “**托管 EC2，舰队**” 页面。选择**创建托管 EC2 队列**以启动队列创建工作流程。

**步骤 1 定义托管 EC2 车队的详细信息**  
**对于最低实例集配置：**  
+ 提供实例集名称。
+ 选择**二进制类型：生成包**。从您之前上传到 Amazon GameLift Servers 的服务器生成包列表中选择一个生成包。
+ 跳过“其他详细信息”和“标签”部分以使用默认设置。

1. 填写**实例集详细信息**部分：

   1. 输入实例集**名称**。实例集名称仅为描述性，可用于对实例集列表进行排序或筛选。它们不必唯一。

   1. 提供简短的实例集**描述**，包括您要捕获的有关实例集的任何自定义信息。

   1. 选择**二进制类型：生成包**，然后使用下拉列表选择您之前上传到 Amazon GameLift Servers 的游戏服务器生成包。

1. 根据需要设置**其他详细信息**。

   1. 如果您的游戏服务器可执行文件需要访问您账户中的其他 AWS 资源，请指定具有必要权限的 IAM **实例角色**。有关更多信息，包括如何授权其他服务器端应用程序（例如 CloudWatch 代理），请参阅[将您的Amazon GameLift Servers托管游戏服务器连接到其他 AWS 资源](gamelift-sdk-server-resources.md)。此设置在您创建实例集后无法更改。

      您必须先创建角色，然后才能创建使用它的实例集。此外，要创建具有实例角色的实例集，您的 AWS 用户必须具有 IAM `PassRole` 权限（请参阅 [Amazon GameLift Servers 的 IAM 权限示例](gamelift-iam-policy-examples.md)）。

   1. 启用**生成 TLS 证书**选项，为您的游戏设置身份验证和加密，游戏客户端会使用此证书在连接时对游戏服务器进行身份验证，以及加密所有客户端/服务器通信。对于启用 TLS 的实例集中的每个实例，Amazon GameLift Servers 还使用证书创建一个新的 DNS 条目。此设置在您创建实例集后无法更改。

   1. Amazon GameLift Servers 会为每个单独的实例集生成指标数据。如果要合并多个实例集的指标数据，请指定一个**指标组**名称。对于所有需要合并指标数据的实例集，使用相同的指标组名称。 CloudWatch 用于查看聚合指标组数据。

1. 向实例集资源添加**标签**。每个标签都包含定义的一个键和一个可选值。为要分类的 AWS 资源分配标签，例如按用途、所有者或环境进行分类。为每个要添加的标签选择**添加新标签**。

1. 选择**下一步**以继续工作流程。

**步骤 2 定义实例详细信息**  
在此步骤中，选择要用于游戏服务器的硬件资源类型，并指定部署位置。通过选择多个位置，您可以将游戏服务器部署到更广的地理位置，使它们更接近您的玩家并最大限度地降低延迟。队列中的所有 EC2 实例必须是相同的类型。并非所有实例类型都在所有位置可用。  
**对于最低实例集配置：**  
+ 初始部署时，仅选择主位置进行部署。在初期开发与测试阶段，无需添加远程位置。
+ 将实例集类型设置为“按需型”。竞价型实例集需要额外的设置工作。
+ 将实例类型设置为“c5.large”。这种常用的实例类型全部可用 AWS 区域。您可以在后续阶段优化硬件使用情况。

1. 在**实例部署**中，指定实例集的位置和类型。

   1. 选择您要部署实例集实例的一个或多个其他**位置**。这些远程位置将添加到舰队的主位置（已预先选择），这是您创建此舰队 AWS 区域 的地方。您可以从所有Amazon GameLift Servers支持的 Local Zones AWS 区域 和 Local Zones 中选择远程位置。

      要详细了解受支持的地点，包括如何使用默认未启用的位置，[Amazon GameLift Servers 服务位置](gamelift-regions.md)请参阅托管主机。 AWS 区域 另请查看 Amazon GameLift Servers 的实例集位置[配额](https://docs.aws.amazon.com/general/latest/gr/gamelift.html#limits_gamelift)。

   1. 选择对此实例集使用**按需型**实例或**竞价型**实例。有关实例集类型的更多信息，请参阅[按需型实例和竞价型实例](gamelift-compute.md#gamelift-compute-spot)。

1. 选择符合您需求且可在所有选定位置使用的 Amazon EC2 **实例配置**。此列表是根据您当前选择的位置和实例集类型进行筛选的。您可以按其他因素（如实例类型系列和架构）对其进行进一步筛选。创建实例集后无法更改实例类型。

   某些位置的实例类型选择有限。如果您首选的实例类型并非在所有位置都可用，请选择位置可用性值以查看完整详细信息。为了纳入所有位置，您可能需要创建具有不同实例类型的单独实例集。

   有关选择实例类型的更多信息，请参阅[实例类型](gamelift-compute.md#gamelift-compute-instance)。要了解有关 Amazon A EC2 rm 架构的更多信息，请参阅 [AWS Graviton 处理器和](https://aws.amazon.com/ec2/graviton/)[亚马逊 EC2实例类型](https://aws.amazon.com/ec2/instance-types/)。有关支持的实例类型的完整列表Amazon GameLift Servers，请参阅 [EC2InstanceType](https://docs.aws.amazon.com/gameliftservers/latest/apireference/API_CreateFleet.html#gamelift-CreateFleet-request-EC2InstanceType)(`CreateFleet()`) 的 API 参考。
**注意**  
Graviton Arm 实例需要一个针对 Linux AMI 的服务器生成包。C\+\+ 和 C\# 需要服务器软件开发工具包 5.1.1 或更高版本。Go 需要服务器软件开发工具包 5.0 或更高版本。这些实例不 out-of-the-box支持在亚马逊 Linux 2023 (AL2023) 或亚马逊 Linux 2 (AL2) 上安装 Mono。

1. 选择**下一步**以继续工作流程。

**步骤 4 配置运行时**  
在此步骤中，描述您希望实例集中的每个实例如何运行您的游戏服务器软件。为要在实例上运行的每个可执行文件定义一个单独的服务器进程行项目，并确定要并发运行的服务器进程的数量。在每个实例上打开端口，以允许玩家直接连接到游戏服务器。您可以随时更新这些实例集设置。  
**对于最低实例集配置：**  
+ 为游戏服务器可执行文件定义一个服务器进程行项目。如果您的游戏服务器需要运行其他进程，请同时为每个进程创建一个定义。
+ 对每个行项目使用默认的并发进程数（1）。
+ 跳过游戏会话激活设置。
+ 指定单个端口号。
+ 跳过游戏会话资源设置。

1. 创建**运行时配置**，指示 Amazon GameLift Servers 如何在实例集中的每个实例上运行服务器进程。部署后，您可以随时更改实例集的运行时配置。

   1. 在生成包中输入可执行文件的**启动路径**。在 Windows 实例上，游戏服务器可执行文件被构建到路径 `C:\game`。在 Linux 实例上，游戏服务器被构建到 `/local/game`。示例：**C:\\game\\MyGame\\server.exe** 或 **/local/game/MyGame/server.exe**。

   1. 输入可选的**启动参数**以传递给游戏可执行文件。示例：**\+sv\_port 33435 \+start\_lobby**。

   1. 指定要在每个实例上运行的**并发进程**的数量。对于游戏服务器可执行文件，每个进程可以托管一个游戏会话，因此并发进程决定了实例可以同时托管的游戏会话数量。

      查看每个实例的服务器进程的 Amazon GameLift Servers [配额](https://docs.aws.amazon.com/general/latest/gr/gamelift.html#limits_gamelift)。这些配额适用于所有配置的并发进程总数。如果配置的实例集超出这些配额，实例集将无法激活。

1. 使用**游戏会话激活**默认值或为您的游戏自定义该值。如果运行时配置要求每个实例有多个并发游戏服务器进程，这些设置将决定新游戏会话的启动速度。

   1. 设置**最大并发游戏会话激活**，以限制实例上正在准备新游戏会话的游戏服务器的数量。当启动多个新游戏会话需要耗费大量资源并可能影响其他正在运行的游戏会话的性能时，此设置非常有用。

   1. 设置**新激活超时**，以反映新游戏会话完成激活和报告已准备好托管玩家所需的最长时间。如果游戏会话激活超过此值，Amazon GameLift Servers 将终止激活。

1. 打开**EC2 端口设置**以允许入站流量访问队列中的服务器进程。创建实例集不需要这些设置，但您需要先完成这些设置，然后玩家才能连接到实例集上的游戏会话。

   对于每个端口设置，请选择要用于游戏客户端和游戏服务器之间通信的数据传输协议**类型**。使用 CIDR 表示法提供**端口范围**（格式为 `nnnnn[-nnnnn]`）和 **IP 地址范围**（例如 **0.0.0.0/0**，它允许任何人访问）。

   如果您需要设置多个不连续的范围，请创建多个端口设置。

1. 指定可选的**游戏会话资源设置**。部署后，您可以随时更新这些设置。

   1. 为实例集中的所有实例开启或关闭**游戏扩展保护策略**。在缩减事件期间，如果受保护的实例集实例正在托管活动游戏会话，Amazon GameLift Servers 不会终止这些实例。

   1. 如果要限制一名玩家在指定时间范围内可以创建的游戏会话的数量，请设置最大**资源创建限制**。

1. 选择**下一步**以继续工作流程。

**步骤 5 审核并创建**  
在创建实例集之前，请审查您的设置。尽管有些设置可以在以后更新（请参阅[更新 Amazon GameLift Servers 实例集配置](fleets-editing.md)），但创建实例集后不允许更改以下设置：  
+ 计算类型：您无法将托管 EC2 队列转换为 Anywhere 队列。
+ 游戏服务器二进制文件：若要部署游戏服务器生成包的更新，必须创建一个新的实例集。
+ 其他选项，包括实例角色和 TLS 证书生成。
+ 实例详细信息，包括队列类型（竞价型或按需型）和 EC2 实例类型。
当您准备好部署新实例集时，请选择**创建**。Amazon GameLift Servers 会立即开始实例集激活流程，分配一个唯一 ID 并将实例集状态设为 `NEW`。在**实例集**页面中跟踪实例集的进度。查看实例集的详细信息页面，然后转到**事件**选项卡。  
您可以在实例集进入 ACTIVE 状态后调整实例集的托管容量。Amazon GameLift Servers 最初在每个实例集位置部署一个包含单个实例的实例集，您可以通过向每个位置添加实例来调整容量。有关更多信息，请参阅 [利用 Amazon GameLift Servers 扩展游戏托管容量](fleets-manage-capacity.md)。

------
#### [ AWS CLI ]

使用 [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/gamelift/create-fleet.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/gamelift/create-fleet.html) 命令创建计算类型 `EC2` 的实例集。Amazon GameLift Servers 会在当前的默认 AWS 区域 中创建实例集资源（您也可以添加 --region 标签来指定其他 AWS 区域）。

**创建最小托管式实例集**

以下示例请求创建了一个新实例集，该实例集具有执行以下操作所需的最低设置：部署一个实例集，其中包含游戏客户端可以连接到的正在运行的游戏服务器。新实例集具有以下特征：
+ 它指定了已上传到 Amazon GameLift Servers 并处于 `READY` 状态的游戏服务器生成包。
+ 它使用 c5.large 按需型实例，这种实例的操作系统与所选游戏生成包匹配。
+ 它将舰队的总部设置 AWS 区域 为该区域，`us-west-2`并将实例部署到该区域。
+ 根据运行时配置，实例集中的每个计算运行一个游戏服务器进程，这意味着每个计算一次只能托管一个游戏会话。游戏会话激活超时设置为默认值 300 秒，并且对并发激活的数量没有限制。
+ 玩家可以使用单端口设置 `33435` 连接到游戏服务器。
+ 所有其他功能要么已关闭，要么使用默认设置。

```
aws gamelift create-fleet \
    --name MinimalFleet123 \
    --description "A basic test fleet" \
    --region us-west-2 \
    --ec2-instance-type c5.large \
    --fleet-type ON_DEMAND \
    --build-id build-1111aaaa-22bb-33cc-44dd-5555eeee66ff \
    --runtime-configuration "ServerProcesses=[{LaunchPath=C:\game\Bin64.dedicated\MultiplayerSampleProjectLauncher_Server.exe, ConcurrentExecutions=10}]" \
    --ec2-inbound-permissions "FromPort=33435,ToPort=33435,IpRange=0.0.0.0/0,Protocol=UDP"
```

**创建完全配置的托管式实例集**

以下示例请求创建了一个生产实例集，该实例集具有所有可选功能的设置。新实例集具有以下特征：
+ 它指定了已上传到 Amazon GameLift Servers 并处于 `READY` 状态的游戏服务器生成包。
+ 它使用 c5.large 按需型实例，这种实例的操作系统与所选游戏生成包匹配。
+ 它将舰队的总部设置 AWS 区域 为所在地区`us-west-2`和一个远程位置，并将实例部署到主区域和一个远程位置`sa-east-1`。
+ 根据运行时配置：
  + 实例集中的每个计算运行 10 个具有相同启动参数的游戏服务器进程，这意味着每个计算最多可以同时托管 10 个游戏会话。
  + 在每个计算上，仅允许同时激活两个游戏会话。激活的游戏会话必须在 300 秒（5 分钟）内准备好托管玩家，否则会被终止。
+ 玩家可以使用范围为 `33435 to 33535` 的端口连接到游戏服务器。
+ 它为游戏客户端和服务器之间的加密通信生成 TLS 证书。
+ 实例集中的所有游戏会话都会开启游戏会话保护。
+ 单个玩家在 15 分钟内只能创建三个新的游戏会话。
+ 此实例集的指标包含在指标组 `AMERfleets` 中，该指标组（在本例中）汇总了北美、中美和南美的一组实例集的指标。

```
aws gamelift create-fleet \
    --name ProdFleet123 \
    --description "A fully configured prod fleet" \
    --ec2-instance-type c5.large \
    --region us-west-2 \
    --locations "Location=sa-east-1" \
    --fleet-type ON_DEMAND \
    --build-id build-1111aaaa-22bb-33cc-44dd-5555eeee66ff \
    --certificate-configuration "CertificateType=GENERATED" \
    --runtime-configuration "GameSessionActivationTimeoutSeconds=300, MaxConcurrentGameSessionActivations=2, ServerProcesses=[{LaunchPath=C:\game\Bin64.dedicated\MultiplayerSampleProjectLauncher_Server.exe, Parameters=+sv_port 33435 +start_lobby, ConcurrentExecutions=10}]" \
    --new-game-session-protection-policy "FullProtection" \
    --resource-creation-limit-policy "NewGameSessionsPerCreator=3, PolicyPeriodInMinutes=15" \
    --ec2-inbound-permissions "FromPort=33435,ToPort=33535,IpRange=0.0.0.0/0,Protocol=UDP" \
    --metric-groups  "AMERfleets"
```

如果创建实例集请求成功，Amazon GameLift Servers 将返回一组实例集属性，其中包含您请求的配置设置和新的实例集 ID。然后，Amazon GameLift Servers 会启动实例集激活进程，并将实例集状态和位置状态设置为 **New**。您可以使用以下 CLI 命令跟踪实例集的状态并查看其他实例集信息：
+ [describe-fleet-events](https://docs.aws.amazon.com/cli/latest/reference/gamelift/describe-fleet-events.html)
+ [describe-fleet-attributes](https://docs.aws.amazon.com/cli/latest/reference/gamelift/describe-fleet-attributes.html)
+ [describe-fleet-capacity](https://docs.aws.amazon.com/cli/latest/reference/gamelift/describe-fleet-capacity.html)
+ [describe-fleet-port-settings](https://docs.aws.amazon.com/cli/latest/reference/gamelift/describe-fleet-port-settings.html)
+ [describe-fleet-utilization](https://docs.aws.amazon.com/cli/latest/reference/gamelift/describe-fleet-utilization.html)
+ [describe-runtime-configuration](https://docs.aws.amazon.com/cli/latest/reference/gamelift/describe-runtime-configuration.html)
+ [describe-fleet-location-attributes](https://docs.aws.amazon.com/cli/latest/reference/gamelift/describe-fleet-location-attributes.html)
+ [describe-fleet-location-capacity](https://docs.aws.amazon.com/cli/latest/reference/gamelift/describe-fleet-location-capacity.html)
+ [describe-fleet-location-utilization](https://docs.aws.amazon.com/cli/latest/reference/gamelift/describe-fleet-location-utilization.html)

您可以使用以下命令，根据需要更改实例集的容量和其他配置设置：
+ [update-fleet-attributes](https://docs.aws.amazon.com/cli/latest/reference/gamelift/update-fleet-attributes.html)
+ [update-fleet-capacity](https://docs.aws.amazon.com/cli/latest/reference/gamelift/update-fleet-capacity.html)
+ [update-fleet-port-settings](https://docs.aws.amazon.com/cli/latest/reference/gamelift/update-fleet-port-settings.html)
+ [update-runtime-configuration](https://docs.aws.amazon.com/cli/latest/reference/gamelift/update-runtime-configuration.html)
+ [create-fleet-locations](https://docs.aws.amazon.com/cli/latest/reference/gamelift/create-fleet-locations.html)
+ [delete-fleet-locations](https://docs.aws.amazon.com/cli/latest/reference/gamelift/delete-fleet-locations.html)

------