Tutorial detallado: conozca los detalles mientras crea la aplicación de muestra - AWS SimSpace Weaver

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.

Tutorial detallado: conozca los detalles mientras crea la aplicación de muestra

El tutorial de inicio rápido explicaba cómo crear, iniciar, detener y eliminar un ejemplo de simulación mediante quick-start.py ystop-and-delete.py. Este tutorial explicará en detalle cómo funcionan estos scripts y los parámetros adicionales que estos scripts pueden adoptar para maximizar la flexibilidad de las simulaciones personalizadas de Weaver.

Requisitos

Antes de comenzar, asegúrese de que ha realizado los pasos que se detallan en Configuración de SimSpace Weaver.

Paso 1: Habilitar el registro (opcional)

Para activar el registro
  1. Navegue hasta:

    sdk-folder/Samples/PathfindingSample/tools
  2. Abra el archivo de esquema en un editor de texto:

    pathfinding-single-worker-schema.yaml
  3. Busque la sección simulation_properties: al principio del archivo:

    simulation_properties: default_entity_index_key_type: "Vector3<f32>"
  4. Inserte las dos líneas siguientes después de la línea simulation_properties::

    log_destination_service: "logs" log_destination_resource_name: "MySimulationLogs"
  5. Confirme que su sección simulation_properties: es como sigue:

    simulation_properties: log_destination_service: "logs" log_destination_resource_name: "MySimulationLogs" default_entity_index_key_type: "Vector3<f32>"
  6. Guarde el archivo y salga del editor de texto.

Paso 2: Inicie la simulación

Como se muestra en el tutorial de inicio rápido, los pasos más básicos para lanzar un ejemplo de simulación son:

  1. Navegue hasta:

    sdk-folder/Samples/PathfindingSample/tools/cloud
  2. Ejecute uno de los siguientes comandos:

    • Docker: python quick-start.py

    • WSL: python quick-start.py --al2

Este script automatiza los comandos de terminal más comunes, todos los cuales se pueden ejecutar manualmente mediante el. AWS CLI Estos pasos son:

  1. Cargue el esquema de Weaver en S3.

    • SimSpace Weaver utiliza un esquema para configurar la simulación. El esquema es un archivo de texto plano con formato YAML. Para obtener más información, consulte Configuración de su simulación.

  2. Crea y carga un contenedor personalizado (opcional).

    • Si su esquema define un contenedor personalizado, el script de inicio rápido compilará la imagen del docker y la cargará en Amazon ECR. Para obtener más información, consulte Contenedores personalizados. Consulte el PythonBubblesSample esquema para ver un ejemplo de esta función.

  3. Compilar el proyecto.

    • quick-start.pyllama a la build_project función definida enbuild.py. Este paso variará en función del proyecto. Para ello PathfindingSample, se utiliza CMake. Los comandos CMake y Docker se encuentran en. build.py

  4. Sube los artefactos de construcción a S3.

    • Puedes comprobar tus depósitos de S3 para asegurarte de que todas las cargas se han realizado correctamente. Para obtener más información sobre cómo usar Amazon S3, consulte Creación, configuración y trabajo con buckets de Amazon S3 en la Guía del usuario de la consola de Amazon Simple Storage Service.

    • Los archivos zip de la aplicación de muestra y el bucket de S3 utilizan el siguiente formato de nombre:

      • weaver-sample-bucket-account-number-region

      • Aplicación espacial: ProjectNameSpatial.zip

      • Ver aplicación (personalizada): ProjectNameView.zip

  5. Inicie la simulación.

    • Esto es un resumen de la aws simspaceweaver start-simulation AWS CLI llamada. Para obtener más información, consulte la Referencia de AWS CLI comandos de SimSpace Weaver.

    • El script se repetirá hasta que el estado de la simulación sea STARTED o FAILED. Puede que transcurran unos minutos hasta que la simulación se inicie.

  6. Obtenga los detalles de la simulación.

    • La API de DescribeSimulation proporciona detalles sobre la simulación, incluido su estado. Una simulación puede tener uno de los siguientes estados:

      Estados del ciclo de vida de la simulación
      1. STARTING: estado inicial después de llamar a StartSimulation

      2. STARTED: todas las aplicaciones espaciales están iniciadas y en buen estado

      3. STOPPING: estado inicial después de llamar a StopSimulation

      4. STOPPED: todos los recursos de cómputo están detenidos

      5. DELETING: estado inicial después de llamar a DeleteSimulation

      6. DELETED: se eliminan todos los recursos asignados a la simulación

      7. FAILED: la simulación ha experimentado un error o fallo crítico y se ha detenido

      8. SNAPSHOT_IN_PROGRESS: hay una instantánea en curso

      Para obtener los detalles de la simulación
      1. Llame a la API de ListSimulations.

        aws simspaceweaver list-simulations

        El script debe mostrar detalles sobre cada una de sus simulaciones, como se muestra a continuación:

        {
            "Status": "STARTED",
            "CreationTime": 1664921418.09,
            "Name": "MyProjectSimulation_22-10-04_22_10_15",
            "Arn": "arn:aws:simspaceweaver:us-west-2:111122223333:simulation/MyProjectSimulation_22-10-04_22_10_15",
            "TargetStatus": "STARTED"
        }
        
      2. Llame a DescribeSimulation para obtener los detalles de su simulación. Reemplace simulation-name con el Name de su simulación del resultado del paso anterior.

        aws simspaceweaver describe-simulation --simulation simulation-name

        El script debe mostrar más detalles sobre la simulación que ha especificado, como se muestra a continuación:

        {
            "Status": "STARTED",
            "CreationTime": 1664921418.09,
            "Name": "MyProjectSimulation_22-10-04_22_10_15",
            "Arn": "arn:aws:simspaceweaver:us-west-2:111122223333:simulation/MyProjectSimulation_22-10-04_22_10_15",
            "TargetStatus": "STARTED"
        }
        
  7. Inicie aplicaciones personalizadas.

    • SimSpace Weaver no gestiona el ciclo de vida de las aplicaciones personalizadas. Debe iniciar sus aplicaciones personalizadas. Se recomienda iniciar las aplicaciones personalizadas antes de iniciar el reloj de simulación, pero puede iniciar las aplicaciones personalizadas después de encender el reloj.

      Puedes llamar a la StartApp API para iniciar tus aplicaciones personalizadas.

      aws simspaceweaver start-app --simulation simulation-name --name app-name --domain domain-name

      La llamada a la API de StartApp creará e iniciará una nueva instancia de la aplicación personalizada con el nombre que proporcione. Si proporciona el nombre de una aplicación que ya existe, recibirá un error. Si quiere reiniciar una aplicación (instancia) en particular, primero debe detenerla y eliminarla.

      nota

      El estado de la simulación debe estar STARTED antes de que pueda iniciar aplicaciones personalizadas.

      La aplicación de ejemplo proporciona la aplicación personalizada ViewApp para ver la simulación. Esta aplicación le proporciona una dirección IP estática y un número de puerto para conectar los clientes de simulación (lo hará en un paso posterior de este tutorial). Puede pensar en un domain como una clase de aplicaciones que tienen el mismo código ejecutable y las mismas opciones de inicio. app name identifica la instancia de la aplicación. Para obtener más información sobre SimSpace Weaver los conceptos, consulteConceptos clave de SimSpace Weaver.

      Puede utilizar la API de DescribeApp para comprobar el estado de una aplicación personalizada después de iniciarla.

      aws simspaceweaver describe-app --simulation simulation-name --app app-name --domain domain-name
      Para iniciar la aplicación de visualización en este tutorial
      1. Llame StartApp paraViewApp.

        aws simspaceweaver start-app --simulation simulation-name --name ViewApp --domain MyViewDomain
      2. Llame a DescribeApp para comprobar el estado de la aplicación personalizada.

        aws simspaceweaver describe-app --simulation simulation-name --app ViewApp --domain MyViewDomain

      Cuando el estado de la aplicación personalizada (instancia) sea STARTED, el resultado de DescribeApp incluirá la dirección IP y el número de puerto de esa aplicación personalizada (instancia). En el siguiente ejemplo de salida, la dirección IP es el valor del bloque Address y el número de puerto es el valor Actual del bloque EndpointInfo.

      
      {
          "Status": "STARTED",
          "Domain": "MyViewDomain",
          "TargetStatus": "STARTED",
          "Simulation": "MyProjectSimulation_22-10-04_22_10_15",
          "LaunchOverrides": {
              "LaunchCommands": []
          },
          "EndpointInfo": {
              "IngressPortMappings": [
                  {
                      "Declared": 7000,
                      "Actual": 4321
                  }
              ],
              "Address": "198.51.100.135"
          },
          "Name": "ViewApp"
      }
      
      
      nota

      El valor de Declared es el número de puerto al que debe enlazarse el código de la aplicación. El valor de Actual es el número de puerto al que se SimSpace Weaver exponen los clientes para que se conecten a tu aplicación. SimSpace Weaver asigna el Declared puerto al Actual puerto.

      nota

      Puede usar el procedimiento descrito en Obtenga la dirección IP y el número de puerto de una aplicación personalizada para obtener la dirección IP y el número de puerto de cualquier aplicación personalizada iniciada.

  8. Arranca el reloj.

    • Cuando crea la simulación por primera vez, tiene un reloj, pero el reloj no está funcionando. Cuando el reloj no esté funcionando, la simulación no actualizará su estado. Cuando encienda el reloj, empezará a enviar graduaciones a sus aplicaciones. Con cada movimiento, tus aplicaciones espaciales recorren las entidades que poseen y con las que archivan los resultados SimSpace Weaver

      nota

      El reloj puede tardar entre 30 y 60 segundos en ponerse en marcha.

      Llame a la API de StartClock.

      aws simspaceweaver start-clock --simulation simulation-name
      nota

      La API de StartClock usa su simulation-name, que puede encontrar en la API de ListSimulations:

      aws simspaceweaver list-simulations
parámetros de inicio rápido
  • -h, --help

    • Enumere estos parámetros.

  • --limpiar

    • Elimine el contenido del directorio de compilación antes de compilar.

  • --al2

    • Se basa directamente en la máquina nativa en lugar de en Docker. Úselo únicamente si se ejecuta en un entorno Amazon Linux 2, como WSL.

  • --solo carga

    • Cargue únicamente el esquema y los zips de la aplicación en Amazon S3, no inicie la simulación.

  • --sin compilación

    • Omita la reconstrucción del proyecto.

  • --sin contenedor

    • Omita la reconstrucción del contenedor de simulación que aparece en el esquema.

  • --consoleclient

    • Cree y conecte automáticamente el cliente de consola que aparece en config.py.

  • --esquema

    • Qué esquema utilizará esta invocación. El valor predeterminado es 'SCHEMA' en config.py.

  • --name NAME

    • Nombre que tendrá la simulación. El valor predeterminado es el de fecha y hora de «PROJECT_NAME» en config.py.

Paso 3: Compruebe los registros (opcional)

SimSpace Weaver escribe los mensajes de administración de la simulación y la salida de la consola de sus aplicaciones en Amazon CloudWatch Logs. Para obtener más información sobre cómo trabajar con registros, consulte Trabajar con grupos de registros y flujos de CloudWatch registros en la Guía del usuario de Amazon Logs.

Cada simulación que cree tiene su propio grupo de CloudWatch registros en Logs. El nombre del grupo de registro se especifica en el esquema de simulación. En el siguiente fragmento de esquema, el valor de log_destination_service es logs. Esto significa que el valor de log_destination_resource_name es el nombre de un grupo de registro. En este caso, el grupo de registro es MySimulationLogs.


simulation_properties:
  log_destination_service: "logs"
  log_destination_resource_name: "MySimulationLogs"
  default_entity_index_key_type: "Vector3<f32>"

También puede usar la API de DescribeSimulation para buscar el nombre del grupo de registro para la simulación después de iniciarla.

aws simspaceweaver describe-simulation --simulation simulation-name

El siguiente ejemplo muestra la parte del resultado de DescribeSimulation que describe la configuración de registro. El nombre del grupo de registro se muestra al final de LogGroupArn.

   
    "LoggingConfiguration": {
        "Destinations": [
            {
                "CloudWatchLogsLogGroup": {
                    "LogGroupArn": "arn:aws:logs:us-west-2:111122223333:log-group:MySimulationLogs"
                }
            }
        ]
    },
    

Cada grupo de registro de simulación contiene varios flujos de registro:

  • Flujo de registro de administración: mensajes de administración de simulaciones producidos por el SimSpace Weaver servicio.

    /sim/management
  • Flujo de registro de errores: mensajes de error producidos por el SimSpace Weaver servicio. Este flujo de registro solo existe si hay errores. SimSpace Weaver almacena los errores escritos por tus aplicaciones en sus propios flujos de registro de aplicaciones (consulta los siguientes flujos de registro).

    /sim/errors
  • Flujos de registro de aplicaciones espaciales (1 para cada aplicación espacial de cada trabajador): resultado de la consola generado por aplicaciones espaciales. Cada aplicación espacial escribe en su propio flujo de registro. spatial-app-id son todos los caracteres que aparecen después de la barra final del worker-id.

    /domain/spatial-domain-name/app/worker-worker-id/spatial-app-id
  • Flujos de registro de aplicaciones personalizadas (1 para cada instancia de aplicación personalizada): resultado de la consola generado por aplicaciones personalizadas. Cada instancia de aplicación personalizada escribe en su propio flujo de registro.

    /domain/custom-domain-name/app/custom-app-name/random-id
  • Flujos de registro de aplicaciones de servicio (1 para cada instancia de aplicación de servicio): resultado de la consola generado por las aplicaciones de servicio. Cada aplicación de servicio escribe en su propio flujo de registro. service-app-id son todos los caracteres que aparecen después de la barra final del service-app-name.

    /domain/service-domain-name/app/service-app-name/service-app-id
nota

La aplicación de ejemplo no tiene aplicaciones de servicio.

Paso 4: Ver la simulación

El SDK de la SimSpace Weaver aplicación ofrece diferentes opciones para ver la aplicación de muestra. Puedes usar el cliente de consola de ejemplo si no tienes soporte local para el desarrollo de Unreal Engine. En las instrucciones del cliente de Unreal Engine se presupone que estás utilizando Windows.

El cliente de la consola muestra una lista de los eventos de la entidad a medida que se producen. El cliente obtiene la información de los eventos de la entidad del ViewApp. Si el cliente de la consola muestra la lista de eventos, confirma la conectividad de la red con la actividad de ViewApp y de la simulación.

La simulación de PathfindingSample crea entidades estacionarias y móviles en un plano bidimensional. Las entidades móviles se mueven alrededor de las entidades estacionarias. El cliente Unreal Engine proporciona una visualización de los eventos de la entidad.

Cliente de consola

El cliente de consola se puede crear y conectar automáticamente al lanzar un ejemplo quick-start.py si se incluye la --consoleclient opción. Para crear y conectar el cliente de consola después quick-start.py de haberlo llamado, haga lo siguiente:

Navegue hasta:

sdk-folder/Clients/TCP/CppConsoleClient

Ejecute el script para crear y conectar el cliente:

python start_client.py --host ip-address --port port-number

El script hará lo siguiente:

  1. Construye el cliente de consola con CMake.

  2. Inicie el ejecutable creado con la dirección IP y el número de puerto proporcionados.

    .\WeaverNngConsoleClient.exe --url tcp://ip-address:port-number

Cliente Unreal Engine

Consulte Lanzamiento del cliente de visualización de Unreal Engine.

Paso 5: Detenga y elimine la simulación

Navegue hasta:

sdk-folder/Samples/PathfindingSample/tools/cloud

Busque los nombres de sus simulaciones:

aws simspaceweaver list-simulations

Detenga y elimine la simulación:

python stop-and-delete.py --simulation simulation-name

El script stop-and-delete.py hará lo siguiente:

  1. Ejecute el AWS CLI comando para detener una simulación.

  2. Ejecute el AWS CLI comando para eliminar una simulación.

stop-and-delete parámetros
  • -h, --help

    • Enumere estos parámetros.

  • --SIMULACIÓN, SIMULACIÓN

    • El nombre de la simulación para stop-and-delete

  • --parar

    • Solo detenga la simulación. No lo borra.

  • --eliminar

    • Elimine solo una simulación. Solo funcionará si la simulación es una de las dos STOPPEDFAILED.

Resolución de problemas

Consulte Resolución de problemas en el tutorial de inicio rápido.