

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 設定 的 VPC 對等互連 Amazon GameLift Servers
<a name="vpc-peering"></a>

本主題提供如何在您的 Amazon GameLift Servers 託管遊戲伺服器和其他非 Amazon GameLift Servers 資源間設定 VPC 對等互連的指導。使用 Amazon Virtual Private Cloud (VPC) 對等連線，讓您的遊戲伺服器能夠直接和私下與您的其他 AWS 資源通訊，例如 Web 服務或儲存庫。您可以使用在 上執行的任何資源建立 VPC 對等互連， AWS 並由您有權存取 AWS 的帳戶管理。

**注意**  
VPC 對等互連是進階功能。若要了解讓遊戲伺服器直接和私下與其他 AWS 資源通訊的偏好選項，請參閱 [將Amazon GameLift Servers託管遊戲伺服器連接到其他 AWS 資源](gamelift-sdk-server-resources.md)。

如果您已經熟悉 Amazon VPCs 和 VPC 對等互連，請了解與Amazon GameLift Servers遊戲伺服器設定對等互連有些不同。您無法存取包含遊戲伺服器的 VPC，其由 Amazon GameLift Servers服務控制，因此您無法直接請求 VPC 對等互連。您會改為先授權 VPC 使用非 Amazon GameLift Servers 資源的權利，以接受來自 Amazon GameLift Servers 服務的對等互連請求。然後觸發 Amazon GameLift Servers 以請求您剛授權的 VPC 對等。Amazon GameLift Servers 會處理建立對等連線、設定路由表以及設定連線的任務。

## VPC 對等互連的 IAM 許可
<a name="vpc-peering-iam-permissions"></a>

Amazon GameLift Servers 使用發起人的登入資料來更新對等 VPC 資源。呼叫 `CreateVpcPeeringAuthorization`或 `CreateVpcPeeringConnection` 必須啟用下列 Amazon EC2 許可的 IAM 使用者：
+ `ec2:AcceptVpcPeeringConnection`
+ `ec2:AuthorizeSecurityGroupEgress`
+ `ec2:AuthorizeSecurityGroupIngress`
+ `ec2:CreateRoute`
+ `ec2:DescribeRouteTables`
+ `ec2:DescribeSecurityGroups`

## 為現有機群設定 VPC 對等互連
<a name="vpc-peering-existing"></a>

1. 

**取得 AWS 帳戶 ID (s) 和登入資料。**

   您需要下列 AWS 帳戶的 ID 和登入憑證。您可以登入 [AWS 管理主控台](https://console.aws.amazon.com/)並檢視您的帳戶設定來尋找帳戶 AWS IDs。若要取得登入資料，請前往 IAM 主控台。
   + AWS 用來管理Amazon GameLift Servers遊戲伺服器的 帳戶。
   + AWS 用來管理非Amazon GameLift Servers 資源的 帳戶。

   如果您為 Amazon GameLift Servers和非Amazon GameLift Servers 資源使用相同的帳戶，則只需要該帳戶的 ID 和登入資料。

1. 

**取得每個 VPC 的識別符。**

   取得要進行對等互連兩個 VPC 的以下資訊：
   + Amazon GameLift Servers 遊戲伺服器的 VPC – 這是您的Amazon GameLift Servers機群 ID。您的遊戲伺服器會在 EC2 執行個體叢集上的 Amazon GameLift Servers 內部署。叢集會自動置放在其自身擁有的 VPC 內，且該 VPC 是由 Amazon GameLift Servers 服務進行管理。您無法直接存取 VPC，因此會以機群 ID 識別。
   + 非 Amazon GameLift Servers AWS 資源的 VPC – 您可以使用在 上執行的任何資源建立 VPC 對等互連， AWS 並由您有權存取 AWS 的帳戶管理。如果您尚未為這些資源建立 VPC，請參閱 [Amazon VPC 入門](https://docs.aws.amazon.com/vpc/latest/userguide/getting-started-ipv4.html)。建立 VPC 後，您可以透過登入 Amazon VPC 的 [AWS 管理主控台](https://console.aws.amazon.com/)並檢視您的 VPC，來找到 VPC ID。
**注意**  
設定對等互連時，兩個 VPC 都必須存在相同區域。您 Amazon GameLift Servers 叢集遊戲伺服器的 VPC 位於和叢集相同的區域內。

1. 

**授權 VPC 對等。**

   在此步驟中，您會預先授權未來來自 Amazon GameLift Servers 的請求，允許其針對非 Amazon GameLift Servers 資源與 VPC 建立與遊戲伺服器之 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 遊戲伺服器的帳戶進行此呼叫。使用下列資訊來識別您要建立對等互連的兩個 VPC：
   + 對等 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 (s) 和登入資料。**

   您需要以下兩個 AWS 帳戶的 ID 和登入憑證。您可以登入 [AWS 管理主控台](https://console.aws.amazon.com/)並檢視您的帳戶設定來尋找帳戶 AWS IDs。若要取得登入資料，請前往 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 帳戶或使用者/使用者群組下管理Amazon GameLift Servers，則在下一個步驟中請求授權時，您將需要使用這些帳戶登入資料。

   一旦建立了 VPC，您可以透過檢視 VPC，在 Amazon VPC 主控台中尋找 VPC ID。

1. 

**授權 VPC 對等互連使用非 Amazon GameLift Servers 資源的權利。**

   當 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 – VPC 與非Amazon GameLift Servers 資源的 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. 遵循[使用 CLI AWS 建立新機群](fleets-creating.md)的指示。包含下列其他參數：
   + *peer-vpc-aws-account-id* – 您用來使用非Amazon GameLift Servers 資源管理 VPC 之帳戶的 ID。
   + *peer-vpc-id* – VPC 與您非Amazon GameLift Servers 帳戶的 ID。

使用 VPC 對等互連參數成功呼叫 [create-fleet](https://docs.aws.amazon.com/cli/latest/reference/gamelift/create-fleet.html) 會產生新的叢集及新的 VPC 對等互連請求。會將機群狀態設為**新建**且會起始化機群啟動程序。對等連線請求的狀態是設定為 **initiating-request**。您可以透過呼叫 [describe-vpc-peering-connections](https://docs.aws.amazon.com/cli/latest/reference/gamelift/describe-vpc-peering-connections.html) 來追蹤對等請求的成功或失敗。

同時請求新機群和 VPC 對等連線時，兩個動作會一起成功或失敗。若叢集在建立程序期間失敗，便不會建立 VPC 對等互連。同樣地，若 VPC 對等互連因任何原因失敗，新叢集也將無法從**正在啟用**狀態移動到**作用中**狀態。

**注意**  
在機群準備好成為作用中前，新 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 授權狀態。它可能不存在或可能已過期。
  + 檢查您嘗試建立對等互連的兩個 VPC 區域。如果它們不在同一個區域，則無法建立其對等互連。
+ 兩個 [ VPC 的 CIDR 區塊 （請參閱無效的 VPC 對等互連組態](https://docs.aws.amazon.com/vpc/latest/peering/invalid-peering-configurations.html#overlapping-cidr)) 重疊。 VPCs 指派給對等 VPC 的 IPv4 CIDR 區塊不能重疊。機Amazon GameLift Servers群 VPC 的 CIDR 區塊會自動指派且無法變更，因此您需要為非Amazon GameLift Servers 資源變更 VPC 的 CIDR 區塊。若要解決此問題：
  + 透過呼叫 `DescribeVpcPeeringConnections()` 來查詢 Amazon GameLift Servers 機群的 CIDR 區塊。
  + 前往 Amazon VPC 主控台，為非 Amazon GameLift Servers 資源尋找 VPC，然後變更 CIDR 區塊，使其不重疊。
+ 新的機群未啟用 (在與新機群請求 VPC 對等時)。如果新機群無法進入**作用中**狀態，表示沒有可以建立對等互連的 VPC，因此對等連線無法成功。
+ 當 API 呼叫擲回沒有例外狀況時，找不到 VPC 對等互連。檢查機群下用於為任何事件建立 VPC 互連連線的機群`FLEET_VPC_PEERING_FAILED`事件。
+ VPC 互連連線建立失敗，機群事件`FLEET_VPC_PEERING_FAILED`和指出角色未獲授權存取 VPC 的訊息。確認用於建立 VPC 互連授權的 IAM 角色或使用者包含 的動作、資源和條件金鑰中列出的必要 EC2 許可。 [https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazongameliftservers.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazongameliftservers.html)