Tutorial terperinci: Pelajari detailnya saat membangun aplikasi sampel - AWS SimSpace Weaver

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Tutorial terperinci: Pelajari detailnya saat membangun aplikasi sampel

Tutorial mulai cepat membahas cara membangun, memulai, menghentikan, dan menghapus simulasi sampel menggunakan quick-start.py danstop-and-delete.py. Tutorial ini akan membahas secara rinci bagaimana skrip ini bekerja, dan parameter tambahan skrip ini dapat mengambil untuk memaksimalkan fleksibilitas untuk simulasi Weaver kustom.

Persyaratan

Sebelum Anda mulai, pastikan Anda menyelesaikan langkah-langkahnyaPengaturan untuk SimSpace Weaver.

Langkah 1: Aktifkan logging (opsional)

Untuk mengaktifkan logging
  1. Arahkan ke:

    sdk-folder/Samples/PathfindingSample/tools
  2. Buka file skema di editor teks:

    pathfinding-single-worker-schema.yaml
  3. Temukan simulation_properties: bagian di awal file:

    simulation_properties: default_entity_index_key_type: "Vector3<f32>"
  4. Masukkan 2 baris berikut setelah barissimulation_properties::

    log_destination_service: "logs" log_destination_resource_name: "MySimulationLogs"
  5. Konfirmasikan bahwa simulation_properties: bagian Anda sama dengan yang berikut:

    simulation_properties: log_destination_service: "logs" log_destination_resource_name: "MySimulationLogs" default_entity_index_key_type: "Vector3<f32>"
  6. Simpan file dan keluar dari editor teks Anda.

Langkah 2: Mulai simulasi Anda

Seperti yang ditunjukkan dalam tutorial mulai cepat, langkah paling dasar untuk meluncurkan simulasi sampel adalah:

  1. Arahkan ke:

    sdk-folder/Samples/PathfindingSample/tools/cloud
  2. Jalankan salah satu perintah berikut:

    • buruh pelabuhan: python quick-start.py

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

Skrip ini mengotomatiskan perintah terminal umum, yang semuanya dapat dijalankan secara manual menggunakan file. AWS CLI Langkah-langkah ini adalah:

  1. Unggah skema Weaver ke S3.

    • SimSpace Weaver menggunakan skema untuk mengkonfigurasi simulasi Anda. Skema adalah file teks biasa berformat YAML. Untuk informasi lebih lanjut, lihat. Mengkonfigurasi simulasi Anda

  2. Bangun dan unggah wadah khusus (opsional).

    • Jika skema Anda mendefinisikan wadah khusus, skrip mulai cepat akan membuat gambar docker dan mengunggahnya ke Amazon ECR. Untuk informasi selengkapnya, lihat Wadah khusus. Lihat PythonBubblesSample skema untuk contoh fitur ini.

  3. Bangun proyek.

    • quick-start.pymemanggil build_project fungsi yang didefinisikan dalambuild.py. Langkah ini akan bervariasi tergantung pada proyek. Untuk PathfindingSample, CMake digunakan. Perintah CMake dan Docker yang dapat ditemukan di. build.py

  4. Unggah artefak build ke S3.

    • Anda dapat memeriksa bucket S3 Anda untuk memastikan bahwa semua unggahan berhasil. Untuk informasi selengkapnya tentang penggunaan Amazon S3, lihat Membuat, mengonfigurasi, dan bekerja dengan bucket Amazon S3 di Panduan Pengguna Layanan Penyimpanan Sederhana Amazon.

    • Contoh ritsleting aplikasi dan bucket S3 menggunakan format nama berikut:

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

      • Aplikasi spasial: ProjectNameSpatial.zip

      • Lihat aplikasi (kustom): ProjectNameView.zip

  5. Mulai Simulasi.

    • Ini adalah pembungkus di sekitar aws simspaceweaver start-simulation AWS CLI panggilan. Untuk informasi selengkapnya, lihat Referensi AWS CLI Perintah untuk SimSpace Weaver.

    • Script akan loop sampai status simulasi adalah salah satu STARTED atauFAILED. Diperlukan beberapa menit untuk memulai simulasi.

  6. Dapatkan detail simulasi.

    • DescribeSimulationAPI memberikan detail tentang simulasi Anda, termasuk statusnya. Simulasi dapat berada di salah satu keadaan berikut:

      Status siklus hidup simulasi
      1. STARTING— Keadaan awal setelah Anda menelepon StartSimulation

      2. STARTED— semua aplikasi spasial diluncurkan dan sehat

      3. STOPPING— Keadaan awal setelah Anda menelepon StopSimulation

      4. STOPPED— Semua sumber daya komputasi dihentikan

      5. DELETING— Keadaan awal setelah Anda menelepon DeleteSimulation

      6. DELETED— Semua sumber daya yang ditugaskan untuk simulasi dihapus

      7. FAILED— Simulasi memiliki kesalahan/kegagalan kritis dan berhenti

      8. SNAPSHOT_IN_PROGRESS— Sebuah snapshot sedang berlangsung

      Untuk mendapatkan detail simulasi Anda
      1. Panggil ListSimulations API.

        aws simspaceweaver list-simulations

        Skrip harus menampilkan detail tentang setiap simulasi Anda, mirip dengan yang berikut:

        {
            "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. Hubungi DescribeSimulation untuk mendapatkan detail simulasi Anda. Gantikan simulation-namedengan Name simulasi Anda dari output dari langkah sebelumnya.

        aws simspaceweaver describe-simulation --simulation simulation-name

        Skrip harus menampilkan detail lebih lanjut tentang simulasi yang Anda tentukan, mirip dengan yang berikut ini:

        {
            "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. Mulai aplikasi khusus.

    • SimSpace Weaver tidak mengelola siklus hidup aplikasi khusus. Anda harus memulai aplikasi kustom Anda. Praktik terbaik adalah memulai aplikasi khusus sebelum memulai jam simulasi, tetapi Anda dapat memulai aplikasi khusus setelah memulai jam.

      Anda dapat memanggil StartApp API untuk memulai aplikasi kustom Anda.

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

      Panggilan StartApp API akan membuat dan memulai instance baru dari aplikasi kustom menggunakan nama yang Anda berikan. Jika Anda memberikan nama aplikasi yang sudah ada maka Anda akan menerima kesalahan. Jika Anda ingin memulai ulang aplikasi tertentu (instance), Anda harus terlebih dahulu menghentikan aplikasi itu dan menghapusnya.

      catatan

      Status simulasi Anda harus STARTED sebelum Anda dapat memulai aplikasi khusus.

      Aplikasi sampel menyediakan aplikasi ViewApp khusus untuk melihat simulasi Anda. Aplikasi ini memberi Anda alamat IP statis dan nomor port untuk menghubungkan klien simulasi (Anda akan melakukan ini di langkah selanjutnya dalam tutorial ini). Anda dapat menganggap a domain sebagai kelas aplikasi yang memiliki kode yang dapat dieksekusi dan opsi peluncuran yang sama. app nameMengidentifikasi instance aplikasi. Untuk informasi lebih lanjut tentang SimSpace Weaver konsep, lihatKonsep kunci untuk SimSpace Weaver.

      Anda dapat menggunakan DescribeApp API untuk memeriksa status aplikasi khusus setelah Anda memulainya.

      aws simspaceweaver describe-app --simulation simulation-name --app app-name --domain domain-name
      Untuk memulai aplikasi tampilan dalam tutorial ini
      1. Panggilan StartApp untukViewApp.

        aws simspaceweaver start-app --simulation simulation-name --name ViewApp --domain MyViewDomain
      2. Hubungi DescribeApp untuk memeriksa status aplikasi kustom Anda.

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

      Setelah status aplikasi kustom Anda (instance)STARTED, output DescribeApp akan menyertakan alamat IP dan nomor port untuk aplikasi kustom tersebut (instance). Dalam contoh output berikut, alamat IP adalah nilai Address dan nomor port adalah nilai Actual di EndpointInfo blok.

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

      Nilai Declared adalah nomor port yang harus diikat oleh kode aplikasi Anda. Nilai Actual adalah nomor port yang SimSpace Weaver mengekspos klien untuk terhubung ke aplikasi Anda. SimSpace Weaver memetakan Declared port ke Actual port.

      catatan

      Anda dapat menggunakan prosedur yang dijelaskan di Dapatkan alamat IP dan nomor port aplikasi khusus untuk mendapatkan alamat IP dan nomor port dari setiap aplikasi kustom yang dimulai.

  8. Mulai jam.

    • Ketika Anda pertama kali membuat simulasi Anda, ia memiliki jam tetapi jam tidak berjalan. Saat jam Anda tidak berjalan, simulasi Anda tidak akan memperbarui statusnya. Setelah Anda memulai jam, itu akan mulai mengirim kutu ke aplikasi Anda. Setiap centang, aplikasi spasial Anda melangkah melalui entitas yang mereka miliki dan berkomitmen hasilnya SimSpace Weaver

      catatan

      Diperlukan waktu 30-60 detik untuk memulai jam.

      Panggil StartClock API.

      aws simspaceweaver start-clock --simulation simulation-name
      catatan

      StartClockAPI menggunakan Andasimulation-name, yang dapat Anda temukan menggunakan ListSimulations API:

      aws simspaceweaver list-simulations
parameter mulai cepat
  • -h, --membantu

    • Buat daftar parameter ini.

  • --bersih

    • Hapus konten direktori build sebelum membangun.

  • --al2

    • Dibangun langsung di mesin asli alih-alih Docker. Gunakan ini hanya jika berjalan di lingkungan Amazon Linux 2, seperti WSL.

  • --uploadonly

    • Hanya unggah skema dan ritsleting aplikasi ke Amazon S3, jangan mulai simulasi.

  • --nobuild

    • Lewati pembangunan kembali proyek.

  • --tidak ada wadah

    • Lewati membangun kembali wadah simulasi yang tercantum dalam skema.

  • --konolelien

    • Secara otomatis membangun dan menghubungkan klien konsol yang tercantum di config.py.

  • --skema SKEMA

    • Skema apa yang akan digunakan doa ini. Default ke nilai 'SCHEMA' di config.py.

  • --nama NAMA

    • Apa nama simulasi yang akan dimiliki. Default ke nilai 'project_name'-date-time di config.py.

Langkah 3: Periksa log (opsional)

SimSpace Weaver menulis pesan manajemen simulasi dan output konsol dari aplikasi Anda ke Amazon CloudWatch Logs. Untuk informasi selengkapnya tentang bekerja dengan log, lihat Bekerja dengan grup log dan aliran log di Panduan Pengguna Amazon CloudWatch Logs.

Setiap simulasi yang Anda buat memiliki grup lognya sendiri di CloudWatch Log. Nama grup log ditentukan dalam skema simulasi. Dalam cuplikan skema berikut, nilainya adalah. log_destination_service logs Ini berarti bahwa nilai log_destination_resource_name adalah nama grup log. Dalam hal ini, grup log adalahMySimulationLogs.


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

Anda juga dapat menggunakan DescribeSimulation API untuk menemukan nama grup log untuk simulasi setelah Anda memulainya.

aws simspaceweaver describe-simulation --simulation simulation-name

Contoh berikut menunjukkan bagian dari output dari DescribeSimulation yang menjelaskan konfigurasi logging. Nama grup log ditampilkan di akhirLogGroupArn.

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

Setiap grup log simulasi berisi beberapa aliran log:

  • Aliran log manajemen — pesan manajemen simulasi yang dihasilkan oleh SimSpace Weaver layanan.

    /sim/management
  • Aliran log kesalahan — pesan kesalahan yang dihasilkan oleh SimSpace Weaver layanan. Aliran log ini hanya ada jika ada kesalahan. SimSpace Weaver menyimpan kesalahan yang ditulis oleh aplikasi Anda di aliran log aplikasi mereka sendiri (lihat aliran log berikut).

    /sim/errors
  • Aliran log aplikasi spasial (1 untuk setiap aplikasi spasial pada setiap pekerja) — keluaran konsol yang dihasilkan oleh aplikasi spasial. Setiap aplikasi spasial menulis ke aliran lognya sendiri. spatial-app-idItu semua karakter setelah garis miring di akhir. worker-id

    /domain/spatial-domain-name/app/worker-worker-id/spatial-app-id
  • Aliran log aplikasi khusus (1 untuk setiap instance aplikasi kustom) — keluaran konsol yang dihasilkan oleh aplikasi khusus. Setiap instance aplikasi kustom menulis ke aliran lognya sendiri.

    /domain/custom-domain-name/app/custom-app-name/random-id
  • Aliran log aplikasi layanan (1 untuk setiap instance aplikasi layanan) — keluaran konsol yang dihasilkan oleh aplikasi layanan. Setiap aplikasi layanan menulis ke aliran lognya sendiri. service-app-idItu semua karakter setelah garis miring di akhir. service-app-name

    /domain/service-domain-name/app/service-app-name/service-app-id
catatan

Aplikasi sampel tidak memiliki aplikasi layanan.

Langkah 4: Lihat simulasi Anda

SDK SimSpace Weaver aplikasi menyediakan opsi berbeda untuk melihat contoh aplikasi. Anda dapat menggunakan klien konsol sampel jika Anda tidak memiliki dukungan lokal untuk pengembangan Unreal Engine. Petunjuk untuk klien Unreal Engine mengasumsikan bahwa Anda menggunakan Windows.

Klien konsol menampilkan daftar peristiwa entitas saat terjadi. Klien mendapatkan informasi peristiwa entitas dariViewApp. Jika klien konsol Anda menampilkan daftar acara, maka itu mengonfirmasi konektivitas jaringan dengan ViewApp dan aktivitas dalam simulasi Anda.

PathfindingSampleSimulasi menciptakan entitas stasioner dan bergerak pada bidang 2 dimensi. Entitas bergerak bergerak di sekitar entitas stasioner. Klien Unreal Engine menyediakan visualisasi peristiwa entitas.

Klien konsol

Klien konsol dapat dibuat dan dihubungkan secara otomatis saat meluncurkan sampel quick-start.py jika Anda menyertakan --consoleclient opsi. Untuk membangun dan menghubungkan klien konsol quick-start.py setelah dipanggil, lakukan hal berikut:

Arahkan ke:

sdk-folder/Clients/TCP/CppConsoleClient

Jalankan skrip untuk membangun dan menghubungkan klien:

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

Script akan melakukan hal berikut:

  1. Bangun klien konsol dengan CMake.

  2. Luncurkan executable yang dibangun dengan alamat IP dan nomor port yang diberikan.

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

Klien Unreal Engine

Lihat Meluncurkan klien tampilan Unreal Engine.

Langkah 5: Hentikan dan hapus simulasi Anda

Arahkan ke:

sdk-folder/Samples/PathfindingSample/tools/cloud

Temukan nama-nama simulasi Anda:

aws simspaceweaver list-simulations

Hentikan dan hapus simulasi:

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

Script stop-and-delete.py akan melakukan hal berikut:

  1. Panggil AWS CLI perintah untuk menghentikan simulasi.

  2. Panggil AWS CLI perintah untuk menghapus simulasi.

stop-and-delete parameter
  • -h, --membantu

    • Buat daftar parameter ini.

  • --simulasi SIMULASI

    • Nama simulasi untuk stop-and-delete

  • --berhenti

    • Hentikan saja simulasi. Tidak menghapusnya.

  • --hapus

    • Hapus saja simulasi. Hanya akan bekerja jika dia simulasi salah satu STOPPED atauFAILED.

Pemecahan Masalah

Lihat Pemecahan Masalah di tutorial mulai cepat.