Conexión remota a las instancias de flota de Amazon GameLift
Puede conectarse a cualquier instancia en las flotas activas de EC2 administradas por Amazon GameLift. Estas son algunas de las razones más habituales para acceder de forma remota a una instancia:
-
Solucionar problemas en la integración del servidor de juegos.
-
Afinar la configuración del tiempo de ejecución y otros ajustes específicos de la flota.
-
Obtener datos de actividad en tiempo real del servidor de juegos, como el seguimiento del registro.
-
Ejecutar herramientas de evaluación comparativa mediante el tráfico real de jugadores.
-
Investigar problemas específicos relacionados con una sesión de juego o un proceso del servidor.
Al conectarse a una instancia, tenga en cuenta los siguientes problemas potenciales:
-
Puede conectarse a cualquier instancia en una flota activa. Por lo general, no puede conectarse a flotas inactivas, como las que están en el proceso de activación o las que tienen un estado de error (es posible que estas flotas tengan una disponibilidad limitada durante un corto período de tiempo). Si necesita ayuda en relación con los problemas de activación de la flota, consulte Solución de problemas con la flota de Amazon GameLift.
-
La conexión a una instancia activa no afecta a la actividad de alojamiento de la instancia. La instancia sigue iniciando y deteniendo los procesos del servidor en función de la configuración del tiempo de ejecución. Activa y ejecuta sesiones de juego. Es posible que la instancia se cierre en respuesta a un evento de reducción vertical o de otro tipo.
-
Los cambios que haga en los archivos o la configuración de una instancia pueden afectar a las sesiones de juego activas de la instancia y a los jugadores conectados.
Las siguientes instrucciones describen cómo conectarse de forma remota a una instancia mediante la interfaz de la línea de comandos (CLI) de AWS. También puede hacer llamadas programáticas mediante el AWS SDK, tal y como se explica en la referencia de la API de servicio de Amazon GameLift.
Recopilación de datos de instancias
Para conectarse a una instancia de flota de EC2 administrada por Amazon GameLift, necesita la siguiente información:
-
El ID de la instancia a la que desea conectarse. Puede utilizar el ARN o el ID de la instancia.
-
La versión del SDK del servidor de Amazon GameLift que se utiliza en la instancia. El SDK del servidor está integrado con la compilación del juego que se ejecuta en la instancia.
Las siguientes instrucciones describen cómo completar estas tareas mediante la AWS CLI. Debe conocer el ID de la flota de la instancia a la que desea conectarse.
-
Obtenga el nombre del recurso de computación. Obtenga una lista de todos los recursos de computación activos en la flota. Llame a list-compute con el ARN o ID de una flota. Si se trata de una flota de una sola ubicación, especifique únicamente el identificador de la flota. Si es una flota con varias ubicaciones, especifique el identificador de la flota y una ubicación. En el caso de las flotas de EC2 administradas,
list-compute
devuelve una lista de instancias de flota y la propiedadComputeName
es el ID de la instancia. Busque el recurso de computación al que desea acceder.Solicitud
aws gamelift list-compute \ --fleet-id "fleet-2222bbbb-33cc-44dd-55ee-6666ffff77aa" \ --location ""sa-east-1"
Respuesta
{ "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" } ] }
-
Busque la versión del SDK del servidor. Para obtener esta información, debe buscar la compilación implementada en la flota. La versión del SDK del servidor es una propiedad de compilación.
-
Llame a describe-fleet-attributes con un ARN o ID de flota para obtener el ARN y el ID de compilación de la flota.
Llame a describe-build con el ARN o el ID de la compilación para obtener la versión del SDK del servidor de compilación.
Por ejemplo:
Solicitud
aws gamelift describe-fleet-attributes / --fleet-ids "fleet-2222bbbb-33cc-44dd-55ee-6666ffff77aa"
Respuesta
{ "FleetAttributes": [ { "FleetId": "fleet-2222bbbb-33cc-44dd-55ee-6666ffff77aa", "ComputeType": "EC2", "BuildId": "build-3333cccc-44dd-55ee-66ff-00001111aa22", . . . } ] }
Solicitud
aws gamelift describe-build / --build-id "build-3333cccc-44dd-55ee-66ff-00001111aa22"
Respuesta
"Build": { "BuildId": "build-1111aaaa-22bb-33cc-44dd-5555eeee66ff", "Name": "My_Game_Server_Build_One", "OperatingSystem": "AMAZON_LINUX_2023", "ServerSdkVersion": "5.1.1", . . . }
-
Conexión a una instancia (SDK 5 de servidor)
Si la instancia a la que quiere conectarse ejecuta una compilación de juego con la versión 5.x del SDK del servidor, conéctese a la instancia mediante Amazon EC2 Systems Manager (SSM). Puede acceder a las instancias remotas que se ejecuten en Windows o Linux.
Antes de comenzar:
Complete los pasos de configuración de SSM e instale el complemento de SSM en el equipo local. Para obtener más información, consulte Configuración de Session Manager e Instalación del complemento de Session Manager para la AWS CLI en la Guía del usuario de Amazon EC2 Systems Manager.
-
Solicite credenciales de acceso para la instancia. Llame a get-compute-access con el ID de la flota y el nombre del recurso de computación de la instancia a la que desea conectarse. Amazon GameLift devuelve un conjunto de credenciales temporales para acceder a la instancia. Por ejemplo:
Solicitud
aws gamelift get-compute-access \ --compute-name i-11111111a222b333c \ --fleet-id fleet-2222bbbb-33cc-44dd-55ee-6666ffff77aa --region us-west-2
Respuesta
{ "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 " }
-
Exporte las credenciales de acceso (opcional). Puede exportar las credenciales a variables de entorno y utilizarlas a fin de configurar la AWS CLI para el usuario predeterminado. Para obtener más información, consulte Environment variables to configure the AWS CLI en la Guía del usuario de la 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>
-
Conéctese a la instancia de la flota. Inicie una sesión de SSM con la instancia a la que desea conectarse. Incluya la región de AWS o la ubicación de la instancia. Para obtener más información, lo que incluye cómo configurar SSM y el complemento de SSM, consulte Inicio de una sesión (AWS CLI) en la Guía del usuario de Amazon EC2 Systems Manager.
La solicitud start-session utilizará automáticamente las credenciales que haya obtenido en el paso 1.
aws ssm start-session \ --target i-11111111a222b333c \ --region us-west-2 \
nota
Si recibe un error de acceso denegado, es posible que tenga una variable de entorno
AWS_PROFILE
configurada en un perfil de AWS, lo que provoca que la AWS CLI utilice credenciales incorrectas para el acceso remoto. Para resolver este problema, desactive temporalmente la variable de entornoAWS_PROFILE
. También puede crear un perfil de AWS personalizado para sus credenciales de acceso remoto y añadir el parámetro--profile
de la línea de comandos a la solicitudstart-session
.
Conexión a una instancia (SDK 4.x, o anterior, de servidor)
Si la instancia a la que quiere conectarse ejecuta una compilación de juego con la versión 4, o anterior, del SDK del servidor, observe las siguientes instrucciones. Puede conectarse a instancias que se ejecuten en Windows o Linux. Para conectarse a una instancia de Windows, utilice un cliente de protocolo de escritorio remoto (RDP). Para conectarse a una instancia de Linux, utilice un cliente SSH.
-
Solicite credenciales de acceso para la instancia. Cuando tenga un ID de instancia, use el comando get-instance-access para solicitar las credenciales de acceso. Si funciona correctamente, Amazon GameLift devuelve el sistema operativo, la dirección IP y un conjunto de credenciales (nombre de usuario y clave secreta) de la instancia. El formato de las credenciales depende del sistema operativo de la instancia. Siga las siguientes instrucciones para recuperar las credenciales para RDP o SSH.
-
Para instancias Windows: para conectarse a una instancia Windows, RDP requiere un nombre de usuario y una contraseña. La solicitud
get-instance-access
devuelve estos valores en forma de cadenas simples, por lo que puede utilizar los valores devueltos tal cual. Credenciales de ejemplo:"Credentials": { "Secret": "aA1bBB2cCCd3EEE", "UserName": "gl-user-remote" }
-
Para instancias Linux: para conectarse a una instancia Linux, SSH requiere un nombre de usuario y una clave privada. Amazon GameLift emite claves privadas RSA y las devuelve en forma de una única cadena, con el carácter de nueva línea (
\n
) marcando saltos de línea. Para poder usar la clave privada, (1) convierta la cadena en un archivo.pem
y (2) establezca los permisos para el nuevo archivo. Credenciales de ejemplo devueltas:"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" }
Si utiliza la AWS CLI, puede generar automáticamente un archivo
.pem
incluyendo los parámetros --query y --output en la solicitudget-instance-access
.Para establecer permisos en el nuevo archivo
.pem
, ejecute el siguiente comando:$ chmod 400 MyPrivateKey.pem
-
-
Abra un puerto para la conexión remota. Puede acceder a las instancias en flotas de Amazon GameLift mediante cualquier puerto autorizado en la configuración de la flota. Puede ver la configuración de los puertos de la flota mediante el comando
describe-fleet-port-settings
.Recomendamos abrir los puertos para el acceso remoto solo cuando se necesiten y cerrarlos cuando haya terminado. No puede actualizar la configuración de los puertos después de crear una flota y antes de que esté activa. Si no puede continuar, vuelva a crear la flota con la configuración de puertos abierta.
Utilice el comando
update-fleet-port-settings
para añadir una configuración de puerto para la conexión remota (como22
para SSH o3389
para RDP). Para el valor del rango de IP, especifique las direcciones IP de los dispositivos que desea utilizar para conectarse (convertidos al formato CIDR). Ejemplo:$ 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"
En el siguiente ejemplo se abre el puerto 3389 en una flota de 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"
-
Abra un cliente de conexión remoto. Utilice el escritorio remoto para Windows o SSH para instancias Linux. Conéctese a la instancia a través de la dirección IP, la configuración del puerto y las credenciales de acceso.
Ejemplo de SSH:
ssh -i MyPrivateKey.pem gl-user-remote@192.0.2.0
Visualización de archivos en instancias remotas
Al conectarse a una instancia de forma remota, dispone de acceso administrativo y de usuario pleno. Esto significa que también tendrá la capacidad de provocar errores y fallos al alojar juegos. Si la instancia aloja juegos con jugadores activos, existe el riesgo de que bloquee sesiones de juego y desconecte a jugadores, así como de interrumpir los procesos de cierre de juegos y de provocar errores en los datos y los registros de juego guardados.
Busque los siguientes recursos en una instancia de alojamiento:
-
Archivos de compilación de juegos. Estos archivos son la compilación del juego que ha cargado en Amazon GameLift. Incluyen uno o más ejecutables, activos y dependencias del servidor de juegos. Los archivos de la compilación del juego se encuentran en un directorio raíz llamado
game
:-
En Windows:
c:\game
-
En Linux:
/local/game
-
-
Archivos de log de juegos. Busque los archivos de registro generados por el servidor de juegos en el directorio raíz
game
, en la ruta de directorio que haya especificado. -
Recursos de alojamiento de Amazon GameLift. El directorio raíz
Whitewater
contiene archivos usados por el servicio de Amazon GameLift para administrar la actividad de alojamiento de juegos. No modifique estos archivos bajo ningún concepto. -
Configuración de tiempos de ejecución. No acceda a la configuración de tiempo de ejecución para instancias individuales. Para introducir cambios en una propiedad de configuración de tiempo de ejecución, actualice la configuración de tiempo de ejecución de la flota (consulte la operación UpdateRuntimeConfiguration del AWS SDK o la update-runtime-configuration de la AWS CLI).
-
Datos de la flota. Un archivo JSON contiene información sobre la flota a la que pertenece la instancia, para que la usen los procesos del servidor que se ejecutan en la instancia. El archivo JSON se almacena en la siguiente ubicación:
-
En Windows:
C:\GameMetadata\gamelift-metadata.json
-
En Linux:
/local/gamemetadata/gamelift-metadata.json
-
-
Certificados TLS. Si la instancia está en una flota que tiene habilitada la generación de certificados TLS, busque los archivos de certificados, como el certificado, la cadena de certificados, la clave privada y el certificado raíz, en la siguiente ubicación:
-
En Windows:
c:\\GameMetadata\Certificates
-
En Linux:
/local/gamemetadata/certificates/
-