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 コンソール] のナビゲーションペインを使用して、[ロケーション] ページを開きます。[ロケーションを作成] をクリックして、[作成] ダイアログボックスを開きます。
-
ダイアログボックスに、[ロケーション名] を入力します。ベストプラクティスとして、コンピューティングリソースの場所をわかりやすく説明する名前を使用します。地理的な場所、データセンター名、またはその他の場所識別子である場合があります。Amazon GameLift Servers はカスタムの場所の名前に custom- を追加します。
-
(オプション) カスタムロケーションにタグを追加します。タグはそれぞれ、1 つのキーとオプションの 1 つの値で設定されており、どちらもお客様側が定義します。タグを割り当てることで、AWS リソースを目的、所有者、環境など有用な方法で分類することができます。追加するタグごとに [新しいタグを追加] を選択します。
-
[作成] を選択します。
- 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 フリートの詳細を定義する
-
このステップでは、フリート全体の主要な設定をいくつか指定します。
-
[フリートの詳細] セクションに以下の内容を入力します。
-
フリートの [名前] を入力します。フリートの一覧を表示したときにフリートタイプを識別しやすいフリート命名パターンを使用することをお勧めします。
-
[説明] には、フリートの簡単な説明を入力します。
-
必要に応じて、オプションの [その他の詳細] を設定します。これらのフリート設定は後で更新できます。
-
本番稼働用または本番稼働前テスト用のフリートを作成するときは、この設定を使用してフリートのコンピューティングの時間あたりのコスト値を指定します。Amazon GameLift Servers は、ゲームセッション配置プロセス中にこの情報を使用して、コストに基づいてホスティングリソースを選択できます。
-
このフリートのメトリクスデータとその他のメトリクスデータを組み合わせる場合は、[メトリクスグループ] 名を指定します。組み合わせるすべてのフリートに同じメトリクスグループ名を使用します。メトリクスグループのメトリクスを表示して、集計データを確認します。
-
オプションで、カスタムロケーションにタグを追加します。タグはそれぞれ、1 つのキーとオプションの 1 つの値で設定されており、どちらもお客様側が定義します。タグを割り当てることで、AWS リソースを目的、所有者、環境など有用な方法で分類することができます。追加するタグごとに [新しいタグを追加] を選択します。
-
[次へ] を選択してワークフローを続行します。
- ステップ 3 カスタムロケーションを選択する
-
このステップでは、このフリートに追加する予定のコンピューティングの物理的な場所を特定します。ここで 1 つまたは複数のロケーションを指定し、必要に応じて後でロケーションを追加または削除できます。
-
[カスタムロケーション] で、フリートのコンピューティングに 1 つまたは複数のロケーションを選択します。リストには、現在選択されている AWS リージョン で定義されているすべてのカスタムロケーションが含まれます。フリートに追加する新しいカスタムロケーションを定義するには、[ロケーションを作成] を選択します。
-
[次へ] を選択してワークフローを続行します。
- ステップ 4 確認して作成する
-
フリートを作成する前に、設定を確認します。
新しいフリートをデプロイする準備ができたら、[作成] を選択します。Amazon GameLift Servers はフリートのアクティベーションプロセスを直ちに開始し、一意の ID を割り当ててフリートを NEW ステータスに移行します。フリートの進捗状況は [フリート] ページで追跡できます。
- AWS CLI
-
create-fleet コマンドを使用して、コンピューティングタイプ ANYWHERE のフリートを作成します。名前と少なくとも 1 つのカスタムロケーションを指定します。Amazon GameLift Servers は、現在のデフォルト AWS リージョン に Anywhere フリートリソースを作成します (または、--region タグを追加して別の AWS リージョン を指定することもできます)。
次のリクエスト例では、最小限の必要な設定で新しいフリートを作成します。FleetName と custom-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-compute と get-compute-auth-token コマンドの両方を自動的に呼び出します。また、タスクを自動化して、コンピューティングの存続期間を通じて認証トークンを定期的に更新し、シャットダウン時にコンピューティングの登録を解除することもできます。
各スタートアップアクションは、コンピューティング上に保存する必要があるコンピューティング固有の値を返します。ゲームサーバープロセスがコンピューティングで起動すると、Amazon GameLift Servers サービスへの接続を初期化する際に、これらの値をサーバーパラメータとして渡す必要があります (サーバー SDK リファレンスの ServerParameters を参照)。このコンピューティング固有の値 (またはその保存場所) を環境変数として設定することをお勧めします。Amazon GameLift Servers エージェントを使用している場合、このタスクはユーザーに代わって処理されます。コンピューティング固有の値は次のとおりです。
- 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 メトリクス」を参照してください。ゲームサーバープロセスが初期化に失敗した場合は、プロセスが実行中のコンピューティングに適したサーバーパラメータ値を取得していることを確認します。