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

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

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

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

注記

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

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

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

Console

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

ステップ 1 マネージド EC2 フリートの詳細を定義する
最小限のフリート設定の場合:
  • フリート名を指定します。

  • バイナリタイプ: ビルドを選択します。以前に Amazon GameLift Servers にアップロードしたサーバービルドのリストからビルドを選択します。

  • デフォルト設定を使用するには、[その他の詳細] セクションと「タグ」セクションをスキップします。

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

    1. フリートの [名前] を入力します。フリート名は説明のみであり、フリートのリストをソートまたはフィルタリングするのに役立ちます。一意である必要はありません。

    2. フリートについてキャプチャするカスタム情報を含めるには、短いフリートの説明を指定します。

    3. [バイナリタイプ、ビルド] を選択し、ドロップダウンリストを使用して、以前にAmazon GameLift Servers にアップロードしたゲームサーバー build を選択します。

  2. 必要に応じて [その他の詳細] を設定します。

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

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

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

    3. Amazon GameLift Servers は個々のフリートのメトリクスデータを送信します。複数のフリートのメトリクスデータを組み合わせる場合は、[メトリクスグループ] 名を指定します。メトリクスを組み合わせるすべてのフリートに同じメトリクスグループ名を使用します。CloudWatch を使用して、集計されたメトリクスグループデータを表示します。

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

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

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

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

最小限のフリート設定の場合:
  • まず、ホームロケーションにのみデプロイします。初期開発とテストにリモートロケーションを追加する必要はありません。

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

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

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

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

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

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

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

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

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

    注記

    Graviton Arm インスタンスには、Linux AMI 用のサーバービルドが必要です。C++ と C# には、サーバー SDK 5.1.1 以降が必要です。Go にはサーバー SDK 5.0 以降が必要です。これらのインスタンスでは、Amazon Linux 2023 (AL2023) および Amazon Linux 2 (AL2)での Mono インストールは標準ではサポートされません。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    2. 新しいゲームセッションがアクティベーションを完了し、プレイヤーをホスト可能な状態になったことを報告するまでに要する最大時間を反映するように、[新しいアクティベーションタイムアウト] を設定します。Amazon GameLift Servers がこの値を超えた場合、ゲームセッションのアクティベーションは終了されます。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

AWS CLI

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

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

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

  • ゲームサーバービルドを指定します。このビルドは Amazon GameLift Servers にアップロードされ、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 Servers にアップロードされ、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"

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

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