Amazon GameLift マネージド EC2 フリートを作成する - Amazon GameLift

Amazon GameLift マネージド EC2 フリートを作成する

このトピックでは、Amazon GameLift マネージド EC2 フリートを作成する方法を説明します。マネージドフリートは、マルチプレイヤーゲームホスティング用に最適化された Amazon Elastic Compute Cloud (Amazon EC2) コンピューティングインスタンスを使用します。Amazon GameLift でサポートされている AWS リージョンおよび Local Zones にコンピューティングをグローバルにデプロイするマネージドフリートを作成できます。

新しいマネージド EC2 フリートを作成すると、フリート作成プロセスがすぐに開始されます。マネージドフリートは、Amazon GameLift がゲームサーバービルドを準備し、ビルドをインストールした EC2 インスタンスをデプロイして、各インスタンスでゲームサーバーを起動する間、いくつかのフェーズを通過します。フリートのステータスは、コンソールまたは AWS Command Line Interface (AWS CLI) を使用してモニタリングできます。フリートがゲームセッションをホストできる状態になると、フリートのステータスが ACTIVE になります。マネージドフリートの作成の詳細については、以下のトピックを参照してください。

マネージド EC2 フリートを作成するには

EC2 マネージドフリートは、Amazon GameLift コンソールまたは AWS Command Line Interface (AWS CLI) を使用して作成できます。

Console

Amazon GameLift コンソールのナビゲーションペインを使用して、[フリート] ページを開きます。[フリートの作成] を選択して、フリート作成ワークフローを開始します。

ステップ 1 コンピューティングタイプを選択する

[マネージド EC2] オプションを選択し、[次へ] を選択します。

ステップ 2 フリートの詳細を定義する

このステップでは、フリート全体の設定をいくつか指定します。

最小限のフリート設定の場合:
  • フリート名を指定します。

  • バイナリ型を選択し、アップロードされたビルドまたはスクリプトを指定します。

  • 追加の詳細とタグについてのセクションは省略します。

  1. [フリートの詳細] セクションに以下の内容を入力します。

    1. フリートの [名前] を入力します。フリートの一覧を表示したときにフリートタイプを識別しやすいフリート命名パターンを使用することをお勧めします。

    2. [説明] には、フリートの簡単な説明を入力します。

    3. [バイナリ型] では、このフリートにカスタムゲームサーバービルドをデプロイしている場合は [ビルド] を、リアルタイムサーバーをこのフリートにデプロイしている場合は [スクリプト] を選択します。ドロップダウンリストから、アップロードされたビルドまたはスクリプトを選択します。

  2. (オプション) 必要に応じて [その他の詳細] を設定します。

    1. ゲームサーバーの実行可能ファイルでアカウントの他の AWS リソースにアクセスする必要がある場合は、必要なアクセス許可を持つ IAM インスタンスロールを指定します。他のサーバー側アプリケーション (CloudWatch エージェントなど) を認可する方法などの詳細については、「フリートの他の AWS リソースと通信する」を参照してください。この設定は、フリートの作成後に変更することはできません。

      ロールを使用するフリートを作成する前に、ロールを作成する必要があります。さらに、インスタンスロールを使用してフリートを作成するには、AWS ユーザーに IAM PassRole アクセス許可が必要です (「Amazon GameLift の IAM アクセス許可の例」を参照)。

    2. ゲームの認証と暗号化を設定するには、[TLS 証明書の生成] オプションをオンにします。接続時にこの証明書を使用してゲームサーバーを認証し、クライアント/サーバー間のすべての通信を暗号化します。TLS 対応のフリートのインスタンスごとに、Amazon GameLift によってこの証明書を使用して新しい DNS エントリも作成されます。この設定は、フリートの作成後に変更することはできません。

    3. このフリートのメトリクスデータとその他のメトリクスデータを組み合わせる場合は、[メトリクスグループ] 名を指定します。組み合わせるすべてのフリートに同じメトリクスグループ名を使用します。メトリクスグループのメトリクスを表示して、集計データを確認します。

  3. (オプション) フリートリソースに [タグ] を追加します。タグはそれぞれ、1 つのキーとオプションの 1 つの値で設定されており、どちらもお客様側が定義します。タグを割り当てることで、AWS リソースを目的、所有者、環境など有用な方法で分類することができます。追加するタグごとに [新しいタグを追加] を選択します。

  4. [次へ] を選択してワークフローを続行します。

ステップ 3 インスタンスの詳細を定義する

このステップでは、使用するホスティングリソースのタイプと、リソースをデプロイするロケーションを指定します。複数のロケーションを選択すると、ゲームサーバーをデプロイする地理的範囲を広げられるため、サーバーをプレイヤーに近づけ、レイテンシーを最小限に抑えることができます。ロケーションによっては使用できない EC2 インスタンスタイプがあります。

最小限のフリート設定の場合:
  • リモートロケーションを追加しないでください。

  • フリートタイプを「オンデマンド」に設定します。スポットフリートには追加のセットアップ作業が必要です。

  • インスタンスタイプを「c5.large」に設定します。この一般的に使用されるインスタンスタイプは、すべての AWS リージョンで使用できます。

  1. [インスタンスデプロイ] で、フリートのロケーションとタイプを指定します。

    1. フリートインスタンスをデプロイする追加の [ロケーション] を 1 つまたは複数選択します。このリモートロケーションは、このフリートを作成する AWS リージョンであるフリートのホームロケーション (事前選択済み) に追加されます。Amazon GameLift がサポートするすべての AWS リージョンおよび Local Zones からリモートロケーションを選択できます。

      デフォルトで有効になっていない AWS リージョンの使用方法など、サポートされているロケーションの詳細については、マネージドホスティングの「Amazon GameLift のサービスロケーション」を参照してください。また、フリートごとのロケーションの Amazon GameLift クォータも確認してください。

    2. このフリートで [オンデマンド] インスタンスを使用するか [スポット] インスタンスを使用するかを選択します。フリートタイプの詳細については、「オンデマンドインスタンスとスポットインスタンスの比較」を参照してください。

  2. ニーズを満たし、選択したすべてのロケーションで利用可能な Amazon EC2 [インスタンスの設定] を選択します。このリストは、現在のロケーションとフリートタイプの選択に基づいてフィルタリングされます。インスタンスタイプファミリーやアーキテクチャなどの他の要因によってさらにフィルタリングできます。フリートを作成した後に、そのインスタンスタイプを変更することはできません。

    一部のロケーションでは、インスタンスタイプのオプションが制限されています。希望するインスタンスタイプがすべてのロケーションで利用できない場合は、ロケーションの可用性値を選択して詳細を表示します。すべてのロケーションに対応するために、異なるインスタンスタイプで個別のフリートを作成する必要がある場合があります。

    インスタンスタイプの選択の詳細については、「インスタンスのタイプ」を参照してください。Amazon EC2 Arm アーキテクチャの詳細については、「AWS Graviton プロセッサ」と「Amazon EC2 インスタンスタイプ」を参照してください。Amazon GameLift でサポートされているインスタンスタイプの完全なリストについては、EC2InstanceType (CreateFleet()) の API リファレンスを参照してください。

    注記

    Graviton Arm インスタンスには Linux OS 上に構築された Amazon GameLift サーバーが必要です。C++ と C# には、サーバー SDK 5.1.1 以降が必要です。Go にはサーバー SDK 5.0 以降が必要です。これらのインスタンスでは、Amazon Linux 2023 (AL2023) または Amazon Linux 2 (AL2) へのモノラルインストールに対する追加設定なしでのサポートは提供していません。

  3. [次へ] を選択してワークフローを続行します。

ステップ 4 ランタイムを設定する

このステップでは、フリート内の各インスタンスでゲームサーバーソフトウェアを実行する方法を説明します。インスタンスで実行する実行可能ファイルごとに個別のサーバープロセス行項目を定義し、同時に実行する各サーバープロセスの数を決定します。各インスタンスでポートを開き、プレイヤーがゲームサーバーに直接接続できるようにします。これらのフリート設定はいつでも更新できます。

最小限のフリート設定の場合:
  • ゲームサーバー実行可能ファイルの単一のサーバープロセス行項目を定義します。ゲームサーバーで他のプロセスを実行する必要がある場合は、これらの各プロセスの定義も作成します。

  • 各行項目には、デフォルトの同時プロセス数 (1) を使用します。

  • ゲームセッションのアクティベーション設定は省略します。

  • 1 つのポート番号を指定します。

  • ゲームセッションのリソース設定は省略します。

  1. [ランタイム設定] を作成して、フリート内の各インスタンスでサーバープロセスを実行する方法について Amazon GameLift に指示します。フリートのランタイム設定は、デプロイ後いつでも変更できます。

    1. ビルドの実行可能ファイルへの [起動パス] を入力します。Windows インスタンスでは、ゲームサーバーはパス C:\game にビルドされます。Linux インスタンスでは、ゲームサーバーは /local/game に構築されます。例: C:\game\MyGame\server.exe/local/game/MyGame/server.exe、または MyRealtimeLaunchScript.js

    2. オプションで、ゲーム実行可能ファイルに渡す [起動パラメータ] を入力します。例えば、+sv_port 33435 +start_lobby などです。

    3. 各インスタンスで実行する [同時プロセス] の数を指定します。ゲームサーバー実行可能ファイルの場合、各プロセスで 1 つのゲームセッションをホストできるため、同時プロセスにより、インスタンスが同時にホストできるゲームセッションの数が決まります。

      インスタンスごとのサーバープロセスで Amazon GameLift [クォータ] を確認します。このクォータは、すべての設定の同時プロセスの合計に適用されます。フリートの設定がクォータを超えると、フリートはアクティブ化されません。

  2. [ゲームセッションアクティベーション] のデフォルトを使用するか、ゲームに合わせてカスタマイズします。ランタイム設定で、インスタンスごとに複数のゲームサーバープロセスを同時に実行する必要がある場合、これらの設定により、新しいゲームセッションの起動速度が決まります。

    1. [最大の同時ゲームセッションアクティベーション] を設定して、新しいゲームセッションを準備している、インスタンス上のゲームサーバーの数を制限します。この設定は、複数の新しいゲームセッションを起動する際にリソースが大量に消費され、実行中の他のゲームセッションのパフォーマンスに影響を与える可能性がある場合に便利です。

    2. 新しいゲームセッションがアクティベーションを完了し、プレイヤーをホストする準備ができたと報告するまでにかかる時間の上限を反映するように、[新しいアクティベーションタイムアウト] を設定します。Amazon GameLift は、この値を超えるとゲームセッションのアクティベーションを終了します。

  3. [EC2 ポート設定] を開き、インバウンドトラフィックがフリート上のサーバープロセスにアクセスできるようにします。この設定はフリートの作成には必要ありませんが、プレイヤーがフリートのゲームセッションに接続する前に設定する必要があります。

    ポート設定ごとに、ゲームクライアントとゲームサーバー間の通信に使用するデータ転送プロトコルの [タイプ] を選択します。[ポート範囲] (nnnnn[-nnnnn] 形式) と、CIDR 表記を使用した [IP アドレス範囲] (誰にでもアクセスを許可する 0.0.0.0/0 など) を指定します。

    連続しない範囲を複数設定する必要がある場合は、複数のポート設定を作成します。

  4. オプションの [ゲームセッションリソース設定] を指定します。この設定は、デプロイ後にいつでも更新できます。

    1. フリート内のすべてのインスタンスで [ゲームスケーリング保護ポリシー] をオンまたはオフにします。スケールダウンイベントの間、アクティブなゲームセッションをホストしている保護付きのインスタンスは終了されません。

    2. 指定された期間に 1 人のプレイヤーが作成できるゲームセッションの数を制限する場合は、[リソース作成制限] を設定します。

  5. [次へ] を選択してワークフローを続行します。

ステップ 5 確認して作成する

フリートを作成する前に、設定を確認します。一部の設定は後で更新できますが (「Amazon GameLift フリート設定を更新する」を参照)、次の設定はフリートの作成後に変更することはできません。

  • コンピューティングタイプ: マネージド EC2 フリートを Anywhere フリートに変換することはできません。

  • ビルドまたはスクリプト: ゲームサーバーのビルドまたはスクリプトに更新をデプロイするには、新しいフリートを作成する必要があります。

  • インスタンスロールや TLS 証明書の生成などの追加オプション。

  • フリートタイプ (スポットまたはオンデマンド) や EC2 インスタンスタイプなど、インスタンスの詳細。

新しいフリートをデプロイする準備ができたら、[作成] を選択します。Amazon GameLift は、フリートのアクティベーションプロセスをすぐに開始し、フリートに一意の ID を割り当て、NEW ステータスに設定します。フリートの進行状況は [フリート] ページからを追跡します。フリートの詳細ページを表示し、[イベント] タブに移動します。

フリートのホスティング容量を更新できるのは、フリートが [アクティブ] ステータスになった後です。Amazon GameLift は最初に、各フリートロケーションに 1 つのインスタンスを持つフリートをデプロイします。その後、各ロケーションにインスタンスを追加して容量を調整します。詳細については、「Amazon GameLift によるゲームホスティング容量のスケーリング」を参照してください。

AWS CLI

create-fleet コマンドを使用して、コンピューティングタイプ EC2 のフリートを作成します。Amazon GameLift は、現在のデフォルト AWS リージョンにフリートリソースを作成します (または、--region タグを追加して別の AWS リージョンを指定することもできます)。

最小限の設定でマネージドフリートを作成する

次のリクエスト例では、ゲームクライアントが接続できる実行中のゲームサーバーでフリートをデプロイするために必要な最小限の設定で新しいフリートを作成します。新しいフリートには次の特徴があります。

  • ゲームサーバービルドを指定します。このビルドは Amazon GameLift にアップロードされ、READY ステータスになっています。

  • 選択したゲームビルドに適したオペレーティングシステムで c5.large オンデマンドインスタンスを使用します。

  • フリートのホーム AWS リージョンを us-west-2 に設定し、インスタンスをそのリージョンにのみデプロイします。

  • ランタイム設定に基づいて、フリート内の各コンピューティングは 1 つのゲームサーバープロセスを実行します。つまり、各コンピューティングは一度に 1 つのゲームセッションのみをホストできます。ゲームセッションのアクティベーションタイムアウトはデフォルト値の 300 秒に設定され、同時アクティベーションの数に制限はありません。

  • プレイヤーは、33435 の単一のポート設定を使用してゲームサーバーに接続できます。

  • その他の機能はすべてオフにするか、デフォルト設定を使用します。

aws gamelift create-fleet \ --name MinimalFleet123 \ --description "A basic test fleet" \ --region us-west-2 \ --ec2-instance-type c5.large \ --fleet-type ON_DEMAND \ --build-id build-1111aaaa-22bb-33cc-44dd-5555eeee66ff \ --runtime-configuration "ServerProcesses=[{LaunchPath=C:\game\Bin64.dedicated\MultiplayerSampleProjectLauncher_Server.exe, ConcurrentExecutions=10}]" \ --ec2-inbound-permissions "FromPort=33435,ToPort=33435,IpRange=0.0.0.0/0,Protocol=UDP"

完全に設定されたマネージドフリートを作成する

次のリクエスト例では、すべてのオプション機能の設定を使用して本番稼働用フリートを作成します。新しいフリートには次の特徴があります。

  • ゲームサーバービルドを指定します。このビルドは Amazon GameLift にアップロードされ、READY ステータスになっています。

  • 選択したゲームビルドに適したオペレーティングシステムで c5.large オンデマンドインスタンスを使用します。

  • フリートのホーム AWS リージョンを us-west-2 に設定し、インスタンスをホームリージョンと 1 つのリモートロケーションにデプロイしますsa-east-1

  • ランタイム設定により:

    • フリート内の各コンピューティングは、同じ起動パラメータで 10 のゲームサーバープロセスを実行します。つまり、各コンピューティングは最大 10 のゲームセッションを同時にホストできます。

    • 各コンピューティングで、同時にアクティブ化できるゲームセッションは 2 つのみです。アクティブ化中のゲームセッションは、300 秒 (5 分) 以内にプレイヤーをホストできる状態になるか、終了されます。

  • プレイヤーは、33435 to 33535 の範囲のポートを使用してゲームサーバーに接続できます。

  • ゲームクライアントとサーバー間の暗号化された通信用の TLS 証明書を生成します。

  • このフリートのすべてのゲームセッションでは、ゲームセッションの保護が有効になっています。

  • 各プレイヤーが 15 分以内に作成できる新しいゲームセッションは 3 つまでです。

  • このフリートのメトリクスは、メトリクスグループ AMERfleets に含まれます。このメトリクスグループは、北米、中米、南米のフリートグループのメトリクスを集計します (この例の場合)。

aws gamelift create-fleet \ --name ProdFleet123 \ --description "A fully configured prod fleet" \ --ec2-instance-type c5.large \ --region us-west-2 \ --locations "Location=sa-east-1" \ --fleet-type ON_DEMAND \ --build-id build-1111aaaa-22bb-33cc-44dd-5555eeee66ff \ --certificate-configuration "CertificateType=GENERATED" \ --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=33535,IpRange=0.0.0.0/0,Protocol=UDP" \ --metric-groups "AMERfleets"

フリート作成のリクエストが成功すると、Amazon GameLift はリクエストした構成設定と新しいフリート ID を含む一連のフリート属性を返します。次に Amazon GameLiftはフリートアクティベーションのプロセスを開始し、フリートのステータスを [新規] に設定します。フリートのステータスをトラッキングし、他のフリート情報を表示するには、次の CLI コマンドを使用します。

以下のコマンドを使用して、必要に応じてフリートの容量と他の設定を変更できます。