Conectar-se remotamente às instâncias da frota do Amazon GameLift Servers - Amazon GameLift Servers

Conectar-se remotamente às instâncias da frota do Amazon GameLift Servers

É possível se conectar a qualquer instância nas frotas EC2 gerenciadas ou de contêineres e ativas do Amazon GameLift Servers. Motivos comuns para acessar remotamente uma instância incluem:

  • Solucionar os problemas com a integração do servidor de jogos.

  • Ajustar a configuração de tempo de execução e outras configurações específicas da frota.

  • Obter atividade em tempo real do servidor de jogos, como monitoramento de logs.

  • Executar ferramentas de benchmarking usando o tráfego real de jogadores.

  • Investigar problemas específicos com uma sessão de jogo ou processo do servidor de jogos.

Ao se conectar a uma instância, considere estes possíveis problemas:

  • É possível se conectar a qualquer instância em uma frota ativa. Geralmente, não é possível se conectar a frotas não ativas, como frotas que estão em processo de ativação ou em estado de erro. (Essas frotas podem ter disponibilidade limitada por um curto período.) Para obter ajuda com problemas de ativação da frota, consulte Depurar problemas de frota do Amazon GameLift Servers.

  • A conexão com uma instância ativa não afeta a atividade de hospedagem da instância. A instância continua a iniciar e interromper os processos do servidor com base na configuração do tempo de execução. Ela ativa e executa sessões de jogo. A instância pode ser encerrada em resposta a um evento de redução de escala vertical ou outro evento.

  • Qualquer alteração que você fizer em arquivos ou configurações na instância podem impactar as sessões de jogo ativas e os jogadores conectados.

Acesso remoto pelo console

É possível se conectar às instâncias de frotas diretamente do console do Amazon GameLift Servers usando o Amazon EC2 Systems Manager (SSM). Esse método fornece acesso seguro sem exigir configuração adicional ou gerenciamento de credenciais.

  1. No console do Amazon GameLift Servers, escolha EC2 gerenciado ou Contêineres gerenciados no painel de navegação e, em seguida, Frotas.

  2. Escolha o ID da frota que contém a instância que deseja acessar.

  3. Na página de detalhes da frota, escolha a guia Instâncias para ver todas as instâncias de computação da frota.

  4. Selecione a instância com a qual deseja se conectar e escolha Conectar. Isso exibe a caixa de diálogo Conectar à instância, que informa sobre os detalhes da conexão e permite que você visualize o script que será usado para se conectar à sua instância. Confirme escolhendo Conectar novamente.

  5. Na caixa de diálogo de conexão, escolha Executar para criar uma nova sessão SSM. O sistema autentica sua sessão por meio do AWS Key Management Service (AWS KMS) e abre um terminal no seu navegador.

nota

O acesso remoto baseado em console está disponível para frotas que executam o SDK versão 5.x do servidor. Para frotas que executam versões anteriores do SDK, use o método da AWS CLI descrito na seção a seguir.

Acesso remoto com a AWS CLI

As instruções a seguir descrevem como se conectar remotamente a uma instância usando a interface de linha de comandos (CLI) da AWS. Você também pode fazer chamadas programáticas usando o AWS SDK, conforme documentado na referência da API do serviço do Amazon GameLift Servers.

Coletar dados da instância

Para se conectar a uma instância de frota EC2 gerenciada do Amazon GameLift Servers, você precisa das seguintes informações:

  • O ID da instância à qual você deseja se conectar. É possível utilizar o ID ou o ARN da instância.

  • o SDK do servidor para a versão do Amazon GameLift Servers que está sendo usada na instância. O SDK do servidor é integrado à compilação do jogo que está sendo executada na instância.

As instruções a seguir descrevem como concluir essas tarefas usando a CLI da AWS. É necessário saber o ID da frota da instância à qual você deseja se conectar.

  1. Obtenha o nome da computação. Obtenha uma lista de todas os recursos de computação ativos na frota. Chame list-compute com um ID ou ARN de frota. Para uma frota de localização única, especifique somente o identificador da frota. Para uma frota com vários locais, especifique o identificador da frota e um local. Com frotas EC2 gerenciadas, list-compute retorna uma lista de instâncias da frota, e a propriedade ComputeName é o ID da instância. Localize o recurso de computação que deseja acessar.

    Solicitação

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

    Resposta

    { "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. Localize a versão do SDK do servidor. Para obter essas informações, é necessário consultar a compilação que está implantada na frota. A versão do SDK do servidor é uma propriedade de compilação.

    1. Chame describe-fleet-attributes com um ID ou ARN de frota para obter o ID e o ARN de compilação da frota.

    2. Chame describe-build com o ID ou ARN de compilação para obter a versão do SDK do servidor de compilação.

      Por exemplo:

      Solicitação

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

    Resposta

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

    Solicitação

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

    Resposta

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

Conectar-se a uma instância (SDK 5 do servidor)

Se a instância à qual você deseja se conectar estiver executando uma compilação de jogo com o SDK versão 5.x do servidor, conecte-se à instância usando o Amazon EC2 Systems Manager (SSM). Você pode acessar instâncias remotas que estejam executando o Windows ou o Linux.

Antes de começar:

Conclua as etapas de configuração do SSM e instale o plug-in do SSM em sua máquina local. Para obter mais informações, consulte Configurar o SSM e Instalar o plug-in do Session Manager para a CLI da AWS no Guia de usuário do Amazon EC2 Systems Manager.

  1. Solicite credenciais de acesso para a instância. Chame get-compute-access com o ID da frota e o nome da computação da instância à qual você quer se conectar. O Amazon GameLift Servers retorna um conjunto de credenciais temporárias para acessar a instância. Por exemplo:

    Solicitação

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

    Resposta

    { "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. Exporte as credenciais de acesso (opcional). Você pode exportar as credenciais para variáveis de ambiente e usá-las para configurar a CLI da AWS para o usuário padrão. Para obter mais detalhes, consulte Variáveis de ambiente para configurar a CLI da AWS no Guia do usuário da 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. Conecte-se à instância da frota. Inicie uma sessão de SSM com a instância à qual você deseja se conectar. Inclua a região da AWS ou o local da instância. Para obter mais informações, incluindo como configurar o SSM e o plug-in SSM, consulte Iniciar uma sessão (CLI da AWS) no Guia do usuário do Amazon EC2 Systems Manager.

    A solicitação de início de sessão usará automaticamente as credenciais que você adquiriu na Etapa 1.

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

    Se você receber um erro de acesso negado, talvez tenha uma variável de ambiente AWS_PROFILE configurada para um perfil AWS, o que faz com que a CLI da AWS use as credenciais incorretas para acesso remoto. Para resolver, cancele temporariamente a variável de ambiente AWS_PROFILE. Como alternativa, você pode criar um perfil AWS personalizado para as credenciais de acesso remoto e adicionar o parâmetro da linha de comando --profile à sua solicitação start-session.

Conectar-se a uma instância (SDK 4.x ou anterior do servidor)

Se a instância à qual você deseja se conectar estiver executando uma compilação de jogo com o SDK versão 4 ou anterior do servidor, use as instruções a seguir. Você pode se conectar a instâncias que estejam executando o Windows ou o Linux. Conecte-se a uma instância do Windows usando um cliente de protocolo de área de trabalho remota (RDP). Conecte-se a uma instância do Linux usando um cliente SSH.

  1. Solicite credenciais de acesso para a instância. Quando tiver um ID de instância, use o comando get-instance-access para solicitar credenciais de acesso. Se bem-sucedido, o Amazon GameLift Servers retornará o sistema operacional da instância, o endereço IP e um conjunto de credenciais (nome de usuário e chave secreta). O formato de credenciais depende do sistema operacional da instância. Use as instruções a seguir para recuperar credenciais de RDP ou SSH.

    • Para instâncias do Windows – Para se conectar a uma instância do Windows, o RDP requer um nome de usuário e uma senha. A solicitação get-instance-access retorna esses valores como strings simples, de maneira que você possa usar os valores retornados como estão. Exemplo de credenciais:

      "Credentials": { "Secret": "aA1bBB2cCCd3EEE", "UserName": "gl-user-remote" }
    • Para instâncias do Linux – para se conectar a uma instância do Linux, o SSH requer um nome de usuário e uma chave privada. O emite chaves privadas RSA e as retorna como uma única string, com o caractere de nova linha () indicando quebras de linha. Para tornar a chave privada utilizável, siga estas etapas: (1) converter a string em um arquivo .pem e (2) definir permissões para o novo arquivo. Exemplo de credenciais retornadas:

      "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" }

      Ao usar a CLI da AWS, é possível gerar automaticamente um arquivo .pem, incluindo os parâmetros --query e --output à sua solicitação get-instance-access.

      Para definir permissões no arquivo .pem, execute o comando a seguir:

      $ chmod 400 MyPrivateKey.pem
  2. Abra uma porta para a conexão remota. É possível acessar instâncias em frotas do Amazon GameLift Servers por meio de qualquer porta autorizada na configuração da frota. Você pode visualizar as configurações de porta da frota usando o comando describe-fleet-port-settings.

    Como melhor prática, recomendamos só abrir portas para acesso remoto quando você precisar delas e fechá-las quando terminar. Não é possível atualizar as configurações da porta depois de criar uma frota e antes que ela esteja ativa. Se ocorrer algum problema, recrie a frota com as portas configuradas como abertas.

    Use o comando update-fleet-port-settings para adicionar uma configuração de porta para a conexão remota (como 22 para SSH ou 3389 para RDP). Para o valor do intervalo de IPs, especifique os endereços IP dos dispositivos que você pretende usar para se conectar (convertidos em formato CIDR). Exemplo:

    $ 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"

    O exemplo a seguir abre a porta 3389 em uma frota do Windows

    $ 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. Abra um cliente de conexão remota. Use Área de Trabalho Remota para Windows ou SSH para instâncias do Linux. Conecte-se à instância usando o endereço IP, a configuração de porta e as credenciais de acesso.

    Exemplo de SSH:

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

Visualizar arquivos em instâncias remotas

Independentemente de você ter se conectado a uma instância remotamente por meio do console ou da AWS CLI, você tem acesso total de usuário e administrativo a ela. Isso significa que você também pode causar erros ou falhas na hospedagem de jogos. Se a instância estiver hospedando jogos com jogadores ativos, pode haver o risco de encerrar as sessões de jogo e desconectar jogadores ou interromper processos de desligamento de jogos, o que pode causar erros em dados e logs de jogos salvos.

Procure esses recursos em uma instância de hospedagem:

  • Arquivos de compilação do jogo. Estes arquivos constituem a compilação do jogo que você enviou para o Amazon GameLift Servers. Entre eles estão um ou mais executáveis, ativos e dependências do servidor de jogos. Os arquivos de compilação do jogo estão em um diretório raiz chamado game:

    • No Windows: c:\game

    • No Linux: /local/game

  • Arquivos de log do jogo. Os arquivos de log que o servidor de jogo gera ficam no diretório raiz game, no caminho de diretório designado para logs.

  • Amazon GameLift Servers Recursos de hospedagem do. O diretório raiz Whitewater contém arquivos usados pelo serviço do Amazon GameLift Servers para gerenciar a atividade de hospedagem de jogos. Não modifique esses arquivos por nenhum motivo.

  • Configuração de runtime. Não acesse configurações de tempo de execução para instâncias individuais. Para fazer alterações em uma propriedade de configuração de tempo de execução, atualize a configuração de tempo de execução da frota (consulte a operação UpdateRuntimeConfiguration do SDK da AWS ou o comando update-runtime-configuration da AWS CLI).

  • Dados da frota. Um arquivo JSON contém informações sobre a frota à qual a instância pertence, para uso pelos processos do servidor em execução na instância. O arquivo JSON está no seguinte local:

    • No Windows: C:\GameMetadata\gamelift-metadata.json

    • No Linux: /local/gamemetadata/gamelift-metadata.json

  • Certificados TLS. Se a instância estiver em uma frota com geração de certificado TLS habilitada, você encontrará os arquivos de certificado, incluindo o certificado, a cadeia de certificados, a chave privada e o certificado raiz no seguinte local:

    • No Windows: c:\\GameMetadata\Certificates

    • No Linux: /local/gamemetadata/certificates/