View a markdown version of this page

Connect ai container - Amazon GameLift Servers

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Connect ai container

Per le flotte di Amazon GameLift Servers container, puoi accedere ai container dei server di gioco in esecuzione su un'istanza della flotta. Usa l'accesso ai container per risolvere i problemi delle sessioni di gioco, controllare i log ed eseguire il debug dei problemi di runtime.

Connect a un container

Prima di iniziare:

Connect all'istanza fleet. Per istruzioni, consulta Connect a flotte di istanze.

Esegui il comando seguente per elencare i contenitori in esecuzione sull'istanza:

sudo docker ps

L'output elenca tutti i contenitori in esecuzione sull'istanza, inclusi i contenitori del server di gioco e Amazon GameLift Servers i contenitori interni. Cerca contenitori con l'immagine del tuo server di gioco per identificare i contenitori del server di gioco.

Output di esempio:

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

Per connetterti a un contenitore del server di gioco, usa l'ID breve del contenitore nella CONTAINER ID colonna. Questo ti dà l'accesso completo in lettura e scrittura al filesystem del contenitore.

sudo docker exec -it container-short-id sh

Connect a un container tramite la console

Puoi connetterti ai contenitori dei server di gioco dalla Amazon GameLift Servers console utilizzando Amazon EC2 Systems Manager (SSM). Questo metodo fornisce un accesso sicuro senza richiedere configurazioni o gestione delle credenziali aggiuntive. Puoi connetterti a un container dalla scheda Computer o dalla scheda Sessioni di gioco nella pagina dei dettagli della flotta.

  1. Nella Amazon GameLift Servers console, scegli Contenitori gestiti dal pannello di navigazione, quindi Fleets.

  2. Scegli l'ID della flotta che contiene il container o la sessione di gioco a cui desideri accedere.

  3. Nella pagina dei dettagli della flotta, scegli una delle seguenti schede:

    • Calcola: elenca i container in circolazione nella flotta. Seleziona il contenitore a cui desideri connetterti.

    • Sessioni di gioco: elenca le sessioni di gioco per la flotta. Seleziona la sessione di gioco per connetterti al contenitore che la ospita.

  4. Scegli Connetti. Copia il comando visualizzato per connetterti al contenitore, quindi scegli nuovamente Connetti.

  5. Nella finestra di dialogo di connessione, scegli Esegui per creare una nuova sessione SSM. Il sistema autentica la sessione tramite AWS Key Management Service (AWS KMS) e apre un terminale nel browser.

  6. Dopo esserti connesso all'istanza, incolla il comando docker dal passaggio 4 ed eseguilo sull'istanza per accedere al contenitore.

Connect al container che ospita una sessione di gioco

Per connetterti al contenitore del server di gioco che ospita una sessione di gioco specifica, segui questi passaggi.

  1. Ottieni il nome del computer. Chiama describe-game-sessionsper ricevere il programma ComputeName per la sessione di gioco.

    Richiesta

    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

    Risposta

    { "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", . . . } ] }

    Annota il ComputeName valore della risposta (ad esempio,62c5ff7f7a9a445d84877074c80aeafc).

  2. Ottieni l'accesso al calcolo e gli attributi del contenitore. Chiama get-compute-accesscon l'ID della flotta e il nome del calcolo.

    La risposta include i seguenti campi:

    • ContainerIdentifiers— La ContainerName e ContainerRuntimeId per ogni contenitore.

    • GameServerContainerGroupDefinitionArn— L'ARN della definizione del gruppo di contenitori.

    • Credentials— Credenziali temporanee per connettersi all'istanza.

    Richiesta

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

    Risposta

    { "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. Collegati all'istanza. Utilizza le credenziali del passaggio 2 per connetterti all'istanza della flotta. Per istruzioni dettagliate, vedi Connect a flotte di istanze.

  4. Trova il nome del contenitore del server di gioco. Chiama describe-container-group-definitionutilizzando il GameServerContainerGroupDefinitionArn passaggio 2 per identificare il nome del contenitore del server di gioco.

    Richiesta

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

    Risposta

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

    Nota il GameServerContainerDefinition.ContainerName valore (ad esempio,game-server).

  5. Identifica l'ID di runtime del contenitore del server di gioco. Utilizzando il nome del contenitore del server di gioco del passaggio precedente, trova la ContainerIdentifiers voce corrispondente nella get-compute-access risposta del passaggio 2. Annotare il valore ContainerRuntimeId.

  6. Connect al container. Usa ContainerRuntimeId come ID del contenitore ed esegui il seguente comando:

    sudo docker exec -it 02accb92cd9bef3373300e7151d5c2b3dcca3b06eff1bb4e345085fc008d4678 sh

Visualizza le mappature delle porte del contenitore

Le mappature delle porte mostrano come le porte dei container vengono mappate alle porte di connessione delle istanze della flotta. A ogni porta container che accetta traffico in entrata viene assegnata una porta di connessione sull'istanza. Puoi controllare le mappature delle porte per scoprire quali porte di connessione sono mappate alle porte del container o per risolvere i problemi di connessione. Puoi visualizzare le mappature delle porte nella Amazon GameLift Servers console o utilizzare l'SDK o. AWS CLI AWS

Visualizza le mappature delle porte nella console

Nella Amazon GameLift Servers console, scegli Contenitori gestiti dal pannello di navigazione, quindi Flotte. Scegli una flotta per aprire la pagina dei dettagli della flotta. Puoi visualizzare le mappature dei porti nelle seguenti posizioni:

  • Pagina dei dettagli dell'istanza: mostra le mappature delle porte per il gruppo di contenitori per istanza sull'istanza selezionata.

  • Pagina dei dettagli di calcolo: mostra le mappature delle porte per il gruppo di contenitori del server di gioco sul computer selezionato.

Entrambe le pagine includono un campo di ricerca per filtrare le mappature delle porte in base al nome del contenitore.

Visualizza le mappature delle porte con il AWS CLI

Utilizzate il describe-container-group-port-mappings comando per recuperare le mappature delle porte per un gruppo di container su un'istanza della flotta. Specificate il tipo di gruppo di contenitori e un --compute-name (per i gruppi di server di gioco) o un --instance-id (per i gruppi di istanze). Facoltativamente, includi il --container-name parametro per filtrare i risultati in un contenitore specifico.

Esempio: gruppo di contenitori del server di gioco

Il comando seguente recupera le mappature delle porte per il gruppo di contenitori del server di gioco su un computer specifico.

aws gamelift describe-container-group-port-mappings \ --fleet-id fleet-2222bbbb-33cc-44dd-55ee-6666ffff77aa \ --container-group-type GAME_SERVER \ --compute-name 62c5ff7f7a9a445d84877074c80aeafc

In caso di successo, Amazon GameLift Servers restituisce una risposta come la seguente:

{ "FleetId": "fleet-2222bbbb-33cc-44dd-55ee-6666ffff77aa", "Location": "us-west-2", "ContainerGroupDefinitionArn": "arn:aws:gamelift:us-west-2:123456789012:containergroupdefinition/MyGameServerGroup", "ContainerGroupType": "GAME_SERVER", "ComputeName": "62c5ff7f7a9a445d84877074c80aeafc", "InstanceId": "i-1234567890abcdef0", "ContainerGroupPortMappings": [ { "ContainerName": "MyGameServer", "ContainerRuntimeId": "a1b2c3d4e5f6", "ContainerPortMappings": [ { "ContainerPort": 7777, "ConnectionPort": 1025, "Protocol": "UDP" }, { "ContainerPort": 8080, "ConnectionPort": 1026, "Protocol": "TCP" } ] } ] }

Esempio: gruppo di contenitori per istanza

Il comando seguente recupera le mappature delle porte per il gruppo di contenitori per istanza su un'istanza specifica.

aws gamelift describe-container-group-port-mappings \ --fleet-id fleet-2222bbbb-33cc-44dd-55ee-6666ffff77aa \ --container-group-type PER_INSTANCE \ --instance-id i-1234567890abcdef0

In caso di successo, Amazon GameLift Servers restituisce una risposta simile alla seguente:

{ "FleetId": "fleet-2222bbbb-33cc-44dd-55ee-6666ffff77aa", "Location": "us-west-2", "ContainerGroupDefinitionArn": "arn:aws:gamelift:us-west-2:123456789012:containergroupdefinition/MyPerInstanceGroup", "ContainerGroupType": "PER_INSTANCE", "InstanceId": "i-1234567890abcdef0", "ContainerGroupPortMappings": [ { "ContainerName": "MySupportContainer", "ContainerRuntimeId": "f6e5d4c3b2a1", "ContainerPortMappings": [ { "ContainerPort": 8443, "ConnectionPort": 2025, "Protocol": "TCP" } ] } ] }