View a markdown version of this page

Shell de administración de sesiones de streaming - Amazon GameLift Streams

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Shell de administración de sesiones de streaming

Usa la CreateStreamSessionAdminShellAPI para conectarte al entorno de tiempo de ejecución en directo de tu sesión de transmisión. Usa la conexión de terminal para solucionar los problemas de las aplicaciones inspeccionando los registros, comprobando los procesos en ejecución, examinando el uso de la GPU y depurando el estado de la aplicación en tiempo real.

importante

El shell de administración otorga el mismo nivel de acceso que las aplicaciones que se ejecutan en la sesión de transmisión, lo que puede incluir entradas del usuario, imágenes de pantalla y archivos de datos de la aplicación. Conceda gameliftstreams:CreateStreamSessionAdminShell permisos únicamente a identidades de IAM de confianza.

Requisitos previos

Antes de conectarse a una sesión de streaming con el shell de administración, instale el complemento AWS Systems Manager Session Manager para AWS Command Line Interface. El complemento es necesario para abrir las conexiones de los terminales. Para obtener instrucciones de instalación, consulte Instalación del complemento Session Manager para AWS Command Line Interface.

El siguiente ejemplo de código requiere que jq, un procesador JSON de línea de comandos, extraiga valores de la respuesta de la API.

La sesión de transmisión debe estar en uno de los siguientes estados:ACTIVE,, CONNECTED o. PENDING_CLIENT_RECONNECTION RECONNECTING

Conéctese mediante el complemento Session Manager para AWS Command Line Interface

AWS CLI Utilícelo para solicitar las credenciales de acceso del shell de administración y, a continuación, utilice el complemento Session Manager AWS Command Line Interface para establecer la conexión del terminal. Usa el siguiente ejemplo de código para conectarte. Sustituya STREAM_GROUP_IDSTREAM_SESSION_ID, y REGION por sus valores.

AWS Command Line Interface con el script Bash

#!/bin/bash # GameLift Streams session with admin shell script # This script sets up a terminal connection to an Amazon GameLift Streams session # using the AWS Systems Manager Session Manager Plugin # Stream group ARN or ID owning the session STREAM_GROUP_ID="arn:aws:gameliftstreams:us-west-2:123456789012:streamgroup/sg-1AB2C3De4" # Stream session ARN or ID to connect to STREAM_SESSION_ID="arn:aws:gameliftstreams:us-west-2:123456789012:streamsession/sg-1AB2C3De4/44wOYoDXlRbtf" # AWS Region where you created the stream group (primary location) REGION="us-west-2" # Request admin shell access SESSION_ACCESS=$(aws gameliftstreams create-stream-session-admin-shell \ --identifier "${STREAM_GROUP_ID}" \ --stream-session-identifier "${STREAM_SESSION_ID}" \ --region "${REGION}" \ --output json) # Extract session ID and connect using Session Manager plugin SESSION_ID=$(echo "$SESSION_ACCESS" | jq -r .SessionId) # Connect using the API response (the plugin extracts StreamUrl and TokenValue) # The connection URL expires 60 seconds after the API response. session-manager-plugin \ "$SESSION_ACCESS" \ "${REGION}" \ "StartSession" \ "" \ "{\"Target\":\"$SESSION_ID\"}" \ "https://ssm.${REGION}.api.aws"
sugerencia

Para encontrar las sesiones de transmisión activas de un grupo de transmisiones, utilice la operación de ListStreamSessionsAPI o consulte la consola de Amazon GameLift Streams.

Si tiene problemas para establecer una conexión de terminal, consulte Problemas con el shell de administración de la sesión de streaming las soluciones a los errores más comunes.

Problemas con el shell de administración de la sesión de streaming

En esta sección, se identifican las posibles causas y soluciones de los problemas relacionados con el uso de la CreateStreamSessionAdminShellAPI para abrir una conexión de terminal segura en el entorno de tiempo de ejecución en directo de la sesión de streaming.

La conexión de terminal aún no está disponible

Si llama CreateStreamSessionAdminShell y recibe un StreamSessionAccessNotReadyException (HTTP 409), aún no se puede aprovisionar la conexión de terminal al entorno de ejecución en vivo de su sesión de Amazon GameLift Streams.

Para resolver este problema, siga estos pasos:

  • Espere unos segundos y vuelva a intentar la solicitud. La conexión del terminal suele estar disponible poco después de que la sesión de transmisión entre en ACTIVE estado.

  • Si el error persiste tras varios intentos, compruebe que la sesión de transmisión sigue en uno de los siguientes estados:ACTIVE,CONNECTED,PENDING_CLIENT_RECONNECTION, o RECONNECTING llamando GetStreamSession.

Acceso denegado al crear un shell de administración

Si llamas CreateStreamSessionAdminShell y recibes un error AccessDeniedException (HTTP 403), la identidad de IAM que realiza la llamada no tiene los permisos necesarios. Para resolver este problema, compruebe que la identidad de IAM tenga el gameliftstreams:CreateStreamSessionAdminShell permiso para el recurso del grupo de flujo de destino.

No se puede conectar a una sesión de streaming que no esté activa

Si llamas CreateStreamSessionAdminShell y recibes un error ResourceNotFoundException (HTTP 404) o ValidationException (HTTP 400), comprueba que el grupo de transmisiones que aloja la sesión de transmisión esté en ACTIVE estado y que la sesión de transmisión se encuentre en uno de los siguientes estados: ACTIVECONNECTED,PENDING_CLIENT_RECONNECTION, oRECONNECTING.

Para resolver este problema, siga estos pasos:

  • Comprueba el estado del grupo de transmisiones mediante una llamada GetStreamGroup.

  • Verifique el estado de la sesión de transmisión mediante una llamada GetStreamSession.

  • Si la sesión se inició recientemente, espere hasta que el estado de la sesión cambie ACTIVE antes de solicitar una conexión de terminal.

StreamUrl ha caducado

Si se conecta al WebSocket punto final devuelto por CreateStreamSessionAdminShell y recibe un error de conexión, este StreamUrl ha caducado. Es válido durante 60 segundos después de recibirlo. Si no establece la conexión dentro de ese tiempo, la URL caducará.

Para resolver este problema, siga estos pasos:

  • CreateStreamSessionAdminShellVuelva a llamar para obtener una nueva StreamUrlSessionId, yTokenValue.

  • Establezca la conexión dentro de los 60 segundos posteriores a la recepción de la respuesta.

El complemento Session Manager no está instalado

Si intenta conectarse con las credenciales devueltas por CreateStreamSessionAdminShell y la conexión falla y aparece un mensaje que indica que falta el complemento Session Manager, debe instalar el complemento AWS Systems Manager Session Manager para la AWS CLI.

Para resolver este problema, siga estos pasos:

  • Instale el complemento Session Manager para la AWS CLI. Para obtener instrucciones de instalación, consulte Instalación del complemento Session Manager para la AWS CLI en la Guía del usuario de AWS Systems Manager.

  • Compruebe que el complemento esté instalado session-manager-plugin ejecutándolo desde su terminal.

El shell de administración se cierra inesperadamente

Si la conexión del terminal se desconecta bruscamente durante el uso, es posible que se haya cerrado por alguna de las siguientes razones:

  • La conexión del terminal se limita al ciclo de vida de la sesión de transmisión y finaliza cuando la sesión de transmisión pasa a un TERMINATED estado o. ERROR

  • La conexión del terminal ha superado su duración máxima de 30 minutos.

  • La conexión del terminal ha superado el tiempo de espera de inactividad de 15 minutos.

Para resolver este problema, siga estos pasos:

  • Comprueba que la sesión de transmisión no esté en ERROR estado TERMINATED o llamando GetStreamSession.

  • Si se agotó el tiempo de espera de la conexión del terminal debido a la inactividad o a la duración máxima, CreateStreamSessionAdminShell vuelva a llamar para abrir una nueva conexión de terminal.

  • Si la sesión de transmisión ha finalizado, inicie una nueva sesión de transmisión para abrir una nueva conexión de terminal.