Amazon GameLift Servers フリートインスタンスにリモート接続する - Amazon GameLift Servers

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

Amazon GameLift Servers フリートインスタンスにリモート接続する

アクティブなAmazon GameLift Serversマネージド EC2 フリートの任意のインスタンスに接続できます。インスタンスにリモート接続する一般的な理由には、次のようなものがあります。

  • ゲームサーバーの統合に関する問題をトラブルシューティングする。

  • ランタイム設定などフリート固有の設定を微調整する。

  • ログの追跡など、リアルタイムのゲームサーバーアクティビティを取得する。

  • 実際のプレーヤートラフィックを使用してベンチマークツールを実行する。

  • ゲームセッションまたはゲームサーバープロセスに関する特定の問題を調査する。

インスタンスに接続する際に考慮すべき問題として、次のものが考えられます。

  • アクティブなフリートのインスタンスの任意のインスタンスに接続できます。通常、アクティベーション中またはエラー状態にあるフリートなど、非アクティブなフリートには接続できません (このようなフリートの可用性は短期間制限される場合があります)。フリートのアクティブ化に関する問題のヘルプは、「Amazon GameLift Servers フリートの問題をデバッグする」を参照してください。

  • アクティブなインスタンスに接続しても、インスタンスのホスティングアクティビティには影響しません。インスタンスは、ランタイム設定に基づいて引き続きサーバープロセスの起動と停止を行い、ゲームセッションをアクティブ化して実行します。インスタンスは、スケールダウンイベントやその他のイベントに応じてシャットダウンされる可能性があります。

  • インスタンスに加えた変更は、インスタンスのアクティブなゲームセッションおよび接続されたプレイヤーに影響を与える可能性があります。

コンソールを使用したリモートアクセス

フリートインスタンスに直接アクセスする方法はいくつかあります。従来の方法は CLI を使用することでした。Amazon GameLift Servers コンソールで、ナビゲーションペインを使用して Managed EC2 フリートページを開きます。

  1. 確認するフリートインスタンスの ID を選択します。

  2. MyFleet の詳細ページで、インスタンスタブを開き、フリートのすべてのコンピューティングインスタンスを表示します。確認するインスタンスを選択します。

  3. Connect を選択して、コンソールウィンドウで CloudShell ターミナルを開きます。

  4. Run をクリックして新しい環境の作成を開始し、 スクリプトを実行し、 を通じて認証します AWS Key Management Service。

を使用したリモートアクセス AWS CLI

次の手順では、 AWS コマンドラインインターフェイス (CLI) を使用してインスタンスにリモート接続する方法を説明します。のサービス API リファレンスAmazon GameLift Serversに記載されているように、 AWS SDK を使用してプログラムによる呼び出しを行うこともできます。

インスタンスデータを収集する

Amazon GameLift Servers マネージド EC2 フリートインスタンスに接続するには、次の情報が必要です。

  • 接続するインスタンスの ID。インスタンスの ID または ARN のどちらでも使用できます。

  • インスタンスで使用されているサーバー SDK for Amazon GameLift Serversバージョン。サーバー SDK は、インスタンスで実行されているゲームビルドと統合されています。

次の手順では、 CLI AWS を使用してこれらのタスクを完了する方法について説明します。接続するインスタンスのフリート ID を知っておく必要があります。

  1. コンピューティング名を取得します。フリート内のすべてのアクティブなコンピューティングのリストを取得します。フリート ID または ARN を使用して list-compute を呼び出します。単一ロケーションフリートの場合は、フリート ID のみを指定します。マルチロケーションフリートの場合は、フリート ID とロケーションを指定します。マネージド EC2 フリートでは、list-compute はフリートインスタンスのリストを返します。プロパティ ComputeName はインスタンス ID です。アクセスするコンピューティングを検索します。

    リクエスト

    aws gamelift list-compute \ --fleet-id "fleet-2222bbbb-33cc-44dd-55ee-6666ffff77aa" \ --location ""sa-east-1"

    レスポンス

    { "ComputeList": [ { "FleetId": "fleet-2222bbbb-33cc-44dd-55ee-6666ffff77aa", "FleetArn": "arn:aws:gamelift:us-west-2::fleet/fleet-2222bbbb-33cc-44dd-55ee-6666ffff77aa", "ComputeName": "i-0abc12d3e45fa6b78", "IpAddress": "00.00.000.00", "DnsName": "b08444ki909kvqu6zpw3is24x5pyz4b6m05i3jbxvpk9craztu0lqrbbrbnbkks.uwp57060n1k6dnlnw49b78hg1rw4rcz7.us-west-2.amazongamelift.com", "ComputeStatus": "Active", "Location": "sa-east-1", "CreationTime": "2023-07-09T22:51:45.931000-07:00", "OperatingSystem": "AMAZON_LINUX_2023", "Type": "c4.large" } ] }
  2. サーバー SDK バージョンを確認します。この情報を得るには、フリートにデプロイされているビルドを調べる必要があります。サーバー SDK バージョンはビルドのプロパティです。

    1. describe-fleet-attributes をフリートの ID または ARN で呼び出して、フリートのビルドの ID と ARN を取得します。

    2. ビルドの ID または ARN を使用して describe-build を呼び出して、ビルドのサーバー SDK バージョンを取得します。

      例:

      リクエスト

    aws gamelift describe-fleet-attributes / --fleet-ids "fleet-2222bbbb-33cc-44dd-55ee-6666ffff77aa"

    レスポンス

    { "FleetAttributes": [ { "FleetId": "fleet-2222bbbb-33cc-44dd-55ee-6666ffff77aa", "ComputeType": "EC2", "BuildId": "build-3333cccc-44dd-55ee-66ff-00001111aa22", . . . } ] }

    リクエスト

    aws gamelift describe-build / --build-id "build-3333cccc-44dd-55ee-66ff-00001111aa22"

    レスポンス

    "Build": { "BuildId": "build-1111aaaa-22bb-33cc-44dd-5555eeee66ff", "Name": "My_Game_Server_Build_One", "OperatingSystem": "AMAZON_LINUX_2023", "ServerSdkVersion": "5.1.1", . . . }

インスタンスに接続する (サーバー SDK 5)

接続するインスタンスがサーバー SDK バージョン 5.x でゲームビルドを実行している場合は、Amazon EC2 Systems Manager (SSM) を使用してインスタンスに接続します。Windows または Linux を実行しているリモートインスタンスにアクセスできます。

開始する前に:

SSM のセットアップステップを完了し、ローカルマシンに SSM プラグインをインストールします。詳細については、「Amazon EC2 Systems Manager ユーザーガイド」の「SSM のセットアップ」および「CLI 用の Session Manager プラグインのインストール」を参照してください。 AWS Amazon EC2 Systems Manager

  1. インスタンスのアクセス認証情報をリクエストします。接続するインスタンスのフリート ID とコンピューティング名を使用して get-compute-access を呼び出します。 は、インスタンスにアクセスするための一時的な認証情報のセットAmazon GameLift Serversを返します。例:

    リクエスト

    aws gamelift get-compute-access \ --compute-name i-11111111a222b333c \ --fleet-id fleet-2222bbbb-33cc-44dd-55ee-6666ffff77aa --region us-west-2

    レスポンス

    { "ComputeName": " i-11111111a222b333c ", "Credentials": { "AccessKeyId": " ASIAIOSFODNN7EXAMPLE ", "SecretAccessKey": " wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY ", "SessionToken": " AQoDYXdzEJr...<remainder of session token>" }, "FleetArn": " arn:aws:gamelift:us-west-2::fleet/fleet-2222bbbb-33cc-44dd-55ee-6666ffff77aa ", "FleetId": " fleet-2222bbbb-33cc-44dd-55ee-6666ffff77aa " }
  2. アクセス認証情報をエクスポートします (省略可)。認証情報を環境変数にエクスポートし、それらを使用してデフォルトユーザーの AWS CLI を設定できます。詳細については、「 AWS Command Line Interface ユーザーガイド」の「CLI AWS を設定する環境変数」を参照してください。

    export AWS_ACCESS_KEY_ID=ASIAIOSFODNN7EXAMPLE export AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY export AWS_SESSION_TOKEN=AQoDYXdzEJr...<remainder of session token>
  3. フリートインスタンスに接続します。接続するインスタンスで SSM セッションを開始します。インスタンスの AWS リージョンまたは場所を含めます。SSM と SSM プラグインの設定方法などの詳細については、Amazon EC2 Systems Manager ユーザーガイド」の「セッションの開始 (AWS CLI)」を参照してください。

    start-session リクエストは、ステップ 1 で取得した認証情報を自動的に使用します。

    aws ssm start-session \ --target i-11111111a222b333c \ --region us-west-2 \
    注記

    アクセス拒否エラーが発生した場合は、 AWS プロファイルにAWS_PROFILE環境変数が設定されているため、CLI AWS がリモートアクセスに間違った認証情報を使用する可能性があります。解決するには、AWS_PROFILE 環境変数の設定を一時的に解除します。または、リモートアクセス認証情報のカスタム AWS プロファイルを作成し、start-sessionリクエストに--profileコマンドラインパラメータを追加することもできます。

インスタンスに接続する (サーバー SDK 4.x 以前)

接続するインスタンスがサーバー SDK バージョン 4 以前のゲームビルドを実行している場合は、次の手順を実行します。Windows または Linux を実行しているリモートインスタンスに接続できます。Windows インスタンスには、リモートデスクトッププロトコル (RDP) クライアントを使用して接続します。Linux インスタンスには、SSH クライアントを使用して接続します。

  1. インスタンスのアクセス認証情報をリクエストします。インスタンス ID がある場合は、コマンド get-instance-access を使用してアクセス認証情報をリクエストします。成功すると、Amazon GameLift Servers はインスタンスのオペレーティングシステム、IP アドレス、および認証情報のセット (ユーザー名とシークレットキー) を返します。認証情報の形式は、インスタンスのオペレーティングシステムによって決まります。次の手順を使用して、RDP または SSH の認証情報を取得します。

    • Windowsインスタンスの場合 – Windows インスタンスに接続する場合、RDP ではユーザー名とパスワードを必要とします。get-instance-access リクエストはこれらの値を簡単な文字列として返すため、返された値をそのまま使用できます。認証情報の例:

      "Credentials": { "Secret": "aA1bBB2cCCd3EEE", "UserName": "gl-user-remote" }
    • Linux インスタンスの場合 – Linux インスタンスに接続するには、SSH にユーザー名とプライベートキーが必要です。 は RSA プライベートキーAmazon GameLift Serversを発行し、改行文字 (\n) が改行を示す単一の文字列として返します。プライベートキーを使用可能にするには、(1) 文字列を .pem ファイルに変換し、(2) この新しいファイルへのアクセス許可を設定します。返される認証情報の例:

      "Credentials": { "Secret": "-----BEGIN RSA PRIVATE KEY-----nEXAMPLEKEYKCAQEAy7WZhaDsrA1W3mRlQtvhwyORRX8gnxgDAfRt/gx42kWXsT4rXE/b5CpSgie/\nvBoU7jLxx92pNHoFnByP+Dc21eyyz6CvjTmWA0JwfWiW5/akH7iO5dSrvC7dQkW2duV5QuUdE0QW\nZ/aNxMniGQE6XAgfwlnXVBwrerrQo+ZWQeqiUwwMkuEbLeJFLhMCvYURpUMSC1oehm449ilx9X1F\nG50TCFeOzfl8dqqCP6GzbPaIjiU19xX/azOR9V+tpUOzEL+wmXnZt3/nHPQ5xvD2OJH67km6SuPW\noPzev/D8V+x4+bHthfSjR9Y7DvQFjfBVwHXigBdtZcU2/wei8D/HYwIDAQABAoIBAGZ1kaEvnrqu\n/uler7vgIn5m7lN5LKw4hJLAIW6tUT/fzvtcHK0SkbQCQXuriHmQ2MQyJX/0kn2NfjLV/ufGxbL1\nmb5qwMGUnEpJaZD6QSSs3kICLwWUYUiGfc0uiSbmJoap/GTLU0W5Mfcv36PaBUNy5p53V6G7hXb2\nbahyWyJNfjLe4M86yd2YK3V2CmK+X/BOsShnJ36+hjrXPPWmV3N9zEmCdJjA+K15DYmhm/tJWSD9\n81oGk9TopEp7CkIfatEATyyZiVqoRq6k64iuM9JkA3OzdXzMQexXVJ1TLZVEH0E7bhlY9d8O1ozR\noQs/FiZNAx2iijCWyv0lpjE73+kCgYEA9mZtyhkHkFDpwrSM1APaL8oNAbbjwEy7Z5Mqfql+lIp1\nYkriL0DbLXlvRAH+yHPRit2hHOjtUNZh4Axv+cpg09qbUI3+43eEy24B7G/Uh+GTfbjsXsOxQx/x\np9otyVwc7hsQ5TA5PZb+mvkJ5OBEKzet9XcKwONBYELGhnEPe7cCgYEA06Vgov6YHleHui9kHuws\nayav0elc5zkxjF9nfHFJRry21R1trw2Vdpn+9g481URrpzWVOEihvm+xTtmaZlSp//lkq75XDwnU\nWA8gkn6O3QE3fq2yN98BURsAKdJfJ5RL1HvGQvTe10HLYYXpJnEkHv+Unl2ajLivWUt5pbBrKbUC\ngYBjbO+OZk0sCcpZ29sbzjYjpIddErySIyRX5gV2uNQwAjLdp9PfN295yQ+BxMBXiIycWVQiw0bH\noMo7yykABY7Ozd5wQewBQ4AdSlWSX4nGDtsiFxWiI5sKuAAeOCbTosy1s8w8fxoJ5Tz1sdoxNeGs\nArq6Wv/G16zQuAE9zK9vvwKBgF+09VI/1wJBirsDGz9whVWfFPrTkJNvJZzYt69qezxlsjgFKshy\nWBhd4xHZtmCqpBPlAymEjr/TOlbxyARmXMnIOWIAnNXMGB4KGSyl1mzSVAoQ+fqR+cJ3d0dyPl1j\njjb0Ed/NY8frlNDxAVHE8BSkdsx2f6ELEyBKJSRr9snRAoGAMrTwYneXzvTskF/S5Fyu0iOegLDa\nNWUH38v/nDCgEpIXD5Hn3qAEcju1IjmbwlvtW+nY2jVhv7UGd8MjwUTNGItdb6nsYqM2asrnF3qS\nVRkAKKKYeGjkpUfVTrW0YFjXkfcrR/V+QFL5OndHAKJXjW7a4ejJLncTzmZSpYzwApc=\n-----END RSA PRIVATE KEY-----", "UserName": "gl-user-remote" }

      AWS CLI を使用する場合、--query および --output パラメータをget-instance-accessリクエストに含めることで、.pemファイルを自動的に生成できます。

      .pem ファイルでアクセス許可を設定するには、次のコマンドを実行します。

      $ chmod 400 MyPrivateKey.pem
  2. リモート接続でポートを開きます。Amazon GameLift Servers フリートのインスタンスには、フリート設定で承認された任意のポートからアクセスできます。フリートのポート設定は、コマンド describe-fleet-port-settings を使用して表示できます。

    ベストプラクティスとして、必要な場合にのみ、リモートアクセス用のポートを開き、完了したらそれを閉じるようにお勧めします。フリートの作成後、フリートがアクティブになる前にポート設定を更新することはできません。問題が発生した場合は、ポート設定を開いた状態でフリートを再作成してください。

    コマンド update-fleet-port-settings を使用してリモート接続 (SSH 用は22 または RDP 用は3389) にポート設定を追加します IP 範囲値には、接続に使用する予定のデバイスの IP アドレスを指定します (CIDR 形式に変換)。例:

    $ AWS gamelift update-fleet-port-settings --fleet-id "fleet-2222bbbb-33cc-44dd-55ee-6666ffff77aa" --inbound-permission-authorizations "FromPort=22,ToPort=22,IpRange=54.186.139.221/32,Protocol=TCP"

    次の例では、Windows フリートでポート 3389 を開きます。

    $ AWS gamelift update-fleet-port-settings --fleet-id "fleet-2222bbbb-33cc-44dd-55ee-6666ffff77aa" --inbound-permission-authorizations "FromPort=3389,ToPort=3389,IpRange=54.186.139.221/32,Protocol=TCP"
  3. リモート接続クライアントを開きます。Windows インスタンスにはリモートデスクトップ、Linux インスタンスには SSH を使用します。IP アドレス、ポート設定、アクセス認証情報を使用してインスタンスに接続します。

    SSH の例:

    ssh -i MyPrivateKey.pem gl-user-remote@192.0.2.0

リモートインスタンス上のファイルを表示する

インスタンスにリモートで接続すると、完全なユーザーアクセスや管理アクセスを得ることになります。これは、ゲームホスティングでエラーや障害を引き起こす可能性があることも意味します。インスタンスがホスティングしているゲームにアクティブなプレイヤーがいる場合、ゲームセッションがクラッシュしてプレーヤーがゲームから退出したり、ゲームのシャットダウンプロセスが中断されてセーブされたゲームデータやログにエラーが発生したりするリスクがあります。

ホスティングインスタンスで次のリソースを探します。

  • ゲーム用のビルドファイル。これらのファイルは、 にアップロードしたゲームビルドですAmazon GameLift Servers。これには、1 つまたは複数のゲームサーバー実行可能ファイル、アセット、依存関係が含まれます。ゲームビルドファイルは、game という名前のルートディレクトリにあります。

    • Windows の場合: c:\game

    • Linux の場合: /local/game

  • ゲームログファイル。ゲームサーバーが生成したログファイルを、指定したディレクトリパスのルートディレクトリで検索します。

  • Amazon GameLift Servers ホスティングリソース。ルートディレクトリには、ゲームホスティングアクティビティを管理するために Amazon GameLift Serversサービスが使用するファイルWhitewaterが含まれています。これらのファイルは、いかなる理由があっても変更しないでください。

  • ランタイム設定。個別のインスタンスのランタイム設定にはアクセスしないでください。ランタイム設定プロパティを変更するには、フリートのランタイム設定を更新します (「 SDK オペレーション UpdateRuntimeConfiguration」または AWS CLI update-runtime-configuration」を参照してください AWS )。

  • フリートのデータ。JSON ファイルには、インスタンスで実行されているサーバープロセスで使用できるように、インスタンスが属するフリートに関する情報が含まれています。この JSON ファイルは、次の場所にあります。

    • Windows の場合: C:\GameMetadata\gamelift-metadata.json

    • Linux の場合: /local/gamemetadata/gamelift-metadata.json

  • TLS 証明書。インスタンスがあるフリートで TLS 証明書の生成が有効になっている場合、証明書、証明書チェーン、プライベートキー、ルート証明書などの証明書ファイルは次の場所にあります。

    • Windows の場合: c:\\GameMetadata\Certificates

    • Linux の場合: /local/gamemetadata/certificates/