

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

# 为 Amazon GameLift Servers 设置 VPC 对等连接
<a name="vpc-peering"></a>

本主题提供有关如何在 Amazon GameLift Servers 托管游戏服务器与其他非 Amazon GameLift Servers 资源之间建立 VPC 对等连接的指导。使用亚马逊虚拟私有云 (VPC) Virtual Private Cloud 对等连接使您的游戏服务器能够与您的 AWS 其他资源（例如 Web 服务或存储库）进行直接私密通信。您可以与任何在您有权访问的 AWS 账户上运行 AWS 并由其管理的资源建立 VPC 对等关系。

**注意**  
VPC 对等连接是一项高级特征。要了解使您的游戏服务器能够与其他 AWS 资源进行直接和私密通信的首选选项，请参阅[将您的Amazon GameLift Servers托管游戏服务器连接到其他 AWS 资源](gamelift-sdk-server-resources.md)。

如果您已经熟悉 Amazon VPCs 和 VPC 对等互连，请理解，设置与Amazon GameLift Servers游戏服务器的对等互连有些不同。您无权访问包含游戏服务器的 VPC（该 VPC 由 Amazon GameLift Servers 服务控制），因此无法直接为其请求 VPC 对等连接。而应首先对非 Amazon GameLift Servers 资源预授权 VPC，以接受来自 Amazon GameLift Servers 服务的对等连接请求。然后，触发 Amazon GameLift Servers 以请求刚刚授权的 VPC 对等连接。Amazon GameLift Servers 处理创建对等连接、设置路由表和配置连接的任务。

## 为现有实例集设置 VPC 对等连接
<a name="vpc-peering-existing"></a>

1. 

**获取 AWS 账户 ID 和凭证。**

   您需要以下 AWS 账户的 ID 和登录凭证。您可以 IDs 通过登录[AWS 管理控制台](https://console.aws.amazon.com/)并查看您的账户设置来找到 AWS 账户。要获取凭证，请转到 IAM 控制台。
   + AWS 用于管理Amazon GameLift Servers游戏服务器的帐户。
   + AWS 用于管理非Amazon GameLift Servers资源的帐户。

   如果您对 Amazon GameLift Servers 和非 Amazon GameLift Servers 资源使用同一账户，则仅需该账户的 ID 和凭证。

1. 

**为每个 VPC 获取标识符。**

   获取以下信息，以便两者 VPCs 相互对等：
   + Amazon GameLift Servers 游戏服务器的 VPC：这是您的 Amazon GameLift Servers 实例集 ID。您的游戏服务器部署在 EC2 实例的队组上的 Amazon GameLift Servers 中。队组都自动放置在自己的 VPC 中，后者由 Amazon GameLift Servers 服务进行管理。您没有 VPC 的直接访问权限，因此使用实例集 ID 标识。
   + 您的非Amazon GameLift Servers AWS 资源的 VPC — 您可以与您有权访问的 AWS 账户上运行 AWS 并由其管理的任何资源建立 VPC 对等关系。如果您还没有为这些资源创建 VPC，请参阅 [Amazon VPC 入门](https://docs.aws.amazon.com/vpc/latest/userguide/getting-started-ipv4.html)。创建 VPC 后，您可以通过登录[AWS 管理控制台](https://console.aws.amazon.com/)适用于 Amazon 的 VPC 并查看您的 VPC 来找到 VPC ID VPCs。
**注意**  
设置对等互连时，两者 VPCs 必须位于同一区域。您的 Amazon GameLift Servers 队组游戏服务器的 VPC 与队组在相同区域中。

1. 

**授权 VPC 对等连接。**

   在此步骤中，您预授权将来从 Amazon GameLift Servers 将用于游戏服务器的 VPN 与用于非 Amazon GameLift Servers 资源的 VPC 建立对等连接的请求。此操作将更新您的 VPC 的安全组。

   要授权 VPC 对等互连，请调用服务 API [ CreateVpcPeeringAuthorization()](https://docs.aws.amazon.com/gamelift/latest/apireference/API_CreateVpcPeeringAuthorization.html) 或使用 AWS CLI 命令`create-vpc-peering-authorization`。使用管理您的非 Amazon GameLift Servers 资源的账户发出此调用。确定以下信息：
   + 对等 VPC ID：这是针对非 Amazon GameLift Servers 资源的 VPC。
   + Amazon GameLift Servers AWS 账户 ID — 这是您用来管理Amazon GameLift Servers车队的账户。

   授权 VPC 对等连接后，授权将在 24 小时内保持有效，除非您将其撤销。您可以使用以下操作管理您的 VPC 对等连接授权：
   + [DescribeVpcPeeringAuthorizations()](https://docs.aws.amazon.com/gamelift/latest/apireference/API_DescribeVpcPeeringAuthorizations.html) (AWS CLI`describe-vpc-peering-authorizations`)。
   + [DeleteVpcPeeringAuthorization()](https://docs.aws.amazon.com/gamelift/latest/apireference/API_DeleteVpcPeeringAuthorization.html) (AWS CLI`delete-vpc-peering-authorization`)。

1. 

**请求对等连接。**

   使用有效授权，您可以请求 Amazon GameLift Servers 建立对等连接。

   要请求 VPC 对等互连，请调用服务 API [CreateVpcPeeringConnection()](https://docs.aws.amazon.com/gamelift/latest/apireference/API_CreateVpcPeeringConnection.html) 或使用 AWS CLI 命令`create-vpc-peering-connection`。使用管理您的 Amazon GameLift Servers 游戏服务器的账户发出此调用。使用以下信息来确定要 VPCs 对等的两个：
   + 对等 VPC ID 和 AWS 账户 ID — 这是您的非Amazon GameLift Servers资源的 VPC，也是您用来管理这些资源的账户。VPC ID 必须与有效对等授权上的 ID 匹配。
   + 实例集 ID：此信息标识您的 Amazon GameLift Servers 游戏服务器的 VPC。

1. 

**跟踪对等连接状态。**

   请求 VPC 对等连接是一个异步操作。要跟踪对等请求的状态并处理成功或失败的案例，请使用以下选项之一：
   + 使用 `DescribeVpcPeeringConnections()` 持续轮询。此操作将检索 VPC 对等连接记录，包括请求的状态。如果已成功创建对等连接，则连接记录也包含分配给 VPC 的私有 IP 地址的 CIDR 块。
   + 使用 [DescribeFleetEvents()](https://docs.aws.amazon.com/gamelift/latest/apireference/API_DescribeFleetEvents.html) 处理与 VPC 对等连接相关的队列事件，包括成功和失败事件。

建立对等连接后，您可以立即使用以下操作对其进行管理：
+ [DescribeVpcPeeringConnections()](https://docs.aws.amazon.com/gamelift/latest/apireference/API_DescribeVpcPeeringConnections.html) (AWS CLI`describe-vpc-peering-connections`)。
+ [DeleteVpcPeeringConnection()](https://docs.aws.amazon.com/gamelift/latest/apireference/API_DeleteVpcPeeringConnection.html) (AWS CLI`delete-vpc-peering-connection`)。

## 使用新实例集设置 VPC 对等连接
<a name="fleets-creating-aws-cli-vpc"></a>

您可以创建一个新 Amazon GameLift Servers 队组，同时请求 VPC 对等连接。

1. 

**获取 AWS 账户 ID 和凭证。**

   您需要以下两个 AWS 账户的 ID 和登录凭证。您可以 IDs 通过登录[AWS 管理控制台](https://console.aws.amazon.com/)并查看您的账户设置来找到 AWS 账户。要获取凭证，请转到 IAM 控制台。
   + AWS 用于管理Amazon GameLift Servers游戏服务器的帐户。
   + AWS 用于管理非Amazon GameLift Servers资源的帐户。

   如果您对 Amazon GameLift Servers 和非 Amazon GameLift Servers 资源使用同一账户，则仅需该账户的 ID 和凭证。

1. 

**获取您的非Amazon GameLift Servers AWS 资源的 VPC ID。**

   如果您还没有为这些资源创建 VPC，请现在创建（请参阅 [Amazon VPC 入门](https://docs.aws.amazon.com/vpc/latest/userguide/getting-started-ipv4.html)）。请确保您在计划创建新实例集的同一区域中创建新的 VPC。如果您的非Amazon GameLift Servers资源在与您使用的 AWS 账户或 user/user 组不同的账户或组下管理Amazon GameLift Servers，则在下一步中请求授权时，您需要使用这些账户凭证。

   创建 VPC 后，您可以通过查看自己的，在 Amazon VPC 控制台中找到 VPC ID VPCs。

1. 

**使用非 Amazon GameLift Servers 资源授权 VPC 对等连接。**

   当 Amazon GameLift Servers 创建新队组和对应的 VPC 时，它还会发送请求，以便与您的非 Amazon GameLift Servers 资源的 VPC 建立对等连接。您需要预先对该请求进行授权。此步骤将更新您的 VPC 的安全组。

   使用管理非Amazon GameLift Servers资源的账户凭证，调用服务 API [ CreateVpcPeeringAuthorization()](https://docs.aws.amazon.com/gamelift/latest/apireference/API_CreateVpcPeeringAuthorization.html) 或使用 AWS CLI 命令`create-vpc-peering-authorization`。确定以下信息：
   + 对等 VPC ID：包含您的非 Amazon GameLift Servers 资源的 VPC 的 ID。
   + Amazon GameLift Servers AWS 账户 ID — 用于管理Amazon GameLift Servers车队的账户 ID。

   授权 VPC 对等连接后，授权将在 24 小时内保持有效，除非您将其撤销。您可以使用以下操作管理您的 VPC 对等连接授权：
   + [DescribeVpcPeeringAuthorizations()](https://docs.aws.amazon.com/gamelift/latest/apireference/API_DescribeVpcPeeringAuthorizations.html) (AWS CLI`describe-vpc-peering-authorizations`)。
   + [DeleteVpcPeeringAuthorization()](https://docs.aws.amazon.com/gamelift/latest/apireference/API_DeleteVpcPeeringAuthorization.html) (AWS CLI`delete-vpc-peering-authorization`)。

1. 按照说明[使用 AWS CLI 创建新队列](fleets-creating.md)。包括以下其他参数：
   + *peer-vpc-aws-account-i* d — 您用于使用非Amazon GameLift Servers资源管理 VPC 的账户的 ID。
   + *peer-vpc-id*— 使用您的非Amazon GameLift Servers账户的 VPC 的 ID。

使用 VPC 对等参数成功调用 [create-fleet](https://docs.aws.amazon.com/cli/latest/reference/gamelift/create-fleet.html) 后将会生成一个新实例集和一个新 VPC 对等请求。该实例集的状态设置为 **New**，并且将启动实例集激活过程。对等连接请求的状态设置为 **initiating-request**。您可以通过调[describe-vpc-peering-connections](https://docs.aws.amazon.com/cli/latest/reference/gamelift/describe-vpc-peering-connections.html)用来跟踪对等互连请求的成功或失败。

在同时请求新实例集和 VPC 对等连接时，两个操作要么成功，要么失败。如果某个实例集在创建过程中失败，则不会建立 VPC 对等连接。同样，如果 VPC 对等连接由于任何原因失败，则新实例集将无法从 **Activating** 状态变为 **Active** 状态。

**注意**  
新的 VPC 对等连接直到实例集准备好变为活动状态才能完成。这意味着连接不可用，且无法在游戏服务器构建安装过程中使用。

以下示例创建一个新实例集，并在预先建立的 VPC 和新实例集的 VPC 之间创建对等连接。预先建立的 VPC 由您的非Amazon GameLift Servers AWS 账户 ID 和 VPC ID 的组合进行唯一标识。

```
$ AWS gamelift create-fleet
    --name "My_Fleet_1"
    --description "The sample test fleet"
    --ec2-instance-type "c5.large"
    --fleet-type "ON_DEMAND"
    --build-id "build-1111aaaa-22bb-33cc-44dd-5555eeee66ff"
    --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=33435,IpRange=0.0.0.0/0,Protocol=UDP" 
                              "FromPort=33235,ToPort=33235,IpRange=0.0.0.0/0,Protocol=UDP"
    --metric-groups  "EMEAfleets"
    --peer-vpc-aws-account-id "111122223333"
    --peer-vpc-id "vpc-a11a11a"
```

*可复制版本：*

```
AWS gamelift create-fleet --name "My_Fleet_1" --description "The sample test fleet" --fleet-type "ON_DEMAND" --metric-groups "EMEAfleets" --build-id "build-1111aaaa-22bb-33cc-44dd-5555eeee66ff" --ec2-instance-type "c5.large" --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=33435,IpRange=0.0.0.0/0,Protocol=UDP" "FromPort=33235,ToPort=33235,IpRange=0.0.0.0/0,Protocol=UDP" --peer-vpc-aws-account-id "111122223333" --peer-vpc-id "vpc-a11a11a"
```

## VPC 对等连接问题疑难解答
<a name="vpc-peering-troubleshooting"></a>

如果您在为 Amazon GameLift Servers 游戏服务器建立 VPC 对等连接时遇到问题，请考虑以下常见的根本原因：
+ 未找到对所请求连接的授权：
  + 检查非 Amazon GameLift Servers VPC 的 VPC 授权状态。它可能不存在或可能已过期。
  + 检查 VPCs 您要对等的两个区域的区域。如果它们不在同一个区域中，则无法建立对等连接。
+ 您的两 VPCs 个 CIDR 块（请参阅[无效的 VPC 对等连接配置](https://docs.aws.amazon.com/vpc/latest/peering/invalid-peering-configurations.html#overlapping-cidr)）重叠。分配给对等设备的 IPv4 CIDR 块 VPCs 不能重叠。系统会自动为 Amazon GameLift Servers 实例集的 VPC 分配 CIDR 数据块且您无法更改此数据块，因此，您需要为非 Amazon GameLift Servers 资源更改 VPC 的 CIDR 数据块。要解决此问题，请执行以下操作：
  + 通过调用 `DescribeVpcPeeringConnections()` 查找 Amazon GameLift Servers 队组的此 CIDR 块。
  + 转到 Amazon VPC 控制台，查找非 Amazon GameLift Servers 资源的 VPC，然后更改 CIDR 块，以使它们不会重叠。
+ 新实例集未激活（当请求与新实例集建立 VPC 对等连接时）。如果新实例集未能进入**活动**状态，则没有要与之建立对等连接的 VPC，因此对等连接无法成功。