

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

# Amazon GameLift Servers Anywhere 機群
<a name="fleets-intro-anywhere"></a>

當您想要利用自己的託管資源來利用 Amazon GameLift Servers 功能時，請使用 Anywhere機群。Anywhere 機群通常用作反覆開發的測試環境，或混合託管解決方案中的受管機群。

Anywhere 機群包含一組您提供和管理的運算資源 （虛擬或實體）。運算可以位於任何具有連線能力的地理位置，從本機筆記型電腦到遠端前哨站。設定 Anywhere 機群時，您可以透過 註冊運算，將運算新增至機群Amazon GameLift Servers。每個運算都會以其 IP 地址 （或 DNS 名稱） 註冊，讓 Amazon GameLift Servers可以與其建立連線。

您可以在每個運算和啟動遊戲伺服器程序上安裝遊戲伺服器軟體，藉此將遊戲伺服器軟體部署到 Anywhere 機群。每個啟動的遊戲伺服器程序都會建立Amazon GameLift Servers與服務的連線，並報告託管遊戲工作階段的準備程度。您可以使用現有的組態管理和部署工具來處理初始部署和主機管理任務。與 搭配使用需要一些額外的任務Amazon GameLift Servers，包括：
+ 註冊和取消註冊運算，以從機群新增或移除它們。
+ 在所有運算上維持up-to-date身分驗證字符。運算上的伺服器程序會在連線至Amazon GameLift Servers服務時使用它們。

**注意**  
選擇性地使用 Amazon GameLift Servers代理程式部署您的 Anywhere 機群，以自動化這些金鑰管理任務。請參閱 [使用 Amazon GameLift Servers 代理程式](integration-dev-iteration-agent.md)。

請參閱這些主題，了解如何設定和維護 Anywhere 機群：
+  [使用 Amazon GameLift Servers Anywhere 託管的開發藍圖](gamelift-roadmap-anywhere.md)
+  [使用 進行混合託管的開發藍圖 Amazon GameLift Servers](gamelift-roadmap-hybrid.md)
+ [使用 Amazon GameLift ServersAnywhere 設定反覆開發](integration-dev-iteration.md)
+  [建立 Amazon GameLift ServersAnywhere 機群](fleets-creating-anywhere.md)
+  [更新Amazon GameLift Servers機群組態](fleets-editing.md)

## Anywhere 機群建立工作流程
<a name="fleets-creation-workflow-anywhere"></a>

對於 Anywhere 機群，僅Amazon GameLift Servers設定機群資源。您可以設定和註冊機群的運算，並安裝遊戲伺服器軟體並啟動遊戲伺服器程序來託管遊戲工作階段。

1. Amazon GameLift Servers 在機群的主區域中建立機群資源。機群狀態和自訂位置狀態設定為**新增**。

1. Amazon GameLift Servers 開始將事件寫入機群事件日誌。

1. 建立機群資源後， Amazon GameLift Servers會將機群狀態設定為**作用中**。此時，您可以向機群註冊新的運算。

# 建立 Amazon GameLift ServersAnywhere 機群
<a name="fleets-creating-anywhere"></a>

本主題說明如何建立 Amazon GameLift ServersAnywhere 機群。透過 Anywhere 機群，您可以使用核心Amazon GameLift Servers遊戲工作階段管理功能，同時透過您自己的運算資源託管遊戲工作階段。為您的內部部署硬體或其他雲端型資源建立 Anywhere 機群。

Anywhere 機群通常與混合託管解決方案中的Amazon GameLift Servers受管機群一起使用。在開發使用 託管的遊戲時，它們也提供有用的測試環境Amazon GameLift Servers。請參閱這些主題，進一步了解何時以及如何將 Amazon GameLift ServersAnywhere 機群納入遊戲託管解決方案：
+ [混合託管](gamelift-intro-flavors.md#gamelift-intro-flavors-hosting-hybrid)
+ [部署 的託管機群 Amazon GameLift Servers](fleets-intro.md)
+ [使用 Amazon GameLift ServersAnywhere 設定反覆開發](integration-dev-iteration.md)

由於 Anywhere 機群是自我管理的，因此設定機群需要額外的工作。若要讓 Anywhere 機群準備好託管遊戲工作階段和玩家，您需要完成下列任務：

**Topics**
+ [開始之前](#fleet-anywhere-start)
+ [建立自訂位置](#fleet-anywhere-location)
+ [建立 Anywhere 機群](#fleet-anywhere-create)
+ [將運算新增至機群](#fleet-anywhere-compute)
+ [啟動遊戲伺服器](#fleet-anywhere-process)

## 開始之前
<a name="fleet-anywhere-start"></a>

在建立 Anywhere 機群之前，請執行下列任務。如需更詳細的指引，請參閱 [使用 Amazon GameLift Servers Anywhere 託管的開發藍圖](gamelift-roadmap-anywhere.md)或 [使用 進行混合託管的開發藍圖 Amazon GameLift Servers](gamelift-roadmap-hybrid.md)。
+ **將您的遊戲伺服器程式碼與Amazon GameLift Servers伺服器 SDK 5.x 版 （或更新版本） 整合。**您不需要完成所有遊戲整合任務，只需要遊戲伺服器建置所需的任務。常見的做法是將本機機器設定為 Anywhere 機群，並使用命令列界面來測試您的遊戲伺服器整合 （請參閱 [使用 Amazon GameLift Servers Anywhere 設定本機測試](integration-testing.md))。您可以在開發時納入其他元件 （例如Amazon GameLift Servers已啟用的遊戲用戶端）。
+ **封裝遊戲伺服器軟體以安裝到 Anywhere 機群運算。**套件應包含您的整合遊戲伺服器建置，以及執行遊戲伺服器所需的所有支援軟體。
+ **決定是否將 Amazon GameLift Servers 代理程式與 Anywhere 機群搭配使用。**代理程式是一種運算上程序管理工具，可自動化與管理伺服器程序和運算相關的一些關鍵任務，以搭配 使用Amazon GameLift Servers。如需詳細資訊，請參閱[使用 Amazon GameLift Servers 代理程式](integration-dev-iteration-agent.md)。

## 建立自訂位置
<a name="fleet-anywhere-location"></a>

建立自訂位置來代表運算資源的實體位置。建立 Anywhere 機群時，您必須至少已定義一個自訂位置。您可以隨時建立其他自訂位置，並將其新增至現有的機群。

**建立自訂位置**

使用 Amazon GameLift Servers主控台或 AWS Command Line Interface (AWS CLI) 來建立自訂位置。

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

在 [Amazon GameLift Servers主控台](https://console.aws.amazon.com/gamelift/)中，使用導覽窗格開啟**位置**頁面。選擇**建立位置**以開啟建立對話方塊。

1. 在對話方塊中，輸入**位置名稱**。最佳實務是使用描述一組運算資源之有意義的位置的名稱。它可能是地理位置、資料中心名稱或其他位置識別符。 會Amazon GameLift Servers附加自訂位置的名稱與 **custom-**。

1. （選用） 將標籤新增至您的自訂位置。每個標籤皆包含由您定義的一個金鑰與一個選用值。將標籤指派給您想要以有用方式分類 AWS 的資源，例如依用途、擁有者或環境。針對您要**新增的每個標籤**，選擇新增標籤。

1. 選擇 **Create** (建立)。

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

使用 [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/gamelift/create-location.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/gamelift/create-location.html)命令建立自訂位置。提供`location-name`值，其開頭必須為 `custom-`。最佳實務是使用描述一組運算資源之有意義的位置的名稱。它可能是地理位置、資料中心名稱或其他位置識別符。

```
aws gamelift create-location \
    --location-name custom-location-1
```

輸出

```
{
    "Location": {
        "LocationName": "custom-location-1",
        "LocationArn": "arn:aws:gamelift:us-east-1:111122223333:location/custom-location-1"
    }
}
```

------

## 建立 Anywhere 機群
<a name="fleet-anywhere-create"></a>

為您擁有的一組運算資源建立 Anywhere 機群。新的 Anywhere 機群開始清空；您可以透過註冊將運算新增至機群。

建立時，新的 Anywhere 機群會快速地在機群狀態中從 移至 `NEW` `ACTIVE`。您可以在機群達到 之後，將運算新增至機群`ACTIVE`。

**建立 Anywhere 機群**

使用 Amazon GameLift Servers主控台或 AWS Command Line Interface (AWS CLI) 來建立 Anywhere 機群。

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

在 [Amazon GameLift Servers主控台](https://console.aws.amazon.com/gamelift/)中，使用導覽窗格開啟**機群**頁面。選擇**建立機群**以開始機群建立工作流程。

**步驟 1 選擇運算類型**  
選取 **Anywhere** 選項，然後選擇**下一步**。

**步驟 2 定義機群詳細資訊**  
在此步驟中，指定一些金鑰的全機群設定。  

1. 填寫**機群詳細資訊**區段：

   1. 輸入機群**名稱**。我們建議您使用機群命名模式，以便在檢視機群清單時更輕鬆地識別機群類型。

   1. 提供機群的簡短**描述**。

1. 視需要設定這些選用**的其他詳細資訊**。您可以稍後更新這些機群設定。

   1. 建立用於生產或生產前測試的機群時，請使用此設定來指定機群運算的每小時**成本**值。 Amazon GameLift Servers可以在遊戲工作階段置放程序期間使用此資訊，根據成本選取託管資源。

   1. 如果您想要合併此機群和其他機群的指標資料，請指定**指標群組**名稱。針對您要合併的所有機群使用相同的指標群組名稱。檢視指標群組的指標，以查看彙總的資料。

1. 將選用標籤新增至您的自訂位置。每個標籤皆包含由您定義的一個金鑰與一個選用值。將標籤指派給您想要以有用方式分類 AWS 的資源，例如依用途、擁有者或環境。針對您要**新增的每個標籤**，選擇新增標籤。

1. 選擇**下一步**以繼續工作流程。

**步驟 3 選取自訂位置**  
在此步驟中，識別您計劃新增至此機群的運算實體位置。您現在可以指定一或多個位置，也可以稍後視需要新增或移除位置。  

1. 在**自訂位置**中，為機群的運算選取一或多個位置。此清單包含目前所選 中定義的所有自訂位置 AWS 區域。若要定義您要新增至機群的新自訂位置，請選擇**建立位置**。

1. 選擇**下一步**以繼續工作流程。

**步驟 4 檢閱和建立**  
建立機群之前，請先檢閱您的設定。  
當您準備好部署新機群時，請選擇**建立**。 會Amazon GameLift Servers立即開始機群啟用程序，指派唯一的 ID 並將機群置於 `NEW` 狀態。您可以在機群****頁面上追蹤機群的進度。

------
#### [ 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)命令來建立運算類型 的機群`ANYWHERE`。提供名稱和至少一個自訂位置。 會在您目前的預設值中Amazon GameLift Servers建立 Anywhere 機群資源 AWS 區域 （或者您可以新增 --region 標籤以指定不同的 AWS 區域)。

下列範例請求會使用最少的必要設定建立新的機群。`custom-location` 使用您自己的資訊取代 `FleetName`和 。

```
aws gamelift create-fleet \
--name FleetName \
--compute-type ANYWHERE \
--locations "Location=custom-location"
```

回應範例

```
{
    "FleetAttributes": {
        "FleetId": "fleet-2222bbbb-33cc-44dd-55ee-6666ffff77aa",
        "FleetArn": "arn:aws:gamelift:us-west-2:111122223333:fleet/fleet-2222bbbb-33cc-44dd-55ee-6666ffff77aa",
        "Name": "HardwareAnywhere",
        "CreationTime": "2023-02-23T17:57:42.293000+00:00",
        "Status": "ACTIVE",
        "MetricGroups": [
            "default"
        ],
        "CertificateConfiguration": {
            "CertificateType": "DISABLED"
        },
        "ComputeType": "ANYWHERE"
    }
}
```

建立時，新的 Anywhere 機群會快速移至機群狀態 `ACTIVE`。您可以在機群達到 之後，將運算新增至機群`ACTIVE`。

請注意，回應不包含機群位置。您可以呼叫 [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/gamelift/describe-fleet-attributes.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/gamelift/describe-fleet-attributes.html)和 來擷取完整的機群詳細資訊[https://awscli.amazonaws.com/v2/documentation/api/latest/reference/gamelift/describe-fleet-location-attributes.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/gamelift/describe-fleet-location-attributes.html)。

------

## 將運算新增至機群
<a name="fleet-anywhere-compute"></a>

若要將運算資源新增至機群，並準備好託管遊戲工作階段，請執行下列任務：
+ 向機群註冊運算。註冊會告知Amazon GameLift Servers哪些實體託管資源是機群的一部分。
+ 請求運算的身分驗證字符。在運算上執行的每個遊戲伺服器都需要此字符才能連線到Amazon GameLift Servers服務。身分驗證字符是暫時的，必須定期重新整理。

**注意**  
如果您要使用 Amazon GameLift Servers代理程式部署遊戲伺服器軟體，可以略過此步驟。代理程式會自動註冊每個運算，並維護運算的有效身分驗證字符。請參閱 [使用 Amazon GameLift Servers 代理程式](integration-dev-iteration-agent.md)。

您可以使用 CLI AWS 註冊運算並請求身分驗證字符，或對適用於 的 AWS SDK 進行程式設計呼叫Amazon GameLift Servers。這些動作無法透過 Amazon GameLift Servers主控台使用。

最佳實務是，建議將啟動指令碼新增至每個運算，以自動化這兩個任務。啟動指令碼會自動呼叫 `register-compute`和 `get-compute-auth-token`命令。您也可以自動執行任務，在運算生命週期內定期重新整理身分驗證權杖，並在關閉時取消註冊運算。

每個啟動動作都會傳回您需要存放在運算上的運算特定值。當遊戲伺服器程序在運算上啟動時，在初始化與服務的連線時，必須將這些值作為伺服器參數傳遞 Amazon GameLift Servers（請參閱伺服器 SDK 參考[ServerParameters](integration-server-sdk5-cpp-datatypes.md#integration-server-sdk5-cpp-dataypes-serverparameters)中的 )。建議您將這些運算特定值 （或其儲存位置） 設定為環境變數。如果您使用的是 Amazon GameLift Servers代理程式，則會為您處理此任務。運算特定的值如下：
+ `register-compute` 會傳回 的值`GameLiftServiceSdkEndpoint`。將此值設定為 `webSocketUrl` 伺服器參數。
+ `compute-auth-token` 會傳回身分驗證字符。將此值設定為 `authToken` 伺服器參數。

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

下列指示說明如何使用 CLI AWS 手動提交每個請求。

**註冊運算** 

呼叫 [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/gamelift/register-compute.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/gamelift/register-compute.html) 註冊運算。識別要新增運算的機群 ID。提供下列運算資訊：有意義的名稱、IP 地址和位置。運算的位置必須是已與機群建立關聯的自訂位置。如果您想要使用不同的自訂位置，請使用 Amazon GameLift Servers主控台更新機群，或呼叫 AWS CLI 命令[https://awscli.amazonaws.com/v2/documentation/api/latest/reference/gamelift/create-fleet-locations.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/gamelift/create-fleet-locations.html)將自訂位置新增至機群。

在下列範例中，取代運算和機群的預留位置值。值`fleet-id`會在您建立 Anywhere 機群時傳回。您可以呼叫 [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/gamelift/describe-fleet-attributes.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/gamelift/describe-fleet-attributes.html)和 來擷取完整的機群詳細資訊[https://awscli.amazonaws.com/v2/documentation/api/latest/reference/gamelift/describe-fleet-location-attributes.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/gamelift/describe-fleet-location-attributes.html)。

```
aws gamelift register-compute \
    --compute-name HardwareAnywhere \
    --fleet-id arn:aws:gamelift:us-east-1:111122223333:fleet/fleet-2222bbbb-33cc-44dd-55ee-6666ffff77aa \
    --ip-address 10.1.2.3 \
    --location custom-location-1
```

範例輸出

```
{
    "Compute": {
        "FleetId": "fleet-2222bbbb-33cc-44dd-55ee-6666ffff77aa",
        "FleetArn": "arn:aws:gamelift:us-west-2:111122223333:fleet/fleet-2222bbbb-33cc-44dd-55ee-6666ffff77aa",
        "ComputeName": "HardwareAnywhere",
        "ComputeArn": "arn:aws:gamelift:us-west-2:111122223333:compute/HardwareAnywhere",
        "IpAddress": "10.1.2.3",
        "ComputeStatus": "Active",
        "Location": "custom-location-1",
        "CreationTime": "2023-02-23T18:09:26.727000+00:00",
        "GameLiftServiceSdkEndpoint": "wss://us-west-2.api.amazongamelift.com"
    }
}
```

**請求身分驗證字符**

呼叫 [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/gamelift/get-compute-auth-token.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/gamelift/get-compute-auth-token.html) 以請求有效的身分驗證字符。註冊運算。識別機群 ID 和運算名稱。

在下列範例中，取代運算和機群的預留位置值。值`fleet-id`會在您建立 Anywhere 機群時傳回。您可以呼叫 來擷取完整的機群詳細資訊[https://awscli.amazonaws.com/v2/documentation/api/latest/reference/gamelift/describe-fleet-attributes.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/gamelift/describe-fleet-attributes.html)。若要尋找運算資訊，[https://awscli.amazonaws.com/v2/documentation/api/latest/reference/gamelift/list-compute.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/gamelift/list-compute.html)請使用機群 ID 呼叫 ，以查看已註冊至機群的所有運算。

```
aws gamelift get-compute-auth-token \
    --fleet-id arn:aws:gamelift:us-east-1:111122223333:fleet/fleet-2222bbbb-33cc-44dd-55ee-6666ffff77aa \
    --compute-name HardwareAnywhere
```

範例輸出

```
{
    "FleetId": "fleet-2222bbbb-33cc-44dd-55ee-6666ffff77aa",
    "FleetArn": "arn:aws:gamelift:us-east-1:111122223333:fleet/fleet-2222bbbb-33cc-44dd-55ee-6666ffff77aa",
    "ComputeName": "HardwareAnywhere",
    "ComputeArn": "arn:aws:gamelift:us-east-1:111122223333:compute/HardwareAnywhere",
    "AuthToken": "0c728041-3e84-4aaa-b927-a0fb202684c0",
    "ExpirationTimestamp": "2023-02-23T18:47:54+00:00"
}
```

------

## 啟動遊戲伺服器
<a name="fleet-anywhere-process"></a>

在您建立 Anywhere 機群並將一或多個運算新增至機群之後，您就可以開始執行遊戲伺服器。

**步驟 1 安裝遊戲伺服器軟體**  
在您的 Anywhere 機群中的每個運算上安裝遊戲伺服器組建和所有相依軟體。遊戲伺服器組建必須與Amazon GameLift Servers伺服器 SDK 5.x 版 （或更新版本） 整合，具有與服務通訊所需的最低功能。 Amazon GameLift Servers

**步驟 2 讓運算準備好執行遊戲伺服器**  
確保每個運算都已註冊，並具有有效的身分驗證字符。如果您使用指令碼來管理這些任務，請確定指令碼在每個運算上執行，然後再啟動任何遊戲伺服器程序。  
如果您已使用遊戲伺服器軟體部署Amazon GameLift Servers代理程式，請確定代理程式可執行檔啟動。

**步驟 3 啟動遊戲伺服器程序**  
在運算上執行遊戲伺服器可執行檔的執行個體。如果您的遊戲伺服器建置已正確整合，遊戲伺服器程序會使用`InitSDK()`一組有效的伺服器參數呼叫伺服器 SDK 動作。當伺服器程序準備好託管遊戲工作階段時，它會呼叫 `ProcessReady()`。  
如果您使用 Amazon GameLift Servers 代理程式部署遊戲伺服器軟體，則可以略過此步驟。代理程式會根據您提供的執行時間指示，自動啟動遊戲伺服器程序。
您可以透過檢視啟用和作用中伺服器程序的伺服器程序指標來監控進度。請參閱 [機群的 Amazon GameLift Servers 指標](monitoring-cloudwatch.md#gamelift-metrics-fleet)。如果您的遊戲伺服器程序無法初始化，請確認該程序正在擷取其執行所在運算的正確伺服器參數值。