Tutorial dettagliato: scopri i dettagli durante la creazione dell'applicazione di esempio - AWS SimSpace Weaver

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à.

Tutorial dettagliato: scopri i dettagli durante la creazione dell'applicazione di esempio

Il tutorial di avvio rapido ha spiegato come creare, avviare, interrompere ed eliminare una simulazione di esempio utilizzando quick-start.py estop-and-delete.py. Questo tutorial illustrerà in dettaglio come funzionano questi script e i parametri aggiuntivi che questi script possono utilizzare per massimizzare la flessibilità delle simulazioni Weaver personalizzate.

Requisiti

Prima di iniziare, assicurati di aver completato i passaggi indicati. Configurazione di SimSpace Weaver

Passaggio 1: abilitare la registrazione (opzionale)

Per attivare la registrazione
  1. Vai a:

    sdk-folder/Samples/PathfindingSample/tools
  2. Apri il file di schema in un editor di testo:

    pathfinding-single-worker-schema.yaml
  3. Trova la simulation_properties: sezione all'inizio del file:

    simulation_properties: default_entity_index_key_type: "Vector3<f32>"
  4. Inserisci le seguenti 2 righe dopo la rigasimulation_properties::

    log_destination_service: "logs" log_destination_resource_name: "MySimulationLogs"
  5. Conferma che la simulation_properties: sezione sia uguale alla seguente:

    simulation_properties: log_destination_service: "logs" log_destination_resource_name: "MySimulationLogs" default_entity_index_key_type: "Vector3<f32>"
  6. Salva il file ed esci dall'editor di testo.

Fase 2: Inizia la simulazione

Come illustrato nel tutorial di avvio rapido, i passaggi fondamentali per avviare una simulazione di esempio sono:

  1. Vai a:

    sdk-folder/Samples/PathfindingSample/tools/cloud
  2. Esegui uno dei seguenti comandi:

    • Docker: python quick-start.py

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

Questo script automatizza i comandi terminali più comuni, che possono essere eseguiti tutti manualmente utilizzando. AWS CLI Questi passaggi sono:

  1. Carica lo schema Weaver su S3.

    • SimSpace Weaver utilizza uno schema per configurare la simulazione. Lo schema è un file di testo semplice in formato YAML. Per ulteriori informazioni, consulta Configurazione della simulazione.

  2. Crea e carica un contenitore personalizzato (opzionale).

    • Se lo schema definisce un contenitore personalizzato, lo script di avvio rapido creerà l'immagine docker e la caricherà su Amazon ECR. Per ulteriori informazioni, consulta Contenitori personalizzati. Consulta lo PythonBubblesSample schema per un esempio di questa funzionalità.

  3. Compilare il progetto.

    • quick-start.pychiama la build_project funzione definita inbuild.py. Questo passaggio varierà a seconda del progetto. Per il PathfindingSample, viene utilizzato CMake. I comandi CMake e Docker per i quali sono disponibili in. build.py

  4. Carica gli artefatti della build su S3.

    • Puoi controllare i tuoi bucket S3 per assicurarti che tutti i caricamenti siano stati eseguiti correttamente. Per ulteriori informazioni sull'uso di Amazon S3, consulta Creazione, configurazione e utilizzo dei bucket Amazon S3 nella Guida per l'utente di Amazon Simple Storage Service.

    • Gli zip dell'applicazione di esempio e il bucket S3 utilizzano il seguente formato di nome:

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

      • App spaziale: ProjectNameSpatial.zip

      • Visualizza l'app (personalizzata): ProjectNameView.zip

  5. Avvia la simulazione.

    • Questo è un riepilogo della chiamata. aws simspaceweaver start-simulation AWS CLI Per ulteriori informazioni, vedere il AWS CLI Command Reference for. SimSpace Weaver

    • Lo script verrà ripetuto fino a quando lo stato della simulazione non sarà STARTED oFAILED. L'avvio di una simulazione può richiedere alcuni minuti.

  6. Ottieni i dettagli della simulazione.

    • L'DescribeSimulationAPI fornisce dettagli sulla simulazione, incluso lo stato. Una simulazione può trovarsi in uno dei seguenti stati:

      Stati del ciclo di vita della simulazione
      1. STARTING— Stato iniziale dopo la chiamata StartSimulation

      2. STARTED— tutte le app spaziali sono avviate e funzionanti

      3. STOPPING— Stato iniziale dopo la chiamata StopSimulation

      4. STOPPED— Tutte le risorse di elaborazione vengono interrotte

      5. DELETING— Stato iniziale dopo la chiamata DeleteSimulation

      6. DELETED— Tutte le risorse assegnate alla simulazione vengono eliminate

      7. FAILED— La simulazione ha avuto un errore/fallimento critico e si è interrotta

      8. SNAPSHOT_IN_PROGRESS— È in corso un'istantanea

      Per ottenere i dettagli della simulazione
      1. Chiamata dell'API ListSimulations.

        aws simspaceweaver list-simulations

        Lo script dovrebbe mostrare dettagli su ciascuna delle simulazioni, simili ai seguenti:

        {
            "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. Chiama DescribeSimulation per avere i dettagli della simulazione. Sostituiscilo simulation-nameNamecon la simulazione dell'output del passaggio precedente.

        aws simspaceweaver describe-simulation --simulation simulation-name

        Lo script dovrebbe mostrare maggiori dettagli sulla simulazione specificata, simili ai seguenti:

        {
            "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. Avvia app personalizzate.

    • SimSpace Weaver non gestisce il ciclo di vita delle app personalizzate. È necessario avviare le app personalizzate. È consigliabile avviare le app personalizzate prima di avviare l'orologio di simulazione, ma è possibile avviare le app personalizzate dopo aver avviato l'orologio.

      Puoi chiamare l'StartAppAPI per avviare le tue app personalizzate.

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

      La chiamata StartApp API creerà e avvierà una nuova istanza dell'app personalizzata utilizzando il nome fornito. Se fornisci il nome di un'app già esistente, riceverai un errore. Se desideri riavviare una particolare app (istanza), devi prima arrestare quell'app ed eliminarla.

      Nota

      Lo stato della simulazione deve essere quello STARTED precedente all'avvio di app personalizzate.

      L'applicazione di esempio fornisce l'app ViewApp personalizzata per visualizzare la simulazione. Questa app fornisce un indirizzo IP statico e un numero di porta per connettere i client di simulazione (lo farai in un passaggio successivo di questo tutorial). Puoi pensare a una domain classe di app che hanno lo stesso codice eseguibile e le stesse opzioni di avvio. app nameIdentifica l'istanza dell'app. Per ulteriori informazioni sui SimSpace Weaver concetti, vedereConcetti chiave perSimSpace Weaver.

      Puoi utilizzare l'DescribeAppAPI per verificare lo stato di un'app personalizzata dopo averla avviata.

      aws simspaceweaver describe-app --simulation simulation-name --app app-name --domain domain-name
      Per avviare l'app di visualizzazione in questo tutorial
      1. Chiama StartApp perViewApp.

        aws simspaceweaver start-app --simulation simulation-name --name ViewApp --domain MyViewDomain
      2. Chiama DescribeApp per verificare lo stato della tua app personalizzata.

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

      Dopo lo stato dell'app personalizzata (istanza)STARTED, l'output di DescribeApp includerà l'indirizzo IP e il numero di porta dell'app personalizzata (istanza). Nell'output di esempio seguente, l'indirizzo IP è il valore di Address e il numero di porta è il valore di Actual nel EndpointInfo blocco.

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

      Il valore di Declared è il numero di porta a cui deve essere associato il codice dell'app. Il valore di Actual è il numero di porta che SimSpace Weaver i client possono connettersi alla tua app. SimSpace Weaver mappa la Declared porta alla Actual porta.

      Nota

      È possibile utilizzare la procedura descritta in Ottieni l'indirizzo IP e il numero di porta di un'app personalizzata per ottenere l'indirizzo IP e il numero di porta di qualsiasi app personalizzata avviata.

  8. Avvia l'orologio.

    • Quando crei la simulazione per la prima volta, c'è un orologio ma l'orologio non è in funzione. Quando l'orologio non è in funzione, la simulazione non aggiornerà il suo stato. Dopo aver avviato l'orologio, inizierà a inviare segni di spunta alle tue app. Ogni segno di spunta, le tue app spaziali esaminano le entità che possiedono e a cui inviano i risultati SimSpace Weaver

      Nota

      L'avvio dell'orologio può richiedere 30-60 secondi.

      Chiamata dell'API StartClock.

      aws simspaceweaver start-clock --simulation simulation-name
      Nota

      L'StartClockAPI utilizza il tuosimulation-name, che puoi trovare utilizzando l'ListSimulationsAPI:

      aws simspaceweaver list-simulations
parametri di avvio rapido
  • -h, --help

    • Elenca questi parametri.

  • --clean

    • Elimina il contenuto della cartella di compilazione prima della compilazione.

  • --al2

    • Si basa direttamente sulla macchina nativa anziché su Docker. Usalo solo se esegui in un ambiente Amazon Linux 2, come WSL.

  • --upload only

    • Carica solo lo schema e gli zip dell'app su Amazon S3, non avviare la simulazione.

  • --nessuna build

    • Salta la ricostruzione del progetto.

  • - nessun contenitore

    • Salta la ricostruzione del contenitore di simulazione elencato nello schema.

  • --consoleclient

    • Crea e connetti automaticamente il client della console elencato in config.py.

  • SCHEMA --schema

    • Quale schema utilizzerà questa invocazione. Il valore predefinito è 'SCHEMA' in config.py.

  • --name NAME

    • Che nome avrà la simulazione. Il valore predefinito è 'Project_name'-date-time in config.py.

Fase 3: Controlla i log (opzionale)

SimSpace Weaver scrive i messaggi di gestione della simulazione e l'output della console dalle tue app su Amazon CloudWatch Logs. Per ulteriori informazioni sull'utilizzo dei log, consulta Working with log groups and log stream nella Amazon CloudWatch Logs User Guide.

Ogni simulazione che crei ha il proprio gruppo di log in Logs. CloudWatch Il nome del gruppo di log è specificato nello schema di simulazione. Nel frammento di schema seguente, il valore di è. log_destination_service logs Ciò significa che il valore di log_destination_resource_name è il nome di un gruppo di log. In questo caso, il gruppo di log èMySimulationLogs.


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

Puoi anche utilizzare l'DescribeSimulationAPI per trovare il nome del gruppo di log per la simulazione dopo averlo avviato.

aws simspaceweaver describe-simulation --simulation simulation-name

L'esempio seguente mostra la parte dell'output DescribeSimulation che descrive la configurazione di registrazione. Il nome del gruppo di log viene visualizzato alla fine diLogGroupArn.

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

Ogni gruppo di log di simulazione contiene diversi flussi di log:

  • Flusso di log di gestione: messaggi di gestione della simulazione prodotti dal servizio. SimSpace Weaver

    /sim/management
  • Flusso di registro degli errori: messaggi di errore prodotti dal SimSpace Weaver servizio. Questo flusso di log esiste solo in presenza di errori. SimSpace Weaver archivia gli errori scritti dalle tue app nei rispettivi flussi di log delle app (vedi i seguenti flussi di log).

    /sim/errors
  • Stream di log spaziali delle app (1 per ogni app spaziale su ciascun worker): output della console prodotto dalle app spaziali. Ogni app spaziale scrive nel proprio flusso di log. Sono spatial-app-idtutti i caratteri dopo la barra finale alla fine di. worker-id

    /domain/spatial-domain-name/app/worker-worker-id/spatial-app-id
  • Stream di log delle app personalizzati (1 per ogni istanza di app personalizzata): output della console prodotto da app personalizzate. Ogni istanza dell'app personalizzata scrive nel proprio flusso di log.

    /domain/custom-domain-name/app/custom-app-name/random-id
  • Stream di log delle app di servizio (1 per ogni istanza dell'app di servizio): output della console prodotto dalle app di servizio. Ogni app di servizio scrive nel proprio flusso di log. Sono service-app-idtutti i caratteri dopo la barra finale alla fine di. service-app-name

    /domain/service-domain-name/app/service-app-name/service-app-id
Nota

L'applicazione di esempio non dispone di app di servizio.

Fase 4: Visualizza la simulazione

L'SDK SimSpace Weaver dell'app offre diverse opzioni per visualizzare l'applicazione di esempio. Puoi utilizzare il client della console di esempio se non disponi di alcun supporto locale per lo sviluppo di Unreal Engine. Le istruzioni per il client Unreal Engine presuppongono che tu stia utilizzando Windows.

Il client della console visualizza un elenco di eventi di entità man mano che si verificano. Il client ottiene le informazioni sugli eventi dell'entità daViewApp. Se il client della console visualizza l'elenco degli eventi, conferma la connettività di rete con l'attività ViewApp e della simulazione.

La PathfindingSample simulazione crea entità fisse e mobili su un piano bidimensionale. Le entità mobili si muovono attorno alle entità fisse. Il client Unreal Engine fornisce una visualizzazione degli eventi dell'entità.

Client della console

Il client della console può essere creato e connesso automaticamente all'avvio di un esempio, quick-start.py se si include l'--consoleclientopzione. Per creare e connettere il client della console dopo quick-start.py che è già stato chiamato, procedi come segue:

Vai a:

sdk-folder/Clients/TCP/CppConsoleClient

Esegui lo script per creare e connettere il client:

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

Lo script eseguirà le seguenti operazioni:

  1. Crea il client della console con CMake.

  2. Avvia l'eseguibile integrato con l'indirizzo IP e il numero di porta forniti.

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

Client Unreal Engine

Per informazioni, consulta Avvio del client di visualizzazione Unreal Engine.

Passaggio 5: interrompi ed elimina la simulazione

Vai a:

sdk-folder/Samples/PathfindingSample/tools/cloud

Trova i nomi delle tue simulazioni:

aws simspaceweaver list-simulations

Interrompi ed elimina la simulazione:

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

Lo script stop-and-delete.py eseguirà le seguenti operazioni:

  1. Chiama il AWS CLI comando per interrompere una simulazione.

  2. Chiama il AWS CLI comando per eliminare una simulazione.

stop-and-delete parametri
  • -h, --help

    • Elenca questi parametri.

  • --simulazione di simulazione

    • Il nome della simulazione di stop-and-delete

  • --stop

    • Interrompi solo la simulazione. Non lo elimina.

  • --delete

    • Elimina solo una simulazione. Funzionerà solo se la simulazione è uno dei dueSTOPPED. FAILED

Risoluzione dei problemi

Vedi Risoluzione dei problemi nel tutorial di avvio rapido.