

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

# 建立容器機群的Amazon GameLift Servers容器群組定義
<a name="containers-create-groups"></a>

容器群組定義說明如何將容器化遊戲伺服器應用程式部署到容器機群。這是一個藍圖，告知要部署到機群Amazon GameLift Servers的容器映像，以及如何執行它們。當您建立容器機群時，您可以指定要部署到機群的容器群組定義。如需容器群組的詳細資訊，請參閱 [容器機群元件](containers-howitworks.md#containers-howitworks-components)。

## 開始之前
<a name="containers-create-groups-before"></a>

開始建立容器群組定義之前應執行的操作提示：
+ 完成容器映像，並將其推送至您計劃建立容器群組的相同 AWS 區域 Amazon Elastic Container Registry (Amazon ECR) 儲存庫。 會在您建立容器群組定義時Amazon GameLift Servers擷取每個映像的快照，並在部署至容器機群時使用快照。請參閱 [建置 的容器映像 Amazon GameLift Servers](containers-prepare-images.md)。
+ 將您的容器定義建立為 JSON 檔案。容器群組定義包含一或多個容器定義。如果您使用 AWS CLIfor 建立容器群組定義，則可以使用 JSON 檔案Amazon GameLift Servers。
+ 確認您的 AWS 使用者具有存取 Amazon ECR 儲存庫的 IAM 許可。請參閱 [的 IAM 許可範例 Amazon GameLift Servers](gamelift-iam-policy-examples.md)。

## 建立遊戲伺服器容器群組定義
<a name="containers-create-groups-replica"></a>

遊戲伺服器容器群組會執行您的遊戲伺服器軟體。遊戲伺服器容器群組有一個遊戲伺服器容器，可執行遊戲伺服器可執行檔。它也可以有一或多個支援容器來執行其他軟體，以支援您的遊戲伺服器。（這些有時稱為「附屬」容器。)

本主題說明如何使用Amazon GameLift Servers主控台或 CLI AWS 工具建立簡單的遊戲伺服器容器群組定義。如需選用功能的詳細資訊，請參閱 [自訂Amazon GameLift Servers容器機群](containers-design-fleet.md)。

**注意**  
您可以在建立大多數容器群組定義和容器定義設定之後進行變更。如果您變更容器定義， 會Amazon GameLift Servers擷取已更新容器映像的新快照。

**若要建立簡單的遊戲伺服器容器群組定義：**

下列指示說明如何使用最少的必要參數和Amazon GameLift Servers預設值來建立容器群組定義。

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

在 [Amazon GameLift Servers主控台](https://console.aws.amazon.com/gamelift/)中，選取您要建立容器群組的 AWS 區域 。

開啟主控台的左側導覽列，然後選擇**受管容器：群組定義**。在容器群組定義頁面上，選擇**建立群組定義**。

**步驟 1：定義容器群組定義詳細資訊**

1. 輸入容器群組定義名稱。名稱對於 AWS 帳戶 和 區域必須是唯一的。

1. 選取**遊戲伺服器**容器群組類型。

1. 針對**總記憶體限制**，輸入要提供給容器群組中所有容器的最大記憶體資源。如需計算此值的說明，請參閱 [設定資源限制](containers-design-fleet.md#containers-design-fleet-limits)。

1. 針對**總 vCPU 限制**，輸入要提供給容器群組中所有容器的最大運算能力。如需計算此值的說明，請參閱 [設定資源限制](containers-design-fleet.md#containers-design-fleet-limits)。

**步驟 2：新增容器定義**

遊戲伺服器容器群組至少有一個遊戲伺服器容器。在 主控台中，您建立的第一個容器定義是遊戲伺服器容器。此步驟說明如何定義遊戲伺服器容器定義所需的最低設定。

1. 輸入容器定義**名稱**。為群組定義的每個容器都必須具有唯一的名稱值。

1. 使用遊戲伺服器建置連結到容器映像。輸入公有或私有儲存庫中容器映像的 **Amazon ECR 映像 URI**。您可以使用下列任何格式：
   +  僅限映像 URI： `[AWS 帳戶].dkr.ecr.[AWS 區域].amazonaws.com/[repository ID]`
   +  映像 URI \$1 摘要： `[AWS 帳戶].dkr.ecr.[AWS 區域].amazonaws.com/[repository ID]@[digest]`
   +  映像 URI \$1 標籤： `[AWS 帳戶].dkr.ecr.[AWS 區域].amazonaws.com/[repository ID]:[tag]`

1. 指定遊戲Amazon GameLift Servers**伺服器建置使用的伺服器 SDK 版本**。對於容器機群，此值必須是 5.2.0 或更高。

1. 在**內部容器連接埠範圍內**，設定通訊協定並定義連接埠範圍。範圍大小必須大於在此容器中執行的並行遊戲伺服器程序數目。如果遊戲伺服器容器每個容器只執行一個伺服器程序，則此連接埠範圍只需要幾個連接埠。如需詳細資訊，請參閱[設定網路連線](containers-design-fleet.md#containers-custom-network)。

1. 視需要新增更多容器，以執行其他支援軟體。其他容器會自動指定支援容器。遊戲伺服器容器群組只能有一個遊戲伺服器容器和最多八個支援容器。提供下列最低必要設定：
   + 容器定義**名稱** 
   + **ECR 映像 URI**。
   + **內部容器連接埠** （只有在容器具有需要網路存取的程序時，才包含此選項。)

**步驟 3：設定相依性**
+ 如果您的容器群組定義具有多個容器，您可以選擇在容器之間設定相依性。如需詳細資訊，請參閱[設定容器相依性](containers-design-fleet.md#containers-design-fleet-dependencies)。

**步驟 3：檢閱並建立**

1. 檢閱所有容器群組定義設定。使用**編輯**來變更任何區段，包括群組的每個容器定義。

1. 檢閱完成後，請選擇**建立**。

   如果您的請求成功，主控台會顯示新容器群組定義資源的詳細資訊頁面。一開始狀態為 `COPYING`，因為 會Amazon GameLift Servers開始為群組拍攝所有容器映像的快照。當此階段完成時，容器群組定義狀態會變更為 `READY`。容器群組定義必須處於 `READY` 狀態，才能使用它建立容器機群。

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

當您使用 AWS CLI 建立容器群組定義時，請將容器定義組態維護在個別的`JSON`檔案中。您可以在 CLI 命令中參考 檔案。如需結構描述範例[建立容器定義`JSON`檔案](#containers-definitions-create)，請參閱 。

**建立容器群組定義**  
若要建立新的容器群組定義，請使用 CLI `create-container-group-definition` 命令。如需此命令的詳細資訊，請參閱 *AWS CLI 命令參考*中的 [create-container-group-definition](https://docs.aws.amazon.com/cli/latest/reference/gamelift/create-container-group-definition.html)。  
此範例說明遊戲伺服器容器群組定義的請求。它假設您已建立具有此群組容器定義的 JSON 檔案。  

```
aws gamelift create-container-group-definition \
    --name MyAdventureGameContainerGroup \
    --operating-system AMAZON_LINUX_2023 \
    --container-group-type GAME_SERVER \
    --total-memory-limit-mebibytes 4096 \
    --total-vcpu-limit 1 \
    --game-server-container-definition file://MyAdventureGameContainers.json
```

------

## 建立容器定義`JSON`檔案
<a name="containers-definitions-create"></a>

建立容器群組定義時，您也可以定義群組的容器。容器定義會指定存放容器映像的 Amazon ECR 儲存庫，以及網路連接埠的選用組態、CPU 和記憶體用量限制，以及其他設定。我們建議為容器群組中的所有容器建立具有組態的單一`JSON`檔案。維護檔案對於存放、共用、追蹤這些重要組態的版本非常有用。如果您使用 AWS CLI 建立容器群組定義，您可以在 命令中參考 檔案。

**建立容器定義**

1. 建立並開啟新`.JSON`檔案。例如：

   ```
   [~/work/glc]$ vim SimpleServer.json
   ```

1. 為群組的每個容器建立個別的容器定義。複製下列範例內容，並視需要修改容器。如需容器定義語法的詳細資訊，請參閱 *Amazon GameLift Servers API 參考*中的 [ContainerDefinitionInput](https://docs.aws.amazon.com/gameliftservers/latest/apireference/API_ContainerDefinitionInput.html)。

1. 將檔案儲存在本機，以便您可以在 CLI AWS 命令中參考。

### 範例：遊戲伺服器容器定義
<a name="containers-definitions-create-example"></a>

**Example**  
此範例說明遊戲伺服器容器群組的基本容器。基本複本容器包含您的遊戲伺服器應用程式、 Amazon GameLift Servers 代理程式，並且可以包含遊戲託管的其他支援軟體。定義必須包含名稱、映像 URI 和連接埠組態。此範例也會設定一些容器特定的資源限制。  

```
  {
    "ContainerName": "MyAdventureGameServer",
    "ImageUri": "111122223333.dkr.ecr.us-east-1.amazonaws.com/gl-containers:myadventuregame-server",
    "PortConfiguration": {
      "ContainerPortRanges": [
        {
          "FromPort": 2000,
          "Protocol": "TCP",
          "ToPort": 2010
        }
      ]
    },
    "ServerSdkVersion": "5.2.0"
  }
```