View a markdown version of this page

コンテナに接続する - Amazon GameLift Servers

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

コンテナに接続する

Amazon GameLift Servers コンテナフリートの場合、フリートインスタンスで実行されているゲームサーバーコンテナにアクセスできます。コンテナアクセスを使用して、ゲームセッションのトラブルシューティング、ログの検査、ランタイム問題のデバッグを行います。

コンテナに接続する

開始する前に:

フリートインスタンスに接続します。手順については、「フリートインスタンスに接続する」を参照してください。

次のコマンドを実行して、インスタンスで実行中のコンテナを一覧表示します。

sudo docker ps

出力には、ゲームサーバーコンテナや内部Amazon GameLift Serversコンテナなど、インスタンスで実行されているすべてのコンテナが一覧表示されます。ゲームサーバーイメージを持つコンテナを探して、ゲームサーバーコンテナを識別します。

出力の例:

CONTAINER ID IMAGE COMMAND CREATED STATUS b9676e9489f5 game-server-container "/bin/sh -c ./$GAME_…" 2 days ago Up 2 days 1d1c8443efe2 support-container "/bin/sh -c ./$SUPPO…" 2 days ago Up 2 days

ゲームサーバーコンテナに接続するには、 CONTAINER ID列のコンテナショート ID を使用します。これにより、コンテナファイルシステムへの完全な読み取りおよび書き込みアクセスが可能になります。

sudo docker exec -it container-short-id sh

コンソール経由でコンテナに接続する

Amazon EC2 Systems Manager (SSM) を使用して、Amazon GameLift Serversコンソールからゲームサーバーコンテナに接続できます。このメソッドは、追加のセットアップや認証情報管理を必要とせずに、安全なアクセスを提供します。コンテナに接続するには、コンピューティングタブまたはフリートの詳細ページのゲームセッションタブを使用します。

  1. Amazon GameLift Servers コンソールで、ナビゲーションペインからマネージドコンテナを選択し、次にフリートを選択します。

  2. アクセスするコンテナまたはゲームセッションを含むフリート ID を選択します。

  3. フリートの詳細ページで、次のいずれかのタブを選択します。

    • コンピューティング – フリートで実行されているコンテナを一覧表示します。接続するコンテナを選択します。

    • ゲームセッション – フリートのゲームセッションを一覧表示します。ゲームセッションを選択して、それをホストするコンテナに接続します。

  4. 接続 を選択します。表示されたコマンドをコピーしてコンテナに接続し、もう一度接続を選択します。

  5. 接続ダイアログで、[実行] を選択して新しい SSM セッションを作成します。システムは AWS Key Management Service (AWS KMS) を介してセッションを認証し、ブラウザでターミナルを開きます。

  6. インスタンスに接続したら、ステップ 4 の docker コマンドを貼り付け、インスタンスで実行してコンテナにアクセスします。

ゲームセッションをホストするコンテナに接続する

特定のゲームセッションをホストするゲームサーバーコンテナに接続するには、次の手順に従います。

  1. コンピューティング名を取得します。describe-game-sessions を呼び出して、ゲームセッションComputeNameの を取得します。

    リクエスト

    aws gamelift describe-game-sessions \ --fleet-id fleet-2222bbbb-33cc-44dd-55ee-6666ffff77aa \ --game-session-id arn:aws:gamelift:us-west-2::gamesession/fleet-2222bbbb-33cc-44dd-55ee-6666ffff77aa/gs-1111aaaa-2222-3333-4444-5555bbbb66cc

    レスポンス

    { "GameSessions": [ { "GameSessionId": "arn:aws:gamelift:us-west-2::gamesession/fleet-2222bbbb-33cc-44dd-55ee-6666ffff77aa/gs-1111aaaa-2222-3333-4444-5555bbbb66cc", "FleetId": "fleet-2222bbbb-33cc-44dd-55ee-6666ffff77aa", "ComputeName": "62c5ff7f7a9a445d84877074c80aeafc", "Status": "ACTIVE", . . . } ] }

    レスポンスComputeNameの値 ( など62c5ff7f7a9a445d84877074c80aeafc) を書き留めます。

  2. コンピューティングアクセスとコンテナ属性を取得します。フリート ID とコンピューティング名を使用して get-compute-access を呼び出します。

    レスポンスには、次のフィールドが含まれます。

    • ContainerIdentifiers – 各コンテナContainerRuntimeIdContainerNameと 。

    • GameServerContainerGroupDefinitionArn – コンテナグループ定義の ARN。

    • Credentials – インスタンスに接続するための一時的な認証情報。

    リクエスト

    aws gamelift get-compute-access \ --fleet-id fleet-2222bbbb-33cc-44dd-55ee-6666ffff77aa \ --compute-name 62c5ff7f7a9a445d84877074c80aeafc

    レスポンス

    { "ComputeName": "62c5ff7f7a9a445d84877074c80aeafc", "ContainerIdentifiers": [ { "ContainerName": "game-server", "ContainerRuntimeId": "02accb92cd9bef3373300e7151d5c2b3dcca3b06eff1bb4e345085fc008d4678" } ], "Credentials": { "AccessKeyId": "ASIAIOSFODNN7EXAMPLE", "SecretAccessKey": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY", "SessionToken": "AQoDYXdzEJr...<remainder of session token>" }, "FleetId": "fleet-2222bbbb-33cc-44dd-55ee-6666ffff77aa", "GameServerContainerGroupDefinitionArn": "arn:aws:gamelift:us-west-2::containergroupdefinition/MyGameServerGroup" }
  3. インスタンスに接続します。ステップ 2 の認証情報を使用して、フリートインスタンスに接続します。詳細な手順については、「フリートインスタンスに接続する」を参照してください。

  4. ゲームサーバーのコンテナ名を見つけます。ステップ 2 GameServerContainerGroupDefinitionArnの を使用して describe-container-group-definition を呼び出し、ゲームサーバーコンテナ名を特定します。

    リクエスト

    aws gamelift describe-container-group-definition \ --name arn:aws:gamelift:us-west-2::containergroupdefinition/MyGameServerGroup

    レスポンス

    { "ContainerGroupDefinition": { "ContainerGroupDefinitionArn": "arn:aws:gamelift:us-west-2:123456789012:containergroupdefinition/MyGameServerGroup:3", "Name": "MyGameServerGroup", "ContainerGroupType": "GAME_SERVER", "GameServerContainerDefinition": { "ContainerName": "game-server", . . . }, . . . } }

    GameServerContainerDefinition.ContainerName 値を書き留めます (例: game-server)。

  5. ゲームサーバーコンテナランタイム ID を特定します。前のステップのゲームサーバーコンテナ名を使用して、ステップ 2 のget-compute-accessレスポンスContainerIdentifiersから で一致するエントリを見つけます。[ContainerRuntimeId] の値を書き留めます。

  6. コンテナに接続します。コンテナ ID ContainerRuntimeIdとして を使用し、次のコマンドを実行します。

    sudo docker exec -it 02accb92cd9bef3373300e7151d5c2b3dcca3b06eff1bb4e345085fc008d4678 sh