

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

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

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

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

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

**创建托管 EC2 车队**

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

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

**创建托管 EC2 车队**

1. 在 [Amazon GameLift Servers 控制台](https://console.amazonaws.cn/gamelift/)的导航窗格中，选择**实例集**。

1. 在**实例集**页面上，选择**创建实例集**。

1. 选择**托管 EC2**。

1. 在**实例集详细信息**页面上，执行以下操作：

   1. 对于**名称**，输入新名称。我们建议将实例集类型（竞价型或按需型）包含在实例集名称中。这使得在查看实例集列表时可以更轻松地识别实例集类型。

   1. 在**描述**中，提供对实例集的简短描述。

   1. 对于**二进制类型**，选择**生成包**以标识要部署到此实例集的游戏服务器类型。

   1. 从之前上传的游戏服务器生成包的下拉列表中选择一个**生成包**。

1. （可选）在**其他详细信息**下显示以下内容：

   1. 对于**实例角色**，请指定一个 IAM 角色，该角色授权游戏构建中的应用程序访问您账户中的其他 Amazon 资源。有关更多信息，请参阅 [将您的Amazon GameLift Servers托管游戏服务器连接到其他 Amazon 资源](gamelift-sdk-server-resources.md)。要创建具有实例角色的实例集，您的账户必须拥有 IAM `PassRole` 权限。有关更多信息，请参阅 [Amazon GameLift Servers 的 IAM 权限示例](gamelift-iam-policy-examples.md)。

      无法在创建实例集后更新这些设置。

   1. 对于**指标组**，输入新的或现有实例集指标组的名称。可以通过将多个实例集添加到同一个指标组来聚合指标。

      实例集创建后，您无法更新指标组。

1. 选择**下一步**。

1. 在**选择位置**页面上，选择一个或多个其他远程位置来部署实例。系统会根据您访问控制台的区域自动选择主区域。如果您选择其他位置，则实例集实例也将部署在这些位置。
**重要**  
要使用默认情况下未启用的区域，请在您的中将其启用 Amazon Web Services 账户。  
对于在 2022 年 2 月 28 日之前创建的、包含未启用区域的实例集，此要求不会对其产生影响。
要创建新的多位置实例集或更新现有的多位置实例集，请先启用您选择使用的任何区域或 Local Zones。
有关默认情况下未启用的区域以及如何启用这些区域的更多信息，请参阅《Amazon Web Services 一般参考》**中的[管理 Amazon Web Services 区域](https://docs.amazonaws.cn/general/latest/gr/rande-manage.html)。请参阅《Amazon Local Zones 用户指南》**中的 [Local Zones 入门](https://docs.amazonaws.cn/local-zones/latest/ug/getting-started.html)。

1. 选择**下一步**。

1. 在**定义实例详细信息页面上**，选择 

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

   1. 从**筛选架构**菜单中选择 **x64** 或 **Arm**。
**注意**  
Graviton Arm 实例需要一个针对 Linux AMI 的服务器生成包。C\$1\$1 和 C\$1 需要服务器软件开发工具包 5.1.1 或更高版本。Go 需要服务器软件开发工具包 5.0 或更高版本。这些实例不 out-of-the-box支持在亚马逊 Linux 2023 (AL2023) 或亚马逊 Linux 2 (AL2) 上安装 Mono。

       有关 Amazon A EC2 rm 架构的信息，请参阅 [Amazon Graviton 处理器和](https://www.amazonaws.cn/ec2/graviton/)[亚马逊 EC2 实例类型](https://www.amazonaws.cn/ec2/instance-types/)。

   有关支持的实例类型的信息Amazon GameLift Servers，请参阅 [CreateFleet() 请求参数](https://docs.amazonaws.cn/gameliftservers/latest/apireference/API_CreateFleet.html#API_CreateFleet_RequestParameters)下的`EC2InstanceType`值。

1. 从列表中选择一个 Amazon EC2 **实例类型**。有关选择实例类型的更多信息，请参阅[实例类型](gamelift-compute.md#gamelift-compute-instance)。创建实例集后无法更改实例类型。

1. 选择**下一步**。

1. 在**配置运行时系统**页面的**运行时配置**下，执行以下操作：

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

   1. （可选）对于**启动参数**，输入要作为一组命令行参数传递给游戏可执行文件的信息。示例：**\$1sv\$1port 33435 \$1start\$1lobby**。

   1. 对于**并发进程**，请选择要在实例集中的每个实例上同时运行的服务器进程数。查看 Amazon GameLift Servers 对并发服务器进程数量的[限制](https://www.amazonaws.cn//ec2/faqs/#Is_Amazon_EC2_used_in_conjunction_with_Amazon_S3)。

      对每个实例的并发服务器进程数的限制应用到所有配置的并发进程总数上。如果配置实例集超出限制，实例集无法激活。

1. 在**游戏会话激活**下，提供在此实例集中的实例上激活新游戏会话的限制：

   1. 对于**最大并发游戏会话激活**，输入实例中同时激活的游戏会话的数量。当启动多个新的游戏会话可能会对在实例上运行的其他游戏会话造成性能影响时，此限制非常有用。

   1. 对于**新激活超时**，输入等待会话激活的时长。如果游戏会话在超时之前没有变为 `ACTIVE` 状态，Amazon GameLift Servers 将终止游戏会话激活。

1. （可选）在 **“EC2 端口设置”** 下，执行以下操作：

   1. 选择**添加端口设置**以定义连接到部署在此实例集上的服务器进程的入站流量的访问权限。

   1. 对于**类型**，选择**自定义 TCP** 或**自定义 UDP**。

   1. 对于**端口范围**，输入允许入站连接的端口号范围。端口范围必须使用格式 `nnnnn[-nnnnn]`，值介于 1026 和 60000 之间。示例：**1500** 或 **1500-20000**。

   1. 对于 **IP 地址范围**，输入 IP 地址的范围。使用 CIDR 表示法。示例：**0.0.0.0/0**（此示例允许尝试连接的任何人的访问。）

1. （可选）在**游戏会话资源设置**下，执行以下操作：

   1. 对于**游戏扩缩保护策略**，请打开或关闭扩缩保护。如果实例托管了活动游戏会话，则在缩减事件中，Amazon GameLift Servers 不会终止该实例。

   1. 对于**资源创建限制**，输入策略期限内玩家可以创建的最大游戏会话数。

1. 选择**下一步**。

1. （可选）通过输入**键**和**值**对向构建添加标签。选择**下一步**继续查看实例集创建。

1. 选择**创建**。Amazon GameLift Servers 会分配一个 ID 至新实例集，并开始实例集激活过程。您可以在**实例集**页面上跟踪新实例集的状态。

您可以随时更新实例集的元数据和配置，无论实例集状态如何。有关更多信息，请参阅 [更新 Amazon GameLift Servers 实例集配置](fleets-editing.md)。您能在实例集进入 ACTIVE 状态之后更新实例集容量。有关更多信息，请参阅 [利用 Amazon GameLift Servers 扩展游戏托管容量](fleets-manage-capacity.md)。您还可以添加或删除远程位置。

------
#### [ Amazon 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 会在当前的默认 Amazon Web Services 区域 中创建实例集资源（您也可以添加 --region 标签来指定其他 Amazon Web Services 区域）。

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

以下示例请求创建了一个新实例集，该实例集具有执行以下操作所需的最低设置：部署一个实例集，其中包含游戏客户端可以连接到的正在运行的游戏服务器。新实例集具有以下特征：
+ 它指定了已上传到 Amazon GameLift Servers 并处于 `READY` 状态的游戏服务器生成包。
+ 它使用 c5.large 按需型实例，这种实例的操作系统与所选游戏生成包匹配。
+ 它将舰队的总部设置 Amazon Web Services 区域 为该区域，`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 按需型实例，这种实例的操作系统与所选游戏生成包匹配。
+ 它将舰队的总部设置 Amazon Web Services 区域 为所在地区`us-west-2`和一个远程位置，并将实例部署到主区域和一个远程位置`sa-east-1`。
+ 根据运行时配置：
  + 实例集中的每个计算运行 10 个具有相同启动参数的游戏服务器进程，这意味着每个计算最多可以同时托管 10 个游戏会话。
  + 在每个计算上，仅允许同时激活两个游戏会话。激活的游戏会话必须在 300 秒（5 分钟）内准备好托管玩家，否则会被终止。
+ 玩家可以使用范围为 `33435 to 33535` 的端口连接到游戏服务器。
+ 实例集中的所有游戏会话都会开启游戏会话保护。
+ 单个玩家在 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.amazonaws.cn/cli/latest/reference/gamelift/describe-fleet-events.html)
+ [describe-fleet-attributes](https://docs.amazonaws.cn/cli/latest/reference/gamelift/describe-fleet-attributes.html)
+ [describe-fleet-capacity](https://docs.amazonaws.cn/cli/latest/reference/gamelift/describe-fleet-capacity.html)
+ [describe-fleet-port-settings](https://docs.amazonaws.cn/cli/latest/reference/gamelift/describe-fleet-port-settings.html)
+ [describe-fleet-utilization](https://docs.amazonaws.cn/cli/latest/reference/gamelift/describe-fleet-utilization.html)
+ [describe-runtime-configuration](https://docs.amazonaws.cn/cli/latest/reference/gamelift/describe-runtime-configuration.html)
+ [describe-fleet-location-attributes](https://docs.amazonaws.cn/cli/latest/reference/gamelift/describe-fleet-location-attributes.html)
+ [describe-fleet-location-capacity](https://docs.amazonaws.cn/cli/latest/reference/gamelift/describe-fleet-location-capacity.html)
+ [describe-fleet-location-utilization](https://docs.amazonaws.cn/cli/latest/reference/gamelift/describe-fleet-location-utilization.html)

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

------