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

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

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

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

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

  • ランタイム設定やその他のフリート固有の設定を微調整します。

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

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

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

インスタンスに接続するときは、次の潜在的な問題を考慮してください。

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

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

  • インスタンスのファイルまたは設定を変更すると、インスタンスのアクティブなゲームセッションと接続されたプレイヤーに影響する可能性があります。

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

インスタンスデータの収集

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

  • 接続するインスタンスの ID。インスタンス ID または ARN のいずれかを使用できます。

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

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

  1. コンピューティング名を取得します。フリート内のすべてのアクティブなコンピューティングのリストを取得します。フリート ID または ARN を使用して list-compute を呼び出します。単一ロケーションフリートの場合は、フリート識別子のみを指定します。マルチロケーションフリートの場合は、フリート識別子とロケーションを指定します。マネージド 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 のバージョンを検索します。この情報については、フリートにデプロイされているビルドを検索する必要があります。Server SDK バージョンはビルドプロパティです。

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

    リクエスト

    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 CLI を設定する環境変数 AWS Command Line Interface 」を参照してください。

    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)」を参照してください。 Amazon EC2 Systems Manager

    セッション開始リクエストは、ステップ 1 で取得した認証情報を自動的に使用します。

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

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

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

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

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

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

      "Credentials": { "Secret": "aA1bBB2cCCd3EEE", "UserName": "gl-user-remote" }
    • Linux インスタンスの場合 - Linux インスタンスに接続する場合、SSH ではユーザー名とプライベートキーを必要とします。Amazon GameLift は RSA プライベートキーを発行し、改行文字 (\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 フリートのインスタンスには、フリート設定で承認された任意のポートからアクセスできます。フリートのポート設定は、コマンド 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。これには、1 つ以上のゲームサーバー実行可能ファイル、アセット、依存関係が含まれます。ゲームビルドファイルは、 というルートディレクトリにありますgame

    • Windows の場合: c:\game

    • Linux の場合: /local/game

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

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

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

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

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

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

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

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

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