

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# Amazon GameLift Servers マネージドコンテナフリート
<a name="fleets-intro-containers"></a>

Amazon GameLift Servers マネージドコンテナフリートは、コンテナ化されたゲームサーバーソフトウェアをホストするためのクラウドベースのリソースを提供します。マネージドコンテナフリートを使用すると、マルチプレイヤーゲームホスティング用に最適化された AWS クラウド リソースの柔軟性、セキュリティ、信頼性が得られます。 Amazon GameLift Serversは堅牢なホスト管理ツールを提供します。

**マネージドコンテナ用のこれらのツールを使用して、オンボーディングを高速化します。**  
[コンテナスターターキット](https://github.com/aws/amazon-gamelift-toolkit/tree/main/containers-starter-kit)は、統合とフリートのセットアップを合理化します。ゲームサーバーに重要なゲームセッション管理機能を追加し、事前設定されたテンプレートを使用して、ゲームサーバー用のコンテナフリートと自動デプロイパイプラインを構築します。デプロイ後、Amazon GameLift Servers コンソールと API ツールを使用して、フリートのパフォーマンスのモニタリング、ゲームセッションの管理、メトリクスの分析を行います。
Unreal Engine または Unity 開発者の場合は、ゲームエンジン[Amazon GameLift Servers プラグインとサーバー SDK](https://github.com/amazon-gamelift/) を使用してゲームサーバーを統合し、ゲームエンジンの開発環境内からコンテナフリートを構築します。プラグインのガイド付きワークフローは、マネージドコンテナを使用したクラウドベースのホスティングによる高速でシンプルなソリューションの作成に役立ちます。この基盤をもとに、ゲーム用のカスタムホスティングソリューションを作成できます。

 マネージドコンテナフリートは、Linux を実行する Amazon Elastic Compute Cloud (Amazon EC2) インスタンスのセットであり、Amazon GameLift Servers が設定に基づいて管理および運用します。これらのインスタンスは、サポートされている AWS リージョン またはローカルゾーンに物理的に配置されます。コンテナフリートを作成するときは、コンピューティング能力、メモリ、ストレージ、ネットワーク機能に関するゲームサーバーの要件を満たす EC2 インスタンスタイプを選択します。

マネージドコンテナフリートの場合、Linux ベースのコンテナイメージを Amazon Elastic Container Registry (Amazon ECR) リポジトリに保存し、コンテナグループ定義を作成してコンテナアーキテクチャを記述します。フリートを作成すると、Amazon GameLift Servers は Linux Amazon マシンイメージ (AMI) の最新バージョンを使用してフリートインスタンスをプロビジョニングし、コンテナグループ定義を使用してコンテナイメージをデプロイします。コンテナグループ定義を更新したり、コンテナイメージを変更したりしても、コンテナフリート内のすべてのインスタンスは同じ AMI バージョンを使用します。

**注記**  
ベストプラクティスとして、ホストされているゲームサーバーでの安全で最新のランタイム環境を維持するために、30 日ごとにフリートを置き換えることをお勧めします。そのためには、新しいフリートを作成し、プレイヤートラフィックをそのフリートに移行する必要があります。ガイダンスについては、「[Amazon GameLift Servers のセキュリティに関するベストプラクティス](security-best-practices.md)」を参照してください。

コンテナ化されたインスタンスをデプロイすると、コンテナはゲームサーバープロセスの起動を開始します。各ゲームサーバープロセスは、Amazon GameLift Servers サービスへの接続を確立し、ゲームセッションをホストする準備状況を報告して、ヘルスステータスの通信を開始します。Amazon GameLift Servers は、サーバープロセスにゲームセッションを開始するよう促すことができます。

フリートのデプロイに加えて、Amazon GameLift Servers は、ユーザーに代わって次のホスト管理タスクを処理します。
+ フリート内のすべてのコンテナのステータスを追跡し、古くなったコンテナや異常なコンテナを入れ替えます。
+ サーバープロセスと Amazon GameLift Servers サービス間の通信の認証を処理する。
+ プレイヤーの需要に合わせてフリート容量を動的に調整する自動スケーリングツールを提供する。
+ フリート内の EC2 インスタンス、コンテナ、サーバープロセスのパフォーマンスメトリクスを報告します。

マネージドコンテナフリートのセットアップと管理方法については、次のトピックを参照してください。
+  [Amazon GameLift Servers マネージドコンテナでホスティングするための開発ロードマップ](gamelift-roadmap-containers.md)
+  [Amazon GameLift Servers マネージドコンテナフリートを作成する](containers-build-fleet.md)
+  [Amazon GameLift Servers コンテナフリートをカスタマイズする](containers-design-fleet.md)
+  [Amazon GameLift Servers を使用したゲームホスティング容量のスケーリング](fleets-manage-capacity.md)
+  [Amazon GameLift Servers マネージドコンテナフリートを更新する](containers-update-fleet.md)

# Amazon GameLift Servers におけるコンテナの仕組み
<a name="containers-howitworks"></a>

Amazon GameLift Servers コンテナフリートは、コンテナ化されたアプリケーションを柔軟にデプロイおよびスケーリングできるように設計されています。Amazon Elastic Container Service (Amazon ECS) を使用して、タスクのデプロイメントと実行をユーザーの Amazon GameLift Servers フリート向けに管理します。このトピックでは、Amazon GameLift Servers マネージドフリートでコンテナを実行するための基本的な構造要素について説明し、一般的なアーキテクチャを示し、いくつかの主要な概念の概要を示します。

**マネージドコンテナ用のこれらのツールを使用して、オンボーディングを高速化します。**  
[コンテナスターターキット](https://github.com/aws/amazon-gamelift-toolkit/tree/main/containers-starter-kit)は、統合とフリートのセットアップを合理化します。ゲームサーバーに重要なゲームセッション管理機能を追加し、事前設定されたテンプレートを使用して、ゲームサーバー用のコンテナフリートと自動デプロイパイプラインを構築します。デプロイ後、Amazon GameLift Servers コンソールと API ツールを使用して、フリートのパフォーマンスのモニタリング、ゲームセッションの管理、メトリクスの分析を行います。
Unreal Engine または Unity の開発者の場合、[Amazon GameLift Servers プラグイン](https://github.com/amazon-gamelift/)を使用してゲームサーバーを統合し、ゲームエンジンの開発環境内からコンテナフリートを構築します。プラグインのガイド付きワークフローは、マネージドコンテナを使用したクラウドベースのホスティングによる高速でシンプルなソリューションの作成に役立ちます。次に、この基盤をもとに、ゲーム用のカスタムホスティングソリューションを作成します。

## コンテナフリートコンポーネント
<a name="containers-howitworks-components"></a>

**Fleet**  
コンテナフリートは、コンテナ化されたゲームサーバーをホストするための Amazon EC2 インスタンスのコレクションです。これらのインスタンスは、Amazon GameLift Servers によってユーザーに代わって管理されます。フリートを作成するときは、ゲームサーバーソフトウェアを含むコンテナアーキテクチャを各フリートインスタンスにどのようにデプロイするかを設定します。1 つまたは複数の地理的な場所にインスタンスを持つコンテナフリートを作成できます。Amazon GameLift Servers スケーリングツールを使用して、ゲームセッションとプレイヤーをホストするためにコンテナフリートの容量を自動的にスケールできます。

**インスタンス**  
Amazon EC2 インスタンスは、ゲームホスティング用のコンピューティング容量を提供する仮想サーバーです。Amazon GameLift Servers では、さまざまなインスタンスタイプから選択できます。各インスタンスタイプごとに、CPU、メモリ、ストレージ、ネットワーキングの異なる組み合わせが提供されます。  
コンテナフリートを作成すると、Amazon GameLift Servers が選択したインスタンスタイプとフリート設定に基づいてコンテナをデプロイします。デプロイされた各フリートインスタンスは同一であり、コンテナ化されたゲームサーバーソフトウェアを同じ方法で実行します。フリート内のインスタンスの数によって、フリートのサイズとゲームホスティング容量が決まります。

**コンテナグループ**  
Amazon GameLift Servers は、コンテナグループの概念を使用して、一連のコンテナを記述および管理します。コンテナグループは、コンテナの「タスク」や「ポッド」に近い概念です。各コンテナグループ内では、コンテナの動作、依存関係、使用可能な CPU とメモリリソースの共有方法を定義できます。  
各フリートインスタンスには、次のタイプのコンテナグループを含めることができます。  
+ **ゲームサーバーコンテナグループ**は、ゲームサーバーアプリケーションおよびサポートソフトウェアを実行するコンテナを管理します。ゲームセッションやプレイヤーをホストするには、コンテナフリートにこのタイプのコンテナグループが少なくとも 1 つ必要です。ゲームサーバーコンテナグループは、フリートインスタンス間で複製できます。フリートインスタンスごとのゲームサーバーグループの複製数は、ソフトウェアのコンピューティング要件と、インスタンスで利用できるコンピューティングリソースによって変わります。
+ オプションである**インスタンス単位のコンテナグループ**を使用すると、各フリートインスタンスで追加のソフトウェアを実行できます。これらは、モニタリングなどのバックグラウンドサービスやユーティリティプログラムの実行に役立ちます。ゲームサーバーソフトウェアは、インスタンスグループごとのプロセスに直接依存しません。インスタンス単位のコンテナグループは、各フリートインスタンスに 1 つだけデプロイされます。
コンテナフリート内の各コンテナグループには、「必須」と指定されたコンテナが 1 つ含まれます。必須コンテナは、コンテナグループのライフサイクルを制御します。必須コンテナに障害が発生すると、コンテナグループ全体が再起動します。

**コンテナ**  
コンテナは、コンテナベースのアーキテクチャを構成する最も基本的な要素です。これには、実行可能ファイルと依存ファイルを含むコンテナイメージが含まれます。ソフトウェアの動作方法やAmazon GameLift Serversとの連携方法を設定するため、コンテナを定義します。  
Amazon GameLift Servers は 2 種類のコンテナを定義します。  
+ **ゲームサーバーコンテナ**には、ゲームサーバープロセスを実行し、プレイヤーのゲームセッションをホストするために必要なものがすべて含まれています。これには、ゲームサーバーのビルドと依存ソフトウェアが含まれます。フリートのゲームサーバーコンテナ用に、1 つのゲームサーバーコンテナを定義します。ゲームサーバーコンテナは、コンテナグループの必須として扱われます。
+ **サポート用コンテナ**は、ゲームサーバーをサポートする追加のソフトウェアを実行します。これは「sidecar」コンテナの概念に似ています。これにより、サポートソフトウェアをゲームサーバーと並行して実行・スケールさせつつ、別のコンテナとして管理できます。ゲームサーバーコンテナグループでは、サポートコンテナを 0 個以上定義できます。インスタンス単位のコンテナグループでは、すべてのコンテナがサポート用コンテナです。どのサポート用コンテナでも、必須として指定できます。

**コンピューティング**  
コンピューティングは、フリートインスタンス上のゲームサーバーコンテナグループのコピーを表します。

## 一般的なアーキテクチャ
<a name="containers-howitworks-architecture"></a>

次の図は、最も単純なコンテナフリート構造を示しています。この構造では、フリート内の各インスタンスがゲームサーバーコンテナグループの 1 つのコピーを保持します。このコンテナグループには、1 つのゲームサーバープロセスを実行する 1 つのゲームサーバーコンテナが含まれます。この例では、コンテナフリートは、インスタンスごとにゲームサーバーコンテナグループのコピーを 1 つ配置するように構成されています。このアーキテクチャでは、各インスタンスが 1 つのゲームサーバープロセスを実行します。

![\[ゲームサーバーコンテナグループに 1 つのゲームサーバーコンテナグループを含む、シンプルなコンテナアーキテクチャの例です。\]](http://docs.aws.amazon.com/ja_jp/gameliftservers/latest/developerguide/images/container_architecture_simple.png)


2 番目の図は、より複雑なコンテナフリートアーキテクチャを示しています。この構造では、フリートにゲームサーバーコンテナグループとインスタンス単位のコンテナグループの両方が含まれます。ゲームサーバーコンテナグループには、ゲームサーバープロセス用とサポートプロセス用の個別のコンテナがあります。フリートは、各フリートインスタンスにゲームサーバーコンテナグループのコピーを 3 つ配置するよう構成されています。インスタンス単位のコンテナグループは、レプリケートされません。この例では、コンテナフリートは、インスタンスごとにゲームサーバーコンテナグループのコピーを 3 つ配置するよう構成されています。このアーキテクチャでは、各インスタンスが 3 つのゲームサーバープロセスを実行します。

![\[ゲームサーバーコンテナグループに複数のコンテナがあり、インスタンス単位のコンテナグループに 1 つのコンテナがあるコンテナアーキテクチャの例です。\]](http://docs.aws.amazon.com/ja_jp/gameliftservers/latest/developerguide/images/container_architecture_complex.png)


## 主要機能
<a name="containers-howitworks-concepts"></a>

このセクションでは、Amazon GameLift Servers がいくつかの基本的なコンテナの概念をどのように実装するかをまとめています。コンテナフリートの操作方法については、このガイド内の関連トピックを参照してください。

### アクティブなフリートの更新
<a name="containers-howitworks-concepts-updating"></a>

マネージドコンテナは、ホストされたソフトウェアとコンテナアーキテクチャのライフサイクル管理を支援する高度なサポートを提供します。コンテナイメージを含むコンテナ定義を更新し、既存のフリートに変更をデプロイできます。この機能を利用すると、開発中のコンテナへの変更をより迅速かつ容易に反映できます。また、ソフトウェアバージョンのビルド、デプロイ、および追跡を支援する機能も提供します。これには次の機能が含まれます。
+ コンテナグループ定義の更新とバージョニングを管理します。コンテナイメージや設定を含む、コンテナグループ定義のほぼすべてのプロパティを更新できます。コンテナを更新すると、Amazon GameLift Servers が更新にバージョン番号を自動的に割り当て、デフォルトですべてのバージョンを保持します。任意のバージョンにアクセスでき、必要に応じてバージョンを削除できます。コンテナフリートを作成するときに、デプロイするコンテナグループ定義とバージョンを指定できます。
+ 既存のコンテナフリートを、新しいコンテナグループ定義と設定で更新します。フリートインスタンスにデプロイ済みのフリートに、コンテナ更新をデプロイできます。 AWS マネジメントコンソール または AWS SDK と CLI を使用して、各フリートロケーションの更新デプロイのステータスを追跡できます。
+ フリートの更新をアクティブなフリートにどのようにデプロイするかを設定します。
  + ゲームセッション保護。アクティブなゲームセッションが終了するまで、そのセッションを実行しているフリートインスタンスを保護すること (安全なデプロイ) を選択できます。または、ゲームセッションの状況に関係なくフリートインスタンスを置き換えること (安全でないデプロイ) を選択できます。開発フェーズやテストフェーズでは、安全でないデプロイを使用してデプロイ時間を短縮できます。
  + 最小正常率。デプロイ中に維持したい正常なタスクの割合を指定します。この機能を使用すると、デプロイによって影響を受けるフリートインスタンスの数を決定できます。値を低くするとデプロイの速度が優先され、値を高くするとデプロイ全体を通じてゲームサーバーの可用性が高く維持されます。
  + デプロイの失敗戦略。デプロイが失敗した場合に実行するアクションを決定します。デプロイの失敗は、更新されたコンテナの一部のステータスチェックが失敗し、異常状態と見なされることを意味します。すべてのフリートインスタンスを以前のデプロイ状態に自動的にロールバックするよう、デプロイを設定できます。あるいは、デバッグ用途のために、障害状態のフリートインスタンスの一部を維持することもできます。

アクティブなフリートを更新できる機能は、ゲームサーバーソフトウェアに更新をデプロイしたい場合に非常に有用です。ゲームサーバー用に新しいコンテナイメージをビルドした後、デプロイは 2 つのステップで行います。まず、新しいイメージでコンテナグループ定義を更新し、次にコンテナフリートを更新します。Amazon GameLift Serversは必要に応じて残りのタスクを処理します。

### コンテナのパッキング
<a name="containers-howitworks-concepts-packing"></a>

コンテナフリートにデプロイするためのコンテナ構造を開発する場合、共通の目標は、利用可能なコンピューティング能力の使用を最適化することです。この目標を達成するため、各フリートインスタンスに可能な限り多くの ゲームサーバーコンテナグループ をパッキングします。

Amazon GameLift Servers は、次の情報に基づいてインスタンスあたりの最大ゲームサーバーコンテナグループ数を計算し、この作業を支援します。
+ フリートのインスタンスタイプと、その vCPU およびメモリリソース。
+ ゲームサーバーコンテナグループ内のすべてのコンテナに必要となる vCPU とメモリ要件。

  インスタンス単位のコンテナグループが存在する場合、そのグループ内のすべてのコンテナに必要となる vCPU とメモリ要件。

コンテナフリートを作成するときは、計算された最大値を使用するか、必要な数を指定できます。ベストプラクティスとして、コンテナ化されたゲームサーバーソフトウェアをテストし、最適なゲームサーバーパフォーマンスに必要なリソース要件を判断する計画を立ててください。

### 容量スケーリング
<a name="containers-howitworks-concepts-scaling"></a>

フリート容量は、フリートが同時にホストできるゲームセッション数を表します。また、フリートがサポートできる同時プレイヤー数に基づいて容量を算定することもできます。フリートのホスティング容量を増減するには、フリートインスタンスを追加または削除します。

コンテナフリートは、各フリートインスタンスで特定数の同時ゲームサーバープロセスを実行するように構成されています。(これは、(1) インスタンスあたりの ゲームサーバーコンテナグループ 数と、(2) 各コンテナグループで実行されるゲームサーバープロセスの数に基づいて計算できます。) インスタンスあたりの同時ゲームサーバー数は、それぞれのフリートインスタンスを追加または削除した場合の影響を示します。例えば、コンテナフリートが各ゲームサーバーコンテナグループで 1 つのゲームサーバープロセスを実行し、各フリートインスタンスが 100 のゲームサーバーコンテナグループを保持している場合、フリートの同時ゲームセッションのホスティング容量は 100 単位で増減します。各ゲームセッションが 10 個のプレイヤースロットを持つ場合、プレイヤーをホストするフリート容量は 1000 単位で増減します。

コンテナフリートでは、Amazon GameLift Servers が提供する任意の容量スケーリング方法を使用できます。具体的には次のとおりです。
+ 必要なフリートインスタンス数を設定して、フリート容量を手動で設定します。
+ 使用可能なインスタンスの希望するバッファをターゲットとして、自動スケーリングを設定します (ターゲット追跡)。この方法は、参加プレイヤーがすぐにゲームに入れるよう、一定量のアイドルホスティングリソースを自動的に維持します。プレイヤーの需要の増減に応じて、このバッファのサイズは継続的に調整されます。
+ カスタムスケーリングルール (高度な機能) を使用して、自動スケーリングを設定します。この方法では、選択したフリートメトリクスに基づいてスケーリングできます。

### ゲームクライアント/サーバー接続
<a name="containers-howitworks-concepts-networking"></a>

Amazon GameLift Servers が管理するフリートでは、ゲームクライアントがクラウドホスト型ゲームサーバーに直接接続します。ゲームクライアントがゲームへの参加をリクエストすると、Amazon GameLift Servers はゲームセッションを検索し、接続情報 (IP とポート) をゲームクライアントに提供します。フリートの特定のポート範囲 (インバウンドアクセス許可) を開くことで、フリートインスタンスへの外部アクセスを制御できます。インバウンドアクセス許可は、受信トラフィックに対して開いているポートを決定します。すべてのポートをすばやくシャットダウンしたり、開くポートを数個に制限したり、すべてのポートを開くことができます。

マネージドコンテナフリートには、コンテナで実行されているプロセスへのアクセスを許可する追加の設定が必要です。コンテナ定義を作成する際は、接続を受け付ける各プロセスごとに、使用するポートのセットを指定します。これには、以下が含まれます。
+ ゲームサーバーコンテナで同時に実行されるすべてのゲームサーバープロセス。ゲームセッションに参加するため、ゲームサーバープロセスはゲームクライアントからの接続を受け入れる必要があります。
+ 外部ソースが接続する必要があるサポートコンテナ内のプロセス。例えば、テストアプリケーションにリモート接続できます。

内部向けコンテナポート設定を設定すると、 はそれらAmazon GameLift Serversを使用して、ゲームクライアントやその他のアプリケーションが接続できる外部向けインバウンドアクセス許可を計算します。 は、インバウンドアクセス許可と、プレイヤーにコンテナ内のゲームセッションへのアクセスを許可する個々のコンテナポート間のマッピングAmazon GameLift Serversも管理します。この内部マッピングは、ゲームサーバーがコンテナポートへの直接アクセスから保護されることで、追加のセキュリティレイヤーを提供します。必要に応じて、フリートの外部向けポート設定をカスタマイズできます。コンテナフリートポートを手動で設定する方法の詳細については、「[ネットワーク接続を構成する](containers-design-fleet.md#containers-custom-network)」を参照してください。

コンテナフリートのポート設定はいつでも変更できます。この変更には、フリート更新のデプロイが必要です。

次の図は、コンテナフリート間のポート接続の役割を示しています。図に示すように、個々のコンテナにポートを設定すると、Amazon GameLift Servers がその情報を使用して、各コンテナポートに対応させるために必要な数のポートをフリートインスタンス上に構成します。外部向けインスタンスのインバウンドアクセス許可と、内部向け接続ポートの両方は、手動で設定しない限り、Amazon GameLift Servers によってフリート用に算出されます。

![\[コンテナフリートのポート設定の図。ポートマッピングにより、外部トラフィックはフリートインスタンスに接続し、インスタンス上の個々のコンテナへアクセスできます。\]](http://docs.aws.amazon.com/ja_jp/gameliftservers/latest/developerguide/images/container_design_networking.png)


### コンテナのログ記録
<a name="containers-howitworks-concepts-logging"></a>

マネージドコンテナフリートでは、標準出力 (および標準エラー) ストリームがすべてのコンテナでキャプチャされます。これには、ゲームサーバーのゲームセッションログが含まれます。コンテナフリートは、複数のオプションのいずれかを使用して出力ストリームを処理するように設定できます。
+ コンテナ出力を Amazon CloudWatch ログストリームとして保存します。各ログストリームはフリート ID とコンテナを参照します。フリートに対してこのログ記録オプションを選択した場合、フリートからのすべてのログストリームを整理する CloudWatch ロググループを指定します。その後、CloudWatch 機能を使用して、必要に応じてログデータを検索および分析できます。
+ コンテナ出力を Amazon Simple Storage Service (Amazon S3) バケットに保存します。必要に応じて、コンテンツを表示、共有、またはダウンロードできます。
+ ログ記録をオフにします。このシナリオでは、コンテナ出力は保存されません。

Amazon GameLift Servers は、マネージドコンテナフリートから AWS アカウントの CloudWatch または Amazon S3 サービスにログデータを送信します。データを表示するには、 AWS または他の AWS マネジメントコンソール ツールを使用してアカウントにサインインし、個々の サービスを操作します。コンテナフリートのサービスロールを作成することで、これらのアクションを実行するための制限付きアクセスを Amazon GameLift Servers に付与します。

コンテナフリートのログ記録設定はいつでも変更できます。この変更には、フリート更新のデプロイが必要です。

### コンテナフリートと Amazon GameLift Servers エージェント
<a name="containers-howitworks-concepts-agent"></a>

一般的に使用されるコンテナアーキテクチャは、コンテナごとに 1 つのプロセスを実行します。Amazon GameLift Servers コンテナフリートでは、ゲームサーバーグループに 1 つのゲームさーあーコンテナがあり、そのコンテナで 1 つのゲームサーバープロセスを実行します。このアーキテクチャでは、Amazon GameLift Servers が フリートインスタンス 上の各 ゲームサーバーコンテナグループ 内にある単一の ゲームサーバー プロセスのライフサイクルを管理します。

各 ゲームサーバーコンテナグループで複数の ゲームサーバー プロセスを実行する コンテナアーキテクチャを構築する場合、すべての プロセスのライフサイクルを管理する方法が必要です。これは、必要に応じてプロセスを起動・停止・置き換え、同時に実行するプロセス数を管理し、障害発生時の対処を行うといった作業を含みます。

これらのタスクに Amazon GameLift Servers エージェントを使用することを選択できます。コンテナフリートでは、エージェントが「実行指示 (ランタイム指示)」を処理し、どの実行ファイルを何個起動するかを指定し、起動時のパラメータを渡し、ゲームサーバーの起動ルールを設定します。例えば、ランタイム指示により、本番環境用として 10 個のゲームサーバープロセスを維持し、テスト用として特別な起動パラメータを設定したゲームサーバープロセスを 1 個維持するよう、エージェントに指示できます。

コンテナフリートでエージェントを使用するには、コンテナイメージにエージェントを組み込み、必要なランタイム指示一式を含めます。エージェントの詳細については、「[Amazon GameLift Servers エージェントの操作](integration-dev-iteration-agent.md)」を参照してください。

# Amazon GameLift Servers マネージドコンテナフリートを作成する
<a name="containers-build-fleet"></a>

Amazon GameLift Servers マネージドコンテナフリートを作成して、コンテナ化されたゲームサーバーを AWS クラウドにデプロイしてホストします。コンテナフリートを作成するときは、1 つ以上のコンテナイメージ (ゲームサーバービルドを含む 1 つ以上のイメージ) と設定を指定するコンテナグループ定義を指定します。

新しいマネージドコンテナフリートリソースを作成すると、フリート作成の最初のフェーズがすぐに開始されます。マネージドフリートの作成は、Amazon GameLift Servers が EC2 インスタンスをプロビジョニングし、ランタイム環境をインストールし、コンテナグループをインスタンスにデプロイして、ゲームサーバープロセスの起動を開始するときに、いくつかのフェーズを通過します。ゲームサーバーが構築するランタイム環境に応じて、Amazon GameLift Servers はフリートの作成時に最新バージョンの Amazon マシンイメージ (AMI) をデプロイします (フリート内のすべての将来のインスタンスは同じバージョンを使用します)。フリートのステータスは、コンソールまたは AWS Command Line Interface () を使用してモニタリングできますAWS CLI。フリートが `ACTIVE` ステータスに達すると、ゲームセッションをホストする準備ができています。フリート作成の問題については、「[Amazon GameLift Servers フリートの問題をデバッグする](fleets-creating-debug.md)」を参照してください。

空のコンテナフリートを作成し、後でフリートのコンテナグループ定義を追加または更新することを選択できます。コンテナグループ定義なしでフリートを作成すると、フリートはアクティブステータスに到達しません。

**注記**  
ベストプラクティスとして、ホストされているゲームサーバーでの安全で最新のランタイム環境を維持するために、30 日ごとにフリートを置き換えることをお勧めします。そのためには、新しいフリートを作成し、プレイヤートラフィックをそのフリートに移行する必要があります。ガイダンスについては、「[Amazon GameLift Servers のセキュリティに関するベストプラクティス](security-best-practices.md)」を参照してください。

コンテナフリートを作成するには、[Amazon GameLift Servers コンソール](https://console.aws.amazon.com/gamelift/)または AWS Command Line Interface AWS CLIを使用します。

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

[Amazon GameLift Servers コンソール](https://console.aws.amazon.com/gamelift/)で、フリート AWS リージョン を作成する を選択します。コンテナグループ定義は、フリートを作成するリージョンと同じリージョンにある必要があります。

コンソールの左側のナビゲーションバーを開き、**[マネージドコンテナ: フリート]** を選択します。[フリート] ページで、**[コンテナフリートの作成]** を選択します。

**ステップ 1: マネージドコンテナフリートの詳細を定義する**

1. **[コンテナフリートの詳細]** セクションに、フリートの説明を入力します。

1. フリート用の **IAM ロール**を指定します。このロールには、Amazon GameLift Servers がコンテナフリートを管理するために必要なアクセス許可があります。必要なサービスロールの作成については、「[Amazon GameLift Servers 用に IAM サービスロールをセットアップする](setting-up-role.md)」を参照してください。

1. **ログ設定**オプションを選択します。デフォルトでは、CloudWatch オプションが選択されています。選択したオプションに基づいて必要な情報を入力します。

1. フリートにコンテナグループを追加します。これは任意の手順です。後で追加する計画を持つコンテナグループなしでフリートを作成できます。コンテナグループのないフリートは、フリートインスタンスをデプロイせず、ゲームをまだホストできませんが、フリートリソースが作成されます。
   + ゲームサーバー用コンテナグループ定義を選択します。任意で、デプロイする定義のバージョンを指定します。バージョン番号を指定しない場合は、Amazon GameLift Servers が自動的に最新バージョンを使用します。
   + 任意で、インスタンスごとのコンテナグループ定義とバージョンを追加します。バージョン番号を指定しない場合は、Amazon GameLift Servers が自動的に最新バージョンを使用します。

1. **[その他の詳細]**で、いくつかのオプションカスタマイズを設定できます。コンテナフリートの作成にこれらの設定は必要ありません。

**ステップ 2: インスタンスの詳細を定義する**

1. **インスタンスのデプロイ**では、インスタンスをデプロイするリモートロケーションを 1 つ以上選択します。ホームリージョンが自動的に選択されます (これはフリートを作成するリージョンです)。追加のロケーションを選択すると、フリートインスタンスもこれらのロケーションにデプロイされます。
**重要**  
デフォルトでは有効になっていないリージョンを使用するには、 でリージョンを有効にします AWS アカウント。  
2022 年 2 月 28 日より前に作成した、有効化されていないリージョンのあるフリートはこの要件の影響を受けません。
新しいマルチロケーションフリートを作成したり、既存のマルチロケーションフリートを更新するには、まず、使用することを選択したリージョンをすべて有効にします。
デフォルトで有効になっていないリージョンとそれを有効にする方法についての詳細は、「*AWS 全般のリファレンス*」の「[AWS リージョンの管理](https://docs.aws.amazon.com/general/latest/gr/rande-manage.html)」を参照してください。詳細については、*「AWS Local Zones ユーザーガイド」*の「[Local Zones の開始方法](https://docs.aws.amazon.com/local-zones/latest/ug/getting-started.html)」を参照してください。

1. フリートの **[インスタンス設定]** を選択します。コンソールは、必要な最小 vCPU とメモリを、各コンテナグループに設定した合計制限に基づいて自動的に計算します。コンソールは、リソース要件と入力したロケーションに基づいて、利用可能なインスタンスタイプの一覧をフィルタリングします。必要に応じてフィルターを追加できます。

   インスタンスタイプの選択の詳細については、「[コンテナフリートを設定する](containers-design-fleet.md#containers-design-fleet-config)」を参照してください。選択に応じて、フリートインスタンスごとの希望するゲームサーバーコンテナグループ設定を確認してください。選択に応じて、インスタンスごとに必要なゲームサーバーコンテナグループの設定を確認することを検討してください。

**ステップ 4: 確認して作成する**
+ フリートの設定内容を確認します。

  フリートのステータスにかかわらず、フリートのメタデータと設定をいつでも更新できます。詳細については、「[Amazon GameLift Servers フリート設定を更新する](fleets-editing.md)」を参照してください。フリート容量を更新できるのは、フリートが [アクティブ] ステータスになった後です。詳細については、「[Amazon GameLift Servers を使用したゲームホスティング容量のスケーリング](fleets-manage-capacity.md)」を参照してください。リモートロケーションを追加または削除することもできます。

  完了したら、**[作成]** を選択します。

  リクエストが成功すると、コンソールに新しいフリートリソースの詳細ページが表示されます。初期状態では、ステータスは `NEW` です。Amazon GameLift Servers はフリート作成プロセスを開始します。新しいフリートのステータスを **[フリート]** ページで追跡できます。フリートがゲームセッションをホストできる状態になると、フリートのステータスが `ACTIVE` になります。

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

を使用してコンテナフリートを作成するには AWS CLI、コマンドラインウィンドウを開き、 `create-container-fleet` コマンドを使用します。コマンドの詳細については、「*AWS CLI コマンドリファレンス*」の「[https://awscli.amazonaws.com/v2/documentation/api/latest/reference/gamelift/create-container-fleet.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/gamelift/create-container-fleet.html)」を参照してください。

次の `create-container-fleet` リクエスト例では、以下のような特徴を持つ新しいコンテナフリートを作成します。
+ ContainerGroupsConfiguration は、ゲームサーバーコンテナグループ定義のみを指定します: `MyAdventureGameContainerGroup`。各フリートインスタンスにデプロイされるゲームサーバーコンテナグループの数は、Amazon GameLift Servers によって計算されます。
+ フリートはデフォルトで c5.large オンデマンドインスタンスを使用します。
+ デフォルトでは、フリートは Amazon GameLift Servers によって計算された接続ポートとインバウンドアクセス許可ポートのセットを開きます。コンテナグループを次の場所にデプロイします。

```
aws gamelift create-container-fleet \
    --fleet-role-arn arn:aws:iam::MyAccount:role/MyContainersRole \
    --game-server-container-group-definition-name "rn:aws:gamelift:us-west-2:111122223333:containergroupdefinition/MyAdventureGameContainerGroup:2" \
```

create-fleet のリクエストが成功すると、リクエストした構成設定と新しいコンテナフリート ID が含まれたフリート属性のセットが Amazon GameLift Servers から返されます。Amazon GameLift Servers は即座にフリートアクティベーションプロセスを開始し、フリートのステータスを **[新規]** に設定します。フリートのステータスをトラッキングし、他のフリート情報を表示するには、次の CLI コマンドを使用します。
+ [describe-fleet-events](https://docs.aws.amazon.com/cli/latest/reference/gamelift/describe-fleet-events.html)
+ [describe-container-fleet](https://docs.aws.amazon.com/cli/latest/reference/gamelift/describe-container-fleet.html)
+ [describe-fleet-capacity](https://docs.aws.amazon.com/cli/latest/reference/gamelift/describe-fleet-capacity.html)
+ [describe-fleet-port-settings](https://docs.aws.amazon.com/cli/latest/reference/gamelift/describe-fleet-port-settings.html)
+ [describe-fleet-utilization](https://docs.aws.amazon.com/cli/latest/reference/gamelift/describe-fleet-utilization.html)
+ [describe-fleet-location-capacity](https://docs.aws.amazon.com/cli/latest/reference/gamelift/describe-fleet-location-capacity.html)
+ [describe-fleet-location-utilization](https://docs.aws.amazon.com/cli/latest/reference/gamelift/describe-fleet-location-utilization.html)

以下のコマンドを使用して、必要に応じてフリートの容量と他の設定を変更できます。
+ [update-container-fleet](https://docs.aws.amazon.com/cli/latest/reference/gamelift/update-container-fleet.html)
+ [update-fleet-capacity](https://docs.aws.amazon.com/cli/latest/reference/gamelift/update-fleet-capacity.html)
+ [update-fleet-port-settings](https://docs.aws.amazon.com/cli/latest/reference/gamelift/update-fleet-port-settings.html)
+ [create-fleet-locations](https://docs.aws.amazon.com/cli/latest/reference/gamelift/create-fleet-locations.html)
+ [delete-fleet-locations](https://docs.aws.amazon.com/cli/latest/reference/gamelift/delete-fleet-locations.html)

------



# コンテナフリート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 ファイルとして作成します。コンテナグループ定義には、1 つまたは複数のコンテナ定義が含まれます。 AWS CLIfor for を使用してコンテナグループ定義を作成する場合は、JSON ファイルを使用できますAmazon GameLift Servers。
+  AWS ユーザーに Amazon ECR リポジトリにアクセスするための IAM アクセス許可があることを確認します。「[Amazon GameLift Servers 向け IAM アクセス許可の例](gamelift-iam-policy-examples.md)」を参照してください。

## ゲームサーバーコンテナグループ定義を作成する
<a name="containers-create-groups-replica"></a>

ゲームサーバーコンテナグループは、ゲームサーバーソフトウェアを実行します。ゲームサーバーコンテナグループには、ゲームサーバー実行ファイルを実行するゲームサーバーコンテナが 1 つあります。また、1 つ以上のサポートコンテナを持ち、ゲームサーバーを補助する追加ソフトウェアを実行することもできます。(これらは「サイドカー」コンテナと呼ばれることもあります。)

このトピックでは、 Amazon GameLift Serversコンソールまたは AWS CLI ツールを使用してシンプルなゲームサーバーコンテナグループ定義を作成する方法について説明します。オプション機能の詳細については、[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. **Total memory limit**には、コンテナグループ内のすべてのコンテナで使用できる最大メモリリソースを入力します。この値の計算については、[リソース制限の設定](containers-design-fleet.md#containers-design-fleet-limits)を参照してください。

1. **Total vCPU limit**には、コンテナグループ内のすべてのコンテナが使用できる最大コンピューティング能力を入力します。この値の計算については、[リソース制限の設定](containers-design-fleet.md#containers-design-fleet-limits)を参照してください。

**ステップ 2: コンテナ定義を追加する**

少なくとも、ゲームサーバーコンテナグループにはゲームサーバーコンテナが 1 つあります。コンソールで最初に作成されるコンテナ定義は、ゲームサーバーコンテナです。このステップでは、ゲームサーバーコンテナ定義に必要な最小設定を定義する方法について説明します。

1. コンテナ定義**名**を入力します。グループに定義された各コンテナには、一意の名前値が必要です。

1. ゲームサーバービルドに対応するコンテナイメージをリンクします。パブリックリポジトリまたはプライベートリポジトリのコンテナイメージに対する **Amazon ECR image URI** を入力します。以下の形式を使用できます。
   +  イメージ URI のみ: `[AWS アカウント].dkr.ecr.[AWS リージョン].amazonaws.com/[repository ID]`
   +  イメージ URI \$1 digest: `[AWS アカウント].dkr.ecr.[AWS リージョン].amazonaws.com/[repository ID]@[digest]`
   +  Image URI \$1 tag: `[AWS アカウント].dkr.ecr.[AWS リージョン].amazonaws.com/[repository ID]:[tag]`

1. ゲームサーバービルドで使用する Amazon GameLift Servers **Server SDK バージョン**を指定します。コンテナフリートの場合、この値は 5.2.0 以上である必要があります。

1. **内部コンテナポート範囲** で、プロトコルを設定し、ポート範囲を定義します。範囲サイズは、このコンテナ内で実行される同時ゲームサーバープロセス数よりも大きくある必要があります。ゲームサーバーコンテナがコンテナごとに 1 つのサーバープロセスのみを実行する場合、このポート数に必要なポートはわずかです。詳細については、[ネットワーク接続を構成する](containers-design-fleet.md#containers-custom-network)を参照してください。

1. 必要に応じてコンテナを追加して、追加のサポートソフトウェアを実行します。追加のコンテナは自動的にサポートコンテナとして指定されます。ゲームサーバーコンテナグループは、1 つのゲームサーバーコンテナと最大 8 つのサポートコンテナを持つことができます。次の最小必須設定を指定します。
   + コンテナ定義の**名前** 
   + **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)を参照してください。

**コンテナグループ定義の作成**  
新しいコンテナグループ定義を作成するには、 `create-container-group-definition` CLI コマンドを使用します。このコマンドの詳細については、「*AWS CLI コマンドリファレンス*」の「[create-code-signing-config](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 とメモリの使用量の制限、およびその他の設定を指定します。コンテナグループ内のすべてのコンテナの設定で 1 つの`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.  AWS CLI コマンドで参照できるように、ファイルをローカルに保存します。

### 例: ゲームサーバーコンテナ定義
<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"
  }
```