Ausführliches Tutorial: Erfahren Sie die Details beim Erstellen der Beispielanwendung - AWS SimSpace Weaver

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Ausführliches Tutorial: Erfahren Sie die Details beim Erstellen der Beispielanwendung

Das Schnellstart-Tutorial befasste sich mit dem Erstellen, Starten, Stoppen und Löschen einer Beispielsimulation mit quick-start.py undstop-and-delete.py. In diesem Tutorial wird detailliert beschrieben, wie diese Skripten funktionieren und welche zusätzlichen Parameter diese Skripte verwenden können, um die Flexibilität für benutzerdefinierte Weaver-Simulationen zu maximieren.

Voraussetzungen

Bevor Sie beginnen, stellen Sie sicher, dass Sie die Schritte unter abgeschlossen haben. Einrichten für SimSpace Weaver

Schritt 1: Protokollierung aktivieren (optional)

Um die Protokollierung zu aktivieren
  1. Navigieren Sie zu:

    sdk-folder/Samples/PathfindingSample/tools
  2. Öffnen Sie die Schemadatei in einem Texteditor:

    pathfinding-single-worker-schema.yaml
  3. Suchen Sie den simulation_properties: Abschnitt am Anfang der Datei:

    simulation_properties: default_entity_index_key_type: "Vector3<f32>"
  4. Fügen Sie nach der Zeile die folgenden 2 Zeilen einsimulation_properties::

    log_destination_service: "logs" log_destination_resource_name: "MySimulationLogs"
  5. Vergewissern Sie sich, dass Ihr simulation_properties: Abschnitt dem folgenden entspricht:

    simulation_properties: log_destination_service: "logs" log_destination_resource_name: "MySimulationLogs" default_entity_index_key_type: "Vector3<f32>"
  6. Speichern Sie die Datei und beenden Sie den Text-Editor.

Schritt 2: Starten Sie Ihre Simulation

Wie im Schnellstart-Tutorial gezeigt, sind die grundlegendsten Schritte zum Starten einer Beispielsimulation:

  1. Navigieren Sie zu:

    sdk-folder/Samples/PathfindingSample/tools/cloud
  2. Führen Sie einen der folgenden Befehle aus:

    • Docker: python quick-start.py

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

Dieses Skript automatisiert allgemeine Terminalbefehle, die alle manuell mit dem ausgeführt werden können. AWS CLI Diese Schritte sind:

  1. Laden Sie das Weaver-Schema auf S3 hoch.

    • SimSpace Weaver verwendet ein Schema, um Ihre Simulation zu konfigurieren. Das Schema ist eine Klartextdatei im YAML-Format. Weitere Informationen finden Sie unter Konfiguration Ihrer Simulation.

  2. Erstellen Sie einen benutzerdefinierten Container und laden Sie ihn hoch (optional).

    • Wenn Ihr Schema einen benutzerdefinierten Container definiert, erstellt das Schnellstart-Skript das Docker-Image und lädt es auf Amazon ECR hoch. Weitere Informationen finden Sie unter Maßgeschneiderte Behälter. Ein Beispiel für diese Funktion finden Sie im PythonBubblesSample Schema.

  3. Erstellen Sie das Projekt.

    • quick-start.pyruft die in definierte build_project Funktion aufbuild.py. Dieser Schritt variiert je nach Projekt. Für das PathfindingSample wird CMake verwendet. Die Befehle CMake und Docker finden Sie unter. build.py

  4. Laden Sie die Build-Artefakte auf S3 hoch.

    • Sie können Ihre S3-Buckets überprüfen, um sicherzustellen, dass alle Uploads erfolgreich waren. Weitere Informationen zur Verwendung von Amazon S3 finden Sie unter Erstellen, Konfigurieren und Arbeiten mit Amazon S3 S3-Buckets im Amazon Simple Storage Service-Benutzerhandbuch.

    • Die Zips und der S3-Bucket der Beispielanwendung verwenden das folgende Namensformat:

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

      • Räumliche App: ProjectNameSpatial.zip

      • (benutzerdefinierte) App anzeigen: ProjectNameView.zip

  5. Starten Sie die Simulation.

    • Dies ist eine Zusammenfassung des aws simspaceweaver start-simulation AWS CLI Anrufs. Weitere Informationen finden Sie in der AWS CLI Befehlsreferenz für SimSpace Weaver.

    • Das Skript wird solange wiederholt, bis der Simulationsstatus entweder STARTED oder lautetFAILED. Es kann einige Minuten dauern, bis eine Simulation gestartet wird.

  6. Holen Sie sich die Simulationsdetails.

    • Die DescribeSimulation API bietet Details zu Ihrer Simulation, einschließlich ihres Status. Eine Simulation kann sich in einem der folgenden Zustände befinden:

      Status des Simulationslebenszyklus
      1. STARTING— Ausgangszustand nach dem Anruf StartSimulation

      2. STARTED— Alle räumlichen Apps sind gestartet und funktionieren einwandfrei

      3. STOPPING— Ausgangszustand nach dem Anruf StopSimulation

      4. STOPPED— Alle Rechenressourcen sind gestoppt

      5. DELETING— Ausgangszustand nach dem Anruf DeleteSimulation

      6. DELETED— Alle der Simulation zugewiesenen Ressourcen werden gelöscht

      7. FAILED— Die Simulation hatte einen kritischen Fehler/Ausfall und wurde gestoppt

      8. SNAPSHOT_IN_PROGRESS— Ein Snapshot ist in Bearbeitung

      Um Ihre Simulationsdetails zu erhalten
      1. Rufen Sie die ListSimulations-API auf.

        aws simspaceweaver list-simulations

        Das Skript sollte Details zu jeder Ihrer Simulationen anzeigen, ähnlich den folgenden:

        {
            "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. Rufen Sie DescribeSimulation an, um Ihre Simulationsdetails zu erhalten. simulation-nameErsetzen Sie es durch das Name Ergebnis Ihrer Simulation aus der Ausgabe des vorherigen Schritts.

        aws simspaceweaver describe-simulation --simulation simulation-name

        Das Skript sollte mehr Details zu der von Ihnen angegebenen Simulation anzeigen, ähnlich der folgenden:

        {
            "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. Starten Sie benutzerdefinierte Apps.

    • SimSpace Weaver verwaltet nicht den Lebenszyklus von benutzerdefinierten Apps. Sie müssen Ihre benutzerdefinierten Apps starten. Es empfiehlt sich, Ihre benutzerdefinierten Apps zu starten, bevor Sie Ihre Simulationsuhr starten. Sie können benutzerdefinierte Apps jedoch auch starten, nachdem Sie die Uhr gestartet haben.

      Sie können die StartApp API aufrufen, um Ihre benutzerdefinierten Apps zu starten.

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

      Durch den StartApp API-Aufruf wird eine neue Instanz der benutzerdefinierten App unter dem von Ihnen angegebenen Namen erstellt und gestartet. Wenn Sie den Namen einer App angeben, die bereits existiert, erhalten Sie eine Fehlermeldung. Wenn Sie eine bestimmte App (Instanz) neu starten möchten, müssen Sie diese App zuerst beenden und löschen.

      Anmerkung

      Der Status Ihrer Simulation muss vorliegen, STARTED bevor Sie benutzerdefinierte Apps starten können.

      Die Beispielanwendung stellt die ViewApp benutzerdefinierte App zum Anzeigen Ihrer Simulation bereit. Diese App stellt Ihnen eine statische IP-Adresse und Portnummer zur Verfügung, um die Simulationsclients zu verbinden (Sie werden dies in einem späteren Schritt in diesem Tutorial tun). Sie können sich a domain als eine Klasse von Apps vorstellen, die denselben ausführbaren Code und dieselben Startoptionen haben. Das app name identifiziert die Instanz der App. Weitere Informationen zu SimSpace Weaver Konzepten finden Sie unterDie wichtigsten Konzepte fürSimSpace Weaver.

      Sie können die DescribeApp API verwenden, um den Status einer benutzerdefinierten App zu überprüfen, nachdem Sie sie gestartet haben.

      aws simspaceweaver describe-app --simulation simulation-name --app app-name --domain domain-name
      Um die View-App in diesem Tutorial zu starten
      1. Rufen Sie an StartApp fürViewApp.

        aws simspaceweaver start-app --simulation simulation-name --name ViewApp --domain MyViewDomain
      2. Rufen Sie DescribeApp an, um den Status Ihrer benutzerdefinierten App zu überprüfen.

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

      Sobald der Status Ihrer benutzerdefinierten App (Instanz) lautetSTARTED, enthält die Ausgabe von DescribeApp die IP-Adresse und die Portnummer für diese benutzerdefinierte App (Instanz). In der folgenden Beispielausgabe ist die IP-Adresse der Wert von Address und die Portnummer der Wert von Actual im EndpointInfo Block.

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

      Der Wert von Declared ist die Portnummer, an die Ihr App-Code gebunden werden soll. Der Wert von Actual ist die Portnummer, über SimSpace Weaver die Clients eine Verbindung zu Ihrer App herstellen können. SimSpace Weaver ordnet den Declared Port dem Port zu. Actual

      Anmerkung

      Sie können das unter beschriebene Verfahren verwendenRufen Sie die IP-Adresse und die Portnummer einer benutzerdefinierten App ab, um die IP-Adresse und die Portnummer jeder gestarteten benutzerdefinierten App abzurufen.

  8. Starten Sie die Uhr.

    • Wenn Sie Ihre Simulation zum ersten Mal erstellen, hat sie eine Uhr, aber die Uhr läuft nicht. Wenn Ihre Uhr nicht läuft, aktualisiert Ihre Simulation ihren Status nicht. Nachdem Sie die Uhr gestartet haben, beginnt sie, Ticks an Ihre Apps zu senden. Bei jedem Tick durchgehen Ihre Geo-Apps Schritt für Schritt die Entitäten, deren Eigentümer sie sind, und übertragen die Ergebnisse an SimSpace Weaver

      Anmerkung

      Es kann 30-60 Sekunden dauern, bis die Uhr gestartet wird.

      Rufen Sie die StartClock-API auf.

      aws simspaceweaver start-clock --simulation simulation-name
      Anmerkung

      Die StartClock API verwendet Ihresimulation-name, die Sie mithilfe der ListSimulations API finden können:

      aws simspaceweaver list-simulations
Schnellstart-Parameter
  • -h, --help

    • Führen Sie diese Parameter auf.

  • --sauber

    • Löscht den Inhalt des Build-Verzeichnisses vor dem Erstellen.

  • --al2

    • Baut direkt auf dem nativen Computer statt auf Docker. Verwenden Sie dies nur, wenn Sie in einer Amazon Linux 2-Umgebung wie WSL ausgeführt werden.

  • --nur hochladen

    • Laden Sie nur das Schema und die App-Zip-Dateien auf Amazon S3 hoch, starten Sie die Simulation nicht.

  • --kein Build

    • Überspringe den Neuaufbau des Projekts.

  • -- kein Behälter

    • Überspringt die Neuerstellung des Simulationscontainers, der im Schema aufgeführt ist.

  • --consoleclient

    • Der in config.py aufgeführte Konsolen-Client wird automatisch erstellt und eine Verbindung hergestellt.

  • --schema SCHEMA

    • Welches Schema dieser Aufruf verwenden wird. Standardmäßig ist der Wert 'SCHEMA' in config.py.

  • --Name NAME

    • Welchen Namen die Simulation haben wird. Standardmäßig ist der Wert von 'Project_Name'-Date-Time in config.py voreingestellt.

Schritt 3: Überprüfen Sie die Protokolle (optional)

SimSpace Weaver schreibt Simulationsverwaltungsnachrichten und die Konsolenausgabe Ihrer Apps in Amazon CloudWatch Logs. Weitere Informationen zur Arbeit mit Protokollen finden Sie unter Arbeiten mit Protokollgruppen und Protokollströmen im Amazon CloudWatch Logs-Benutzerhandbuch.

Jede Simulation, die Sie erstellen, hat ihre eigene Protokollgruppe in CloudWatch Logs. Der Name der Protokollgruppe ist im Simulationsschema angegeben. Im folgenden Schemaausschnitt ist der Wert vonlog_destination_service. logs Das bedeutet, dass der Wert von der Name einer Protokollgruppe log_destination_resource_name ist. In diesem Fall ist die ProtokollgruppeMySimulationLogs.


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

Sie können die DescribeSimulation API auch verwenden, um den Namen der Protokollgruppe für die Simulation zu ermitteln, nachdem Sie sie gestartet haben.

aws simspaceweaver describe-simulation --simulation simulation-name

Das folgende Beispiel zeigt den Teil der Ausgabe vonDescribeSimulation, der die Protokollierungskonfiguration beschreibt. Der Name der Protokollgruppe wird am Ende von angezeigtLogGroupArn.

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

Jede Simulationsprotokollgruppe enthält mehrere Protokolldatenströme:

  • Management-Log-Stream — vom SimSpace Weaver Dienst erzeugte Simulationsverwaltungsnachrichten.

    /sim/management
  • Fehlerprotokollstream — vom SimSpace Weaver Dienst erzeugte Fehlermeldungen. Dieser Protokollstream ist nur vorhanden, wenn Fehler vorliegen. SimSpace Weaver speichert Fehler, die von Ihren Apps geschrieben wurden, in ihren eigenen App-Protokollstreams (siehe die folgenden Protokollstreams).

    /sim/errors
  • Spatial App Log Streams (1 für jede Spatial App auf jedem Worker) — Konsolenausgabe, die von Spatial Apps erzeugt wird. Jede Spatial-App schreibt in ihren eigenen Log-Stream. spatial-app-idDas sind alle Zeichen nach dem abschließenden Schrägstrich am Ende von. worker-id

    /domain/spatial-domain-name/app/worker-worker-id/spatial-app-id
  • Benutzerdefinierte App-Protokollstreams (1 für jede benutzerdefinierte App-Instanz) — Konsolenausgabe, die von benutzerdefinierten Apps erzeugt wird. Jede benutzerdefinierte Anwendungsinstanz schreibt in ihren eigenen Protokollstream.

    /domain/custom-domain-name/app/custom-app-name/random-id
  • Protokollstreams von Service-Apps (1 für jede Service-App-Instanz) — Konsolenausgabe, die von Service-Apps erzeugt wird. Jede Service-App schreibt in ihren eigenen Protokollstream. service-app-idDas sind alle Zeichen nach dem abschließenden Schrägstrich am Ende von. service-app-name

    /domain/service-domain-name/app/service-app-name/service-app-id
Anmerkung

Die Beispielanwendung hat keine Service-Apps.

Schritt 4: Sehen Sie sich Ihre Simulation an

Das SimSpace Weaver App-SDK bietet verschiedene Optionen zum Anzeigen der Beispielanwendung. Sie können den Beispiel-Konsolenclient verwenden, wenn Sie keine lokale Unterstützung für die Unreal Engine-Entwicklung haben. In den Anweisungen für den Unreal Engine-Client wird davon ausgegangen, dass Sie Windows verwenden.

Der Konsolenclient zeigt eine Liste von Entitätsereignissen an, sobald sie auftreten. Der Client erhält die Informationen zum Entitätsereignis vonViewApp. Wenn Ihr Konsolenclient die Liste der Ereignisse anzeigt, bestätigt er die Netzwerkkonnektivität anhand der Aktivität ViewApp und in Ihrer Simulation.

Die PathfindingSample Simulation erzeugt stationäre und sich bewegende Objekte auf einer zweidimensionalen Ebene. Die beweglichen Objekte bewegen sich um die stationären Objekte herum. Der Unreal Engine-Client bietet eine Visualisierung der Entitätsereignisse.

Konsolen-Client

Der Konsolen-Client kann beim Starten eines Beispiels automatisch erstellt und verbunden werden, quick-start.py wenn Sie die --consoleclient Option angeben. Gehen Sie wie folgt vor, um den Konsolen-Client zu erstellen und quick-start.py eine Verbindung herzustellen, nachdem er bereits aufgerufen wurde:

Navigieren Sie zu:

sdk-folder/Clients/TCP/CppConsoleClient

Führen Sie das Skript aus, um den Client zu erstellen und eine Verbindung herzustellen:

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

Das Skript wird Folgendes tun:

  1. Erstellen Sie den Konsolenclient mit CMake.

  2. Starten Sie die erstellte ausführbare Datei mit der angegebenen IP-Adresse und Portnummer.

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

Unreal Engine-Client

Siehe Den Unreal Engine View Client starten.

Schritt 5: Stoppen und löschen Sie Ihre Simulation

Navigiere zu:

sdk-folder/Samples/PathfindingSample/tools/cloud

Finden Sie die Namen Ihrer Simulationen:

aws simspaceweaver list-simulations

Stoppen und löschen Sie die Simulation:

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

Das Skript stop-and-delete.py wird Folgendes tun:

  1. Rufen Sie den AWS CLI Befehl auf, um eine Simulation zu beenden.

    • aws simspaceweaver stop-simulation

    • Weitere Informationen finden Sie unter AWS CLI Befehlsreferenz für SimSpace Weaver.

  2. Rufen Sie den AWS CLI Befehl zum Löschen einer Simulation auf.

    • aws simpaceweaver delete-simulation

    • Weitere Informationen finden Sie unter AWS CLI Befehlsreferenz für SimSpace Weaver.

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

    • Führen Sie diese Parameter auf.

  • --Simulation SIMULATION

    • Der Name der Simulation für stop-and-delete

  • --stopp

    • Stoppen Sie einfach die Simulation. Löscht es nicht.

  • --löschen

    • Löscht nur eine Simulation. Funktioniert nur, wenn die Simulation entweder STOPPED oder istFAILED.

Fehlerbehebung

Siehe Fehlerbehebung im Schnellstart-Tutorial.