Amazon GameLift Servers Anywhere フリートを作成する - Amazon GameLift Servers

Amazon GameLift Servers Anywhere フリートを作成する

このトピックでは、Amazon GameLift Servers Anywhere フリートを作成する方法を説明します。Anywhere フリートを使用すると、独自のコンピューティングリソースで Amazon GameLift Servers ゲームセッションをホスティングしながら、コアとなるゲームセッション管理機能を利用できます。オンプレミスハードウェアまたはその他のクラウドベースリソース用の Anywhere フリートを作成します。

Anywhere フリートは一般的に、ハイブリッドホスティングソリューションで Amazon GameLift Servers マネージドフリートと共に使用されます。また、Amazon GameLift Servers でホスティングするためのゲームを開発する際にテスト環境としても使用できます。以下のトピックでは、Amazon GameLift Servers Anywhere フリートをゲームホスティングソリューションに組み込むべき場合やその方法の詳細について説明します。

Anywhere フリートはセルフマネージド型であるため、フリートのセットアップには追加の作業が必要です。Anywhere フリートをゲームセッションとプレイヤーをホストできる状態にするには、次のタスクを完了する必要があります。

開始する前に

Anywhere フリートを作成する前に、次のタスクを実行します。詳細については、「Amazon GameLift Servers Anywhere でホスティングするための開発ロードマップ」または「Amazon GameLift Serversを利用するハイブリッドホスティングの開発ロードマップ」を参照してください。

  • ゲームサーバーコードを Amazon GameLift Servers サーバー SDK バージョン 5.x (またはそれ以降) と統合します。すべてのゲーム統合タスクを完了する必要はありません。ゲームサーバービルドに必要なタスクのみでかまいません。一般的な手法は、ローカルマシンを Anywhere フリートとして設定し、コマンドラインインターフェイスを使用してゲームサーバーの統合をテストする方法です (「Amazon GameLift Servers Anywhereでローカルテストを設定する」を参照)。追加のコンポーネント(Amazon GameLift Servers 対応ゲームクライアントなど) は、開発とともに組み込むことができます。

  • Anywhere フリートコンピューティングにインストールするためのゲームサーバーソフトウェアをパッケージ化します。パッケージには、統合されたゲームサーバービルドと、ゲームサーバーの実行に必要なすべてのサポートソフトウェアが含まれている必要があります。

  • Anywhere フリートで Amazon GameLift Servers エージェントを使用するかどうかを決定します。エージェントは、Amazon GameLift Servers で使用するサーバープロセスとコンピューティングの管理に関連する主要なタスクの一部を自動化する、コンピューティング上のプロセス管理ツールです。詳細については、「Amazon GameLift Servers エージェントの操作」を参照してください。

カスタムロケーションを作成する

コンピューティングリソースの物理的な場所を表すカスタムロケーションを作成します。Anywhere フリートを作成するときは、少なくとも 1 つのカスタムロケーションが既に定義されている必要があります。追加のカスタムロケーションを作成し、いつでも既存のフリートに追加できます。

カスタムロケーションを作成するには

カスタムロケーションは、Amazon GameLift Servers コンソールまたは AWS Command Line Interface (AWS CLI) を使用して作成できます。

Console

[Amazon GameLift Servers コンソール] のナビゲーションペインを使用して、[ロケーション] ページを開きます。[ロケーションを作成] をクリックして、[作成] ダイアログボックスを開きます。

  1. ダイアログボックスに、[ロケーション名] を入力します。ベストプラクティスとして、コンピューティングリソースの場所をわかりやすく説明する名前を使用します。地理的な場所、データセンター名、またはその他の場所識別子である場合があります。Amazon GameLift Servers はカスタムの場所の名前に custom- を追加します。

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

  3. [作成] を選択します。

AWS CLI

create-location コマンドを使用してカスタムロケーションを作成します。custom- で始まる location-name 値を指定します。ベストプラクティスとして、コンピューティングリソースの場所をわかりやすく説明する名前を使用します。地理的な場所やデータセンター名など、その場所の識別子を使用するとよいでしょう。

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

Output

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

Anywhere フリートを作成する

ご自身で所有するコンピューティングリソース用に Anywhere フリートを作成します。新しい Anywhere フリートは最初は空で、フリートにコンピューティングを登録することで追加します。

新しく Anywhere フリートを作成すると、フリートステータスは NEW から ACTIVE へすばやく移行します。フリートが ACTIVE に達したら、コンピューティングを追加できます。

Anywhere フリートを作成するには

Anywhere フリートを作成するには、Amazon GameLift Servers コンソールまたは AWS Command Line Interface (AWS CLI) を使用します。

Console

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

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

[Anywhere] オプションを選択し、[次へ]を選択します。

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

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

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

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

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

  2. 必要に応じて、オプションの [その他の詳細] を設定します。これらのフリート設定は後で更新できます。

    1. 本番稼働用または本番稼働前テスト用のフリートを作成するときは、この設定を使用してフリートのコンピューティングの時間あたりのコスト値を指定します。Amazon GameLift Servers は、ゲームセッション配置プロセス中にこの情報を使用して、コストに基づいてホスティングリソースを選択できます。

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

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

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

ステップ 3 カスタムロケーションを選択する

このステップでは、このフリートに追加する予定のコンピューティングの物理的な場所を特定します。ここで 1 つまたは複数のロケーションを指定し、必要に応じて後でロケーションを追加または削除できます。

  1. [カスタムロケーション] で、フリートのコンピューティングに 1 つまたは複数のロケーションを選択します。リストには、現在選択されている AWS リージョン で定義されているすべてのカスタムロケーションが含まれます。フリートに追加する新しいカスタムロケーションを定義するには、[ロケーションを作成] を選択します。

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

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

フリートを作成する前に、設定を確認します。

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

AWS CLI

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

次のリクエスト例では、最小限の必要な設定で新しいフリートを作成します。FleetNamecustom-location を自分の情報で置き換えます。

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 に達したら、コンピューティングを追加できます。

レスポンスにはフリートのロケーションが含まれていないことに注目してください。フリートの全詳細については、describe-fleet-attributes および describe-fleet-location-attributes を呼び出すことで取得できます。

フリートにコンピューティングを追加する

コンピューティングリソースをフリートに追加し、ゲームセッションをホストできる状態にするには、次のタスクを実行します。

  • コンピューティングをフリートに登録します。登録すると、どの物理ホスティングリソースがフリートに含まれるかを Amazon GameLift Servers に通知します。

  • コンピューティングの認証トークンをリクエストします。コンピューティングで実行される各ゲームサーバーは、Amazon GameLift Servers サービスに接続するためにこのトークンが必要です。認証トークンは一時的なものであり、定期的に更新する必要があります。

注記

Amazon GameLift Servers エージェントを使用してゲームサーバーソフトウェアをデプロイする場合は、このステップを省略できます。エージェントは各コンピューティングを自動的に登録し、コンピューティング用の有効な認証トークンを維持します。「Amazon GameLift Servers エージェントの操作」を参照してください。

AWS CLI を使用するか、AWS SDK for Amazon GameLift Servers にプログラムから呼び出しを行うことで、コンピューティングを登録し、認証トークンをリクエストできます。これらのアクションは、Amazon GameLift Servers コンソールで行うことはできません。

ベストプラクティスとして、各コンピューティングにスタートアップスクリプトを追加して、このタスクの両方を自動化することをお勧めします。スタートアップスクリプトは、register-computeget-compute-auth-token コマンドの両方を自動的に呼び出します。また、タスクを自動化して、コンピューティングの存続期間を通じて認証トークンを定期的に更新し、シャットダウン時にコンピューティングの登録を解除することもできます。

各スタートアップアクションは、コンピューティング上に保存する必要があるコンピューティング固有の値を返します。ゲームサーバープロセスがコンピューティングで起動すると、Amazon GameLift Servers サービスへの接続を初期化する際に、これらの値をサーバーパラメータとして渡す必要があります (サーバー SDK リファレンスの ServerParameters を参照)。このコンピューティング固有の値 (またはその保存場所) を環境変数として設定することをお勧めします。Amazon GameLift Servers エージェントを使用している場合、このタスクはユーザーに代わって処理されます。コンピューティング固有の値は次のとおりです。

  • register-computeGameLiftServiceSdkEndpoint の値を返します。この値を webSocketUrl サーバーパラメータに設定します。

  • compute-auth-token は認証トークンを返します。この値を authToken サーバーパラメータに設定します。

AWS CLI

以下の手順では、AWS CLI を使用して各リクエストを手動で送信する方法を説明します。

コンピューティングを登録するには

register-compute を呼び出してコンピューティングを登録します。コンピューティングを追加するフリートの ID を特定します。コンピューティング情報 (わかりやすい名前、IP アドレス、ロケーション) を指定します。コンピューティングのロケーションは、フリートに既に関連付けられているカスタムロケーションである必要があります。別のカスタムロケーションを使用する場合は、Amazon GameLift Servers コンソールを使用してフリートを更新するか、AWS CLI コマンド create-fleet-locations を呼び出してフリートにカスタムロケーションを追加します。

次の例では、コンピューティングとフリートのプレースホルダー値を置き換えます。Anywhere フリートを作成すると、fleet-id 値が返されます。フリートの全詳細については、describe-fleet-attributes および describe-fleet-location-attributes を呼び出すことで取得できます。

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" } }

認証トークンをリクエストするには

get-compute-auth-token を呼び出して有効な認証トークンをリクエストします。コンピューティングを登録します。フリート ID とコンピューティング名を特定します。

次の例では、コンピューティングとフリートのプレースホルダー値を置き換えます。Anywhere フリートを作成すると、fleet-id 値が返されます。フリートの全詳細については、describe-fleet-attributes を呼び出すことで取得できます。コンピューティング情報を検索するには、フリート ID を使用して list-compute を呼び出し、フリートに登録されているすべてのコンピューティングを確認します。

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" }

ゲームサーバーを起動する

Anywhere フリートを作成し、フリートに 1 つまたは複数のコンピューティングを追加したら、ゲームサーバーの実行を開始する準備が整います。

ステップ 1 ゲームサーバーソフトウェアをインストールする

ゲームサーバービルドとすべての依存ソフトウェアを Anywhere フリートの各コンピューティングにインストールします。ゲームサーバービルドは、Amazon GameLift Servers サービスと通信するために必要な最小限の機能を備えた Amazon GameLift Serversサーバー SDK バージョン 5.x (またはそれ以降) と統合する必要があります。

ステップ 2 ゲームサーバーを実行するためのコンピューティングを準備する

各コンピューティングが登録されており、有効な認証トークンがあることを確認します。スクリプトを使用してこれらのタスクを管理する場合は、ゲームサーバープロセスを開始する前に、スクリプトが各コンピューティングで実行されていることを確認します。

ゲームサーバーソフトウェアで Amazon GameLift Servers エージェントをデプロイした場合は、エージェントの実行可能ファイルが起動することを確認します。

ステップ 3 ゲームサーバープロセスを起動する

ゲームサーバーの実行ファイルのインスタンスをコンピューティングで実行します。ゲームサーバービルドが適切に統合されている場合、ゲームサーバープロセスは有効なサーバーパラメータを使用してサーバー SDK アクション InitSDK() を呼び出します。サーバープロセスがゲームセッションをホストできる状態になると、ProcessReady() を呼び出します。

注記

Amazon GameLift Servers エージェントでゲームサーバーソフトウェアをデプロイした場合は、このステップを省略できます。エージェントは、指定したランタイム手順に基づいてゲームサーバープロセスを自動的に起動します。

サーバープロセスのアクティブ化とアクティブなサーバープロセスのメトリクスを確認することで、進行状況をモニタリングできます。「フリートの Amazon GameLift Servers メトリクス」を参照してください。ゲームサーバープロセスが初期化に失敗した場合は、プロセスが実行中のコンピューティングに適したサーバーパラメータ値を取得していることを確認します。