Gunakan Visual Studio 2022 untuk mengembangkan dan men-debug modul untuk Azure IoT Edge

Berlaku untuk:IoT Edge 1.6 tanda centang IoT Edge 1.6

Penting

IoT Edge 1.6 LTS adalah rilis yang didukung. Dukungan IoT Edge 1.5 LTS berakhir pada 10 November 2026; IoT Edge 1.4 LTS mencapai akhir masa pakainya pada 12 November 2024. Jika Anda menggunakan rilis sebelumnya, lihat Update IoT Edge.

Artikel ini memperlihatkan kepada Anda cara menggunakan Visual Studio 2022 untuk mengembangkan, men-debug, dan menyebarkan modul Azure IoT Edge kustom. Visual Studio 2022 menyediakan templat untuk modul IoT Edge yang ditulis dalam C dan C#. Arsitektur perangkat yang didukung termasuk Windows x64, Linux x64, ARM32, dan ARM64 (pratinjau). Untuk informasi selengkapnya tentang sistem operasi, bahasa, dan arsitektur yang didukung, lihat Dukungan bahasa dan arsitektur.

Artikel ini mencakup langkah-langkah untuk dua alat pengembangan IoT Edge:

  • Antarmuka baris perintah (CLI), alat pilihan untuk pengembangan
  • alat Azure IoT Edge untuk ekstensi Visual Studio (dalam mode maintenance)

Gunakan tombol pemilih alat di awal untuk memilih opsi alat Anda untuk artikel ini. Kedua alat ini memberikan manfaat berikut:

  • Buat, edit, membangun, jalankan, dan debug solusi dan modul IoT Edge di komputer pengembangan lokal Anda.
  • Kode modul Azure IoT Anda di C atau C# dengan manfaat pengembangan Visual Studio.
  • Sebarkan solusi IoT Edge Anda ke perangkat IoT Edge melalui Azure IoT Hub.

Prasyarat

Artikel ini mengasumsikan bahwa Anda menggunakan komputer yang berjalan Windows sebagai komputer pengembangan Anda.

  • Instal atau ubah Visual Studio 2022 di komputer pengembangan Anda. Pilih pengembangan Azure dan pengembangan Desktop dengan opsi beban kerja C++.

  • Unduh dan instal Azure IoT Edge Tools dari Visual Studio Marketplace. Gunakan ekstensi Azure IoT Edge Tools untuk membuat dan membangun solusi IoT Edge Anda. Alat pengembangan yang disukai adalah baris perintah (CLI) Azure IoT Edge Dev Tool. Ekstensi ini mencakup templat proyek Azure IoT Edge yang digunakan untuk membuat proyek Visual Studio. Anda memerlukan ekstensi yang diinstal terlepas dari alat pengembangan yang Anda gunakan.

    Penting

    Ekstensi Azure IoT Edge Tools for VS 2022 saat ini dalam mode pemeliharaan. Alat pengembangan yang disukai adalah baris perintah (CLI) Azure IoT Edge Dev Tool.

    Petunjuk / Saran

    Jika Anda menggunakan Visual Studio 2019, unduh dan instal Azure IoT Edge Tools untuk VS 2019 dari marketplace Visual Studio.

  • Menginstal manajer pustaka Vcpkg

    git clone https://github.com/Microsoft/vcpkg
    cd vcpkg
    bootstrap-vcpkg.bat
    

    Instal paket azure-iot-sdk-c untuk Windows

    vcpkg.exe install azure-iot-sdk-c:x64-windows
    vcpkg.exe --triplet x64-windows integrate install
    
  • Unduh dan instal sistem manajemen kontainer yang kompatibel dengan Docker di komputer pengembangan Anda untuk membangun dan menjalankan gambar modul Anda. Misalnya, instal Docker Community Edition.

  • Untuk mengembangkan modul dengan kontainer Linux, gunakan komputer Windows yang memenuhi persyaratan untuk Docker Desktop.

  • Buat Azure Container Registry atau Docker Hub untuk menyimpan gambar modul Anda.

    Petunjuk / Saran

    Gunakan registri Docker lokal untuk membuat prototipe dan pengujian alih-alih registri cloud.

  • Instal Azure CLI.

  • Untuk menguji modul di perangkat, Anda memerlukan IoT Hub aktif dengan setidaknya satu perangkat IoT Edge. Untuk membuat perangkat IoT Edge untuk pengujian, buat perangkat di portal Azure atau dengan CLI:

    • Membuatnya di portal Azure adalah cara tercepat. Di portal Azure, buka sumber daya IoT Hub Anda. Pilih Perangkat di bawah menu Manajemen perangkat , lalu pilih Tambahkan Perangkat.

      Di Buat perangkat, beri nama perangkat Anda menggunakan id Device, periksa perangkat IoT Edge, lalu pilih Simpan di kiri bawah.

      Konfirmasikan bahwa perangkat baru Anda ada di IoT Hub Anda dari menu manajemen Device > Perangkat. Untuk informasi selengkapnya tentang membuat perangkat IoT Edge melalui portal Azure, lihat Buat dan provisikan perangkat IoT Edge di Linux menggunakan kunci simetris.

    • Untuk membuat perangkat atau piranti IoT Edge dengan CLI, ikuti langkah-langkah dalam panduan memulai cepat untuk Linux atau Windows. Dalam proses mendaftarkan perangkat IoT Edge, Anda membuat perangkat IoT Edge.

    Jika Anda menjalankan daemon IoT Edge di komputer pengembangan, Anda mungkin perlu menghentikan EdgeHub dan EdgeAgent sebelum memulai pengembangan di Visual Studio.

Membuat proyek Azure IoT Edge

Templat proyek IoT Edge di Visual Studio membuat solusi untuk disebarkan ke perangkat IoT Edge. Pertama, Anda membuat solusi Azure IoT Edge. Kemudian, Anda membuat modul dalam solusi tersebut. Setiap solusi IoT Edge dapat berisi lebih dari satu modul.

Peringatan

Alat Azure IoT Edge untuk ekstensi Visual Studio tidak memiliki templat proyek untuk modul C dan C#. Jika Anda tidak dapat membuat modul IoT Edge menggunakan ekstensi, gunakan solusi berikut.

Unduh file berikut dan letakkan di direktori templat Visual Studio yang tercantum:

File templat Tambahkan ke direktori
azureiotedgemodule-v0.0.4.zip %userprofile%\Documents\Visual Studio 2022\Templates\ProjectTemplates\Visual C#
azureiotedgevcmodulevs17-v0.0.9.zip %userprofile%\Documents\Visual Studio 2022\Templates\ProjectTemplates\Visual C++ Project

Dalam solusi kami, kami akan membangun tiga proyek. Modul utama yang berisi EdgeAgent dan EdgeHub, selain modul sensor suhu. Selanjutnya, Anda menambahkan dua modul IoT Edge lagi.

Penting

Struktur proyek IoT Edge yang Visual Studio buat tidak sama dengan yang ada di Visual Studio Code.

Saat ini, Azure IoT Edge Dev Tool CLI tidak mendukung pembuatan jenis proyek Visual Studio. Gunakan ekstensi Visual Studio IoT Edge untuk membuat proyek Visual Studio.

  1. Di Visual Studio, buat proyek baru.

  2. Di Buat proyek baru, cari Azure IoT Edge. Pilih proyek yang cocok dengan platform dan arsitektur untuk perangkat IoT Edge Anda, lalu pilih Baru.

  3. Di Konfigurasikan proyek baru Anda, masukkan nama untuk proyek Anda, tentukan lokasi, lalu pilih Buat.

  4. Di Tambahkan Modul, pilih jenis modul yang ingin Anda kembangkan. Jika Anda memiliki modul yang sudah ada yang ingin Anda tambahkan ke penyebaran, pilih Modul yang sudah ada.

  5. Di Nama Modul, masukkan nama untuk modul Anda. Pilih nama yang unik dalam registri kontainer Anda.

  6. Di Url Repositori, berikan nama repositori gambar modul. Visual Studio mengisi otomatis nama modul dengan localhost:5000/<nama modul Anda>. Ganti dengan informasi registri Anda sendiri. Gunakan localhost jika Anda menggunakan registri Docker lokal untuk pengujian. Jika Anda menggunakan Azure Container Registry, gunakan server masuk dari pengaturan registri Anda. Server login terlihat seperti <nama registri>.azurecr.io. Hanya ganti bagian localhost:5000 dari string sehingga hasil akhir terlihat seperti <nama registri>.azurecr.io/<nama modul Anda>.

  7. Pilih Tambahkan untuk menambahkan modul Anda ke proyek.

    Cuplikan layar cara menambahkan Aplikasi dan Modul.

    Catatan

    Untuk mengubah URL repositori dalam proyek IoT Edge yang ada, buka file module.json. URL repositori berada di properti repositori file JSON.

Anda sekarang memiliki proyek IoT Edge dan modul IoT Edge dalam solusi Visual Studio Anda.

Struktur proyek

Solusi Anda memiliki dua folder tingkat proyek: folder proyek utama dan satu folder modul. Misalnya, Anda mungkin memiliki folder proyek utama bernama AzureIotEdgeApp1 dan folder modul bernama IotEdgeModule1. Folder utama proyek memiliki file manifes penyebaran Anda.

Folder proyek modul memiliki file untuk kode modul Anda bernama atau Program.csmain.c, tergantung pada bahasa yang Anda pilih. Folder ini juga memiliki file bernama module.json yang menjelaskan metadata modul Anda. File Docker yang berbeda di sini menyediakan informasi yang diperlukan untuk membangun modul Anda sebagai kontainer Windows atau Linux.

Manifest penerapan proyek Anda

Sunting manifest penyebaran bernama deployment.debug.template.json. File ini adalah templat manifes penyebaran IoT Edge yang menentukan semua modul yang berjalan pada perangkat dan bagaimana mereka berkomunikasi satu sama lain. Untuk informasi selengkapnya tentang manifes penyebaran, lihat Pelajari cara menyebarkan modul dan menetapkan rute.

Saat Anda membuka templat penyebaran ini, Anda melihat bahwa dua modul runtime, edgeAgent dan edgeHub, disertakan, bersama dengan modul kustom yang Anda buat dalam proyek Visual Studio ini. Modul keempat bernama SimulatedTemperatureSensor juga disertakan. Modul default ini menghasilkan data simulasi yang dapat Anda gunakan untuk menguji modul Anda, atau menghapus jika tidak diperlukan. Untuk mempelajari cara kerja sensor suhu yang disimulasikan, lihat kode sumber SimulatedTemperatureSensor.csproj.

Menetapkan versi runtime IoT Edge

Versi runtime stabil terbaru adalah 1.6. Perbarui versi runtime IoT Edge ke rilis stabil terbaru atau versi yang ingin Anda targetkan untuk perangkat Anda.

  1. Di Penjelajah Solusi, klik kanan nama proyek utama Anda, lalu pilih Set IoT Edge versi runtime.

    Screenshot tentang cara menemukan dan memilih item menu bernama 'Set IoT Edge Runtime version'.

  2. Gunakan menu drop-down untuk memilih versi runtime yang dijalankan perangkat IoT Edge Anda, lalu pilih OK untuk menyimpan perubahan Anda. Jika tidak ada perubahan yang dilakukan, pilih Batal untuk keluar.

    Ekstensi tidak menyertakan pilihan untuk versi runtime terbaru. Untuk mengatur versi runtime yang lebih tinggi dari 1.2, buka file manifes penyebaran deployment.debug.template.json . Ubah versi runtime untuk gambar modul runtime sistem edgeAgent dan edgeHub. Misalnya, untuk menggunakan runtime IoT Edge versi 1.6, ubah baris berikut dalam file manifes penyebaran:

    "systemModules": {
       "edgeAgent": {
        //...
          "image": "mcr.microsoft.com/azureiotedge-agent:1.6"
        //...
       "edgeHub": {
       //...
          "image": "mcr.microsoft.com/azureiotedge-hub:1.6",
       //...
    
  3. Jika Anda mengubah versi, regenerasi manifes penyebaran dengan mengklik kanan nama proyek Anda, lalu pilih Buat penyebaran untuk IoT Edge. Ini menghasilkan manifes penyebaran berdasarkan templat penyebaran Anda dan memasukkannya ke folder config proyek Visual Studio Anda.

  1. Buka file manifes deployment.debug.template.json untuk penggelaran. Manifest deployment adalah dokumen JSON yang menjelaskan modul yang akan dikonfigurasi pada perangkat IoT Edge yang ditargetkan.

  2. Ubah versi runtime untuk gambar modul runtime sistem edgeAgent dan edgeHub. Misalnya, untuk menggunakan runtime IoT Edge versi 1.6, ubah baris berikut dalam file manifes penyebaran:

    "systemModules": {
        "edgeAgent": {
        //...
            "image": "mcr.microsoft.com/azureiotedge-agent:1.6",
        //...
        "edgeHub": {
        //...
            "image": "mcr.microsoft.com/azureiotedge-hub:1.6",
        //...
    

Opsi infrastruktur & pengembangan modul

Saat Anda menambahkan modul baru, modul ini dilengkapi dengan kode default yang siap dibuat dan disebarkan ke perangkat sehingga Anda dapat memulai pengujian tanpa menyentuh kode apa pun. Kode modul terletak di dalam folder modul dalam file bernama Program.cs (untuk C#) atau main.c (untuk C).

Solusi default dibuat sehingga data yang disimulasikan dari SimulatedTemperatureSensor modul dirutekan ke modul Anda, yang mengambil input dan kemudian mengirimkannya ke IoT Hub.

Saat Anda siap untuk menyesuaikan templat modul dengan kode Anda sendiri, gunakan SDK Azure IoT Hub untuk membangun modul yang memenuhi kebutuhan utama untuk solusi IoT seperti keamanan, manajemen perangkat, dan keandalan.

Melakukan debug menggunakan simulator

Azure IoT EdgeHub Dev Tool memberikan pengalaman pengembangan dan debug lokal. Alat ini membantu memulai IoT Edge modul tanpa runtime IoT Edge sehingga Anda dapat membuat, mengembangkan, menguji, menjalankan, dan men-debug modul dan solusi IoT Edge secara lokal. Anda tidak perlu mengunggah image ke dalam registry container dan meng-deploy mereka ke perangkat untuk pengujian.

Untuk informasi selengkapnya, lihat Azure IoT EdgeHub Dev Tool.

Untuk menginisialisasi alat di Visual Studio:

  1. Ambil string koneksi perangkat IoT Edge Anda (ditemukan di IoT Hub Anda) dari portal Azure atau dari Azure CLI.

    Jika menggunakan CLI untuk mengambil string koneksi Anda, gunakan perintah ini, ganti "[device_id]" dan "[hub_name]" dengan nilai Anda sendiri:

    az iot hub device-identity connection-string show --device-id [device_id] --hub-name [hub_name]
    
  2. Dari menu Tools di Visual Studio, pilih Azure IoT Edge Tools>Setup IoT Edge Simulator.

  3. Tempelkan string koneksi dan pilih OK.

Catatan

Anda perlu mengikuti langkah-langkah ini hanya sekali di komputer pengembangan Anda karena hasilnya secara otomatis diterapkan ke semua solusi Azure IoT Edge berikutnya. Prosedur ini dapat diikuti lagi jika Anda perlu mengubah ke string koneksi yang berbeda.

Membangun dan men-debug satu modul

Biasanya, Anda ingin menguji dan men-debug setiap modul sebelum menjalankannya dalam seluruh solusi dengan beberapa modul. Alat simulator IoT Edge memungkinkan Anda menjalankan satu modul dalam isolasi mengirim pesan melalui port 53000.

  1. Di Penjelajah Solusi, pilih dan sorot folder proyek modul (misalnya, IotEdgeModule1). Atur modul kustom sebagai proyek startup. Pilih Project>Set sebagai StartUp Project dari menu.

  2. Tekan F5 atau pilih tombol toolbar jalankan untuk menjalankan simulator IoT Edge untuk satu modul. Mungkin perlu waktu 10 hingga 20 detik pada awalnya.

    Cuplikan layar cara menjalankan modul.

  3. Anda akan melihat jendela aplikasi konsol .NET Core muncul jika modul telah berhasil diinisialisasi.

  4. Tetapkan titik henti untuk memeriksa modul.

    • Jika mengembangkan di C#, atur titik henti dalam PipeMessage() fungsi di ModuleBackgroundService.cs.
    • Jika menggunakan C, setel titik henti dalam fungsi InputQueue1Callback() di main.c.
  5. Uji modul dengan mengirim pesan. Saat Anda men-debug satu modul, simulator mendengarkan port default 53000 untuk pesan. Untuk mengirim pesan ke modul Anda, jalankan perintah curl berikut dari shell perintah seperti Git Bash atau WSL Bash.

    curl --header "Content-Type: application/json" --request POST --data '{"inputName": "input1","data":"hello world"}' http://localhost:53000/api/v1/messages
    

    Jika Anda mendapatkan kesalahan kurung kurawal/tutup kurung yang tidak cocok di URL, coba perintah berikut:

    curl --header "Content-Type: application/json" --request POST --data "{\"inputName\": \"input1\", \"data\": \"hello world\"}"  http://localhost:53000/api/v1/messages
    

    Screenshot konsol output, proyek Visual Studio, dan jendela Bash.

    Titik henti harus dipicu. Anda dapat menonton variabel di jendela Visual Studio Locals, yang ditemukan saat debugger berjalan. Pergi ke Debug>Windows>Locals.

    Di Bash atau shell Anda, Anda akan melihat sebuah {"message":"accepted"} konfirmasi.

    Di konsol .NET, Anda akan melihat:

    IoT Hub module client initialized.
    Received message: 1, Body: [hello world]
    
  6. Tekan Ctrl + F5 atau pilih tombol stop untuk menghentikan debugging.

Membangun dan men-debug beberapa modul

Setelah selesai mengembangkan satu modul, Anda mungkin ingin menjalankan dan melakukan debug seluruh solusi dengan beberapa modul. Alat simulasi IoT Edge memungkinkan Anda menjalankan semua modul yang ditentukan dalam manifes penyebaran termasuk simulasi edgeHub untuk perutean pesan. Dalam contoh ini, Anda menjalankan dua modul kustom dan modul sensor suhu yang disimulasikan. Pesan dari modul sensor suhu yang disimulasikan dirutekan ke setiap modul kustom.

  1. Di Penjelajah Solusi, tambahkan modul kedua ke solusi dengan mengklik kanan folder proyek utama. Pada menu, pilih Tambahkan> Modul IoT Edge Baru.

    Screenshot tentang cara menambahkan 'Modul IoT Edge Baru' dari menu.

  2. Di jendela Add module beri nama modul baru Anda dan ganti bagian localhost:5000 URL repositori dengan server login Azure Container Registry Anda, seperti yang Anda lakukan sebelumnya.

  3. Buka file deployment.debug.template.json untuk melihat bahwa modul baru telah ditambahkan di bagian modul . Rute baru juga ditambahkan ke bagian routes di EdgeHub untuk mengirim pesan dari modul baru ke IoT Hub. Untuk mengirim data dari sensor suhu yang disimulasikan ke modul baru, tambahkan rute lain dengan baris berikut .JSON Ganti <NewModuleName> (di dua tempat) dengan nama modul Anda sendiri.

    "sensorTo<NewModuleName>": "FROM /messages/modules/SimulatedTemperatureSensor/outputs/temperatureOutput INTO BrokeredEndpoint(\"/modules/<NewModuleName>/inputs/input1\")"
    
  4. Klik kanan proyek utama (misalnya, AzureIotEdgeApp1) dan pilih Jadikan sebagai Proyek StartUp. Dengan mengatur proyek utama sebagai proyek startup, semua modul dalam solusi berjalan. Ini termasuk kedua modul yang Anda tambahkan ke solusi, modul sensor suhu yang disimulasikan, dan hub Edge yang disimulasikan.

  5. Tekan F5 atau pilih tombol jalankan toolbar untuk menjalankan solusi. Mungkin perlu waktu 10 hingga 20 detik pada awalnya. Pastikan Anda tidak memiliki kontainer Docker lain yang berjalan yang mungkin mengikat port yang Anda butuhkan untuk proyek ini.

  6. Anda akan melihat dua jendela aplikasi konsol .NET Core muncul satu untuk setiap modul.

  7. Atur titik henti untuk memeriksa modul.

    • Jika mengembangkan di C#, atur titik henti dalam PipeMessage() fungsi di ModuleBackgroundService.cs.
    • Jika menggunakan C, setel titik henti dalam fungsi InputQueue1Callback() di main.c.
  8. Buat titik henti di setiap modul lalu tekan F5 untuk menjalankan dan men-debug beberapa modul secara bersamaan. Anda akan melihat beberapa jendela aplikasi konsol .NET Core, dengan setiap jendela mewakili modul yang berbeda.

    Screenshot dari Visual Studio dengan dua konsol keluaran.

  9. Tekan Ctrl + F5 atau pilih tombol stop untuk menghentikan debugging.

Membangun dan mendorong gambar ke registri

Setelah Mengembangkan dan men-debug modul, buat dan dorong gambar modul ke Azure Container Registry Anda. Kemudian sebarkan modul ke perangkat IoT Edge Anda.

  1. Atur proyek IoT Edge utama sebagai proyek start-up, bukan salah satu modul individual.

  2. Pilih Debug atau Rilis sebagai konfigurasi yang akan dibangun untuk gambar modul Anda.

    Catatan

    Saat Anda memilih Debug, Visual Studio menggunakan Dockerfile.(amd64|windows-amd64).debug untuk membangun gambar Docker. Ini termasuk debugger baris perintah .NET Core VSDBG dalam gambar kontainer Anda. Untuk modul IoT Edge siap produksi, gunakan konfigurasi Release, yang menggunakan Dockerfile.(amd64|windows-amd64) tanpa VSDBG.

  3. Jika Anda menggunakan registri privat seperti Azure Container Registry (ACR), gunakan perintah Docker berikut untuk masuk. Dapatkan nama pengguna dan kata sandi dari halaman Kunci Akses registri Anda di portal Azure.

    docker login <ACR login server>
    
  4. Tambahkan informasi masuk Azure Container Registry ke pengaturan runtime dalam file deployment.debug.template.json. Anda dapat menambahkan kredensial registri ke file Anda .env (paling aman) atau menambahkannya langsung ke file Anda deployment.debug.template.json .

    Tambahkan kredensial ke file Anda .env :

    Di Penjelajah Solusi, pilih tombol toolbar Tampungkan Semua File. File .env muncul. Tambahkan nama pengguna dan kata sandi Azure Container Registry Anda ke file .env Anda. Temukan kredensial ini di halaman kunci Akses Azure Container Registry Anda di portal Azure.

    Screenshot tombol yang menampilkan semua file di Penjelajah Solusi.

        DEFAULT_RT_IMAGE=1.6
        CONTAINER_REGISTRY_USERNAME_myregistry=<my-registry-name>
        CONTAINER_REGISTRY_PASSWORD_myregistry=<my-registry-password>
    

    Menambahkan kredensial langsung ke deployment.debug.template.json

    Jika Anda ingin menambahkan kredensial langsung ke templat penyebaran, ganti tempat penampung dengan nama pengguna, kata sandi, dan nama registri admin ACR Anda.

          "settings": {
            "minDockerVersion": "v1.25",
            "loggingOptions": "",
            "registryCredentials": {
              "registry1": {
                "username": "<username>",
                "password": "<password>",
                "address": "<registry name>.azurecr.io"
              }
            }
          }
    

    Catatan

    Artikel ini menggunakan info masuk admin untuk Azure Container Registry, yang nyaman untuk skenario pengembangan dan pengujian. Saat Anda siap untuk skenario produksi, kami merekomendasikan opsi autentikasi dengan hak paling rendah seperti perwakilan layanan. Untuk informasi selengkapnya, lihat Kelola akses ke registri kontainer Anda.

  5. Jika Anda menggunakan registri lokal, jalankan registri lokal.

  6. Terakhir, di Penjelajah Solusi, klik kanan folder proyek utama dan pilih Bangun dan Push Modul IoT Edge untuk membangun dan mengunggah citra Docker untuk setiap modul. Ini mungkin memakan waktu satu menit. Saat Anda melihat Finished Build and Push IoT Edge Modules. di konsol Output Visual Studio, Anda selesai.

Menyebarkan solusi

Sekarang setelah Anda membangun dan mengunggah image modul ke Registry Kontainer Azure Anda, terapkan solusi ke perangkat IoT Edge Anda. Anda sudah memiliki templat manifes penyebaran dalam tutorial ini. Buat manifes penyebaran darinya, lalu gunakan perintah Azure CLI untuk menyebarkan modul Anda ke perangkat IoT Edge Anda di Azure.

  1. Klik kanan pada proyek utama Anda di Visual Studio Penjelajah Solusi dan pilih Buat Penyebaran untuk IoT Edge.

    Cuplikan layar lokasi item menu 'hasilkan penyebaran'.

  2. Buka folder proyek utama Visual Studio lokal Anda dan lihat di folder config. Jalur file mungkin terlihat seperti ini: C:\Users\<YOUR-USER-NAME>\source\repos\<YOUR-IOT-EDGE-PROJECT-NAME>\config. Di sini Anda menemukan manifes penyebaran yang dihasilkan seperti deployment.amd64.debug.json.

  3. Buka file Anda deployment.amd64.debug.json dan pastikan edgeHub versi skema ditetapkan ke 1.2.

     "$edgeHub": {
         "properties.desired": {
           "schemaVersion": "1.2",
           "routes": {
             "IotEdgeModule2022ToIoTHub": "FROM /messages/modules/IotEdgeModule2022/outputs/* INTO $upstream",
             "sensorToIotEdgeModule2022": "FROM /messages/modules/SimulatedTemperatureSensor/outputs/temperatureOutput INTO BrokeredEndpoint(\"/modules/IotEdgeModule2022/inputs/input1\")",
             "IotEdgeModule2022bToIoTHub": "FROM /messages/modules/IotEdgeModule2022b/outputs/* INTO $upstream"
           },
           "storeAndForwardConfiguration": {
             "timeToLiveSecs": 7200
           }
         }
       }
    

    Petunjuk / Saran

    Templat penyebaran untuk Visual Studio 2022 memerlukan versi skema 1.2. Jika Anda perlu menjadikannya 1.1 atau 1.0, tunggu hingga penyebaran selesai dihasilkan (jangan ubah di deployment.debug.template.json). Proses penyebaran menghasilkan skema 1.2 dengan pengaturan bawaan. Namun, Anda dapat mengubah deployment.amd64.debug.json secara manual, manifes yang dihasilkan, jika diperlukan sebelum menyebarkannya ke Azure.

    Penting

    Setelah perangkat IoT Edge Anda disebarkan, perangkat saat ini tidak akan ditampilkan dengan benar di portal Azure dengan skema versi 1.2 (versi 1.1 tidak apa-apa). Namun, ini tidak akan memengaruhi perangkat Anda, karena masih terhubung dalam IoT Hub dan dapat dikomunikasikan kapan saja menggunakan Azure CLI.

    Screenshot kesalahan di portal Azure pada halaman perangkat IoT Edge.

  4. Sekarang mari kita sebarkan manifes kita dengan perintah Azure CLI. Buka Prompt Perintah Visual Studio Developer dan ubah ke direktori config.

        cd config
    
  5. Sebarkan manifes untuk perangkat IoT Edge Anda ke IoT Hub. Perintah mengonfigurasi perangkat untuk menggunakan modul yang dikembangkan dalam solusi Anda. Manifes penyebaran dibuat pada langkah sebelumnya dan disimpan di folder konfigurasi . Dari folder konfigurasi Anda, jalankan perintah penyebaran berikut. [device id]Ganti , [hub name], dan [file path] dengan nilai Anda. Jika ID perangkat IoT Edge tidak ada di IoT Hub, ID perangkat harus dibuat.

        az iot edge set-modules --device-id [device id] --hub-name [hub name] --content [file path]
    

    Misalnya, perintah Anda mungkin terlihat seperti ini:

    az iot edge set-modules --device-id my-device-name --hub-name my-iot-hub-name --content deployment.amd64.debug.json
    
  6. Setelah menjalankan perintah, Anda akan melihat konfirmasi penyebaran yang dicetak di JSON di prompt perintah Anda.

Bangun citra Docker modul

Setelah Anda mengembangkan modul, buat gambar modul untuk disimpan di registri kontainer untuk penyebaran ke perangkat IoT Edge Anda.

Gunakan Dockerfile modul untuk membangun citra Docker modul.

docker build --rm -f "<DockerFilePath>" -t <ImageNameAndTag> "<ContextPath>" 

Misalnya, jika shell perintah Anda ada di direktori proyek dan nama modul Anda IotEdgeModule1, gunakan perintah berikut untuk membangun gambar untuk registri lokal atau registri kontainer Azure:

# Build the image for the local registry

docker build --rm -f "./IotEdgeModule1/Dockerfile.amd64.debug" -t localhost:5000/iotedgemodule1:0.0.1-amd64 "./IotEdgeModule1"

# Or build the image for an Azure Container Registry

docker build --rm -f "./IotEdgeModule1/Dockerfile.amd64.debug" -t myacr.azurecr.io/iotedgemodule1:0.0.1-amd64 "./IotEdgeModule1"

Mendorong gambar Docker modul

Dorong gambar modul Anda ke registri lokal atau registri kontainer.

docker push <ImageName>

Contohnya:

# Push the Docker image to the local registry

docker push localhost:5000/iotedgemodule1:0.0.1-amd64

# Or push the Docker image to an Azure Container Registry
az acr login --name myacr
docker push myacr.azurecr.io/iotedgemodule1:0.0.1-amd64

Sebarkan modul ke perangkat IoT Edge.

Di Visual Studio, buka file manifes penyebaran deployment.debug.template.json0 di proyek utama. Manifest deployment adalah dokumen JSON yang menjelaskan modul yang dikonfigurasi pada perangkat IoT Edge yang ditargetkan. Sebelum penyebaran, Anda perlu memperbarui kredensial Azure Container Registry, gambar modul, dan nilai createOptions yang tepat. Untuk informasi selengkapnya tentang nilai createOption, lihat Cara mengonfigurasi opsi pembuatan kontainer untuk modul IoT Edge.

  1. Jika Anda menggunakan Azure Container Registry untuk menyimpan gambar modul, Anda perlu menambahkan kredensial ke deployment.debug.template.json di pengaturan edgeAgent. Contohnya,

    "modulesContent": {
    "$edgeAgent": {
      "properties.desired": {
        "schemaVersion": "1.1",
        "runtime": {
          "type": "docker",
          "settings": {
            "minDockerVersion": "v1.25",
            "loggingOptions": "",
            "registryCredentials": {
              "myacr": {
                "username": "myacr",
                "password": "<your_acr_password>",
                "address": "myacr.azurecr.io"
              }
            }
          }
        },
    //...
    
  2. Ganti nilai properti gambar dengan nama gambar modul yang Anda dorong ke registri. Misalnya, jika Anda mengunggah gambar yang ditandai myacr.azurecr.io/iotedgemodule1:0.0.1-amd64 untuk modul kustom IotEdgeModule1, ganti nilai properti gambar dengan nilai tag tersebut.

  3. Tambahkan atau ganti nilai createOptions dengan konten yang diubah menjadi string untuk setiap sistem dan modul kustom dalam templat penyebaran.

    Misalnya, pengaturan image dan createOptions IotEdgeModule1 akan mirip dengan yang berikut ini:

    "IotEdgeModule1": {
    "version": "1.0.0",
    "type": "docker",
    "status": "running",
    "restartPolicy": "always",
    "settings": {
        "image": "myacr.azurecr.io/iotedgemodule1:0.0.1-amd64",
        "createOptions": "{\"HostConfig\":{\"PortBindings\":{\"5671/tcp\":[{\"HostPort\":\"5671\"}],\"8883/tcp\":[{\"HostPort\":\"8883\"}],\"443/tcp\":[{\"HostPort\":\"443\"}]}}}"
    }
    

Gunakan perintah IoT Edge Azure CLI set-modules untuk menyebarkan modul ke Azure IoT Hub. Misalnya, untuk menyebarkan modul yang ditentukan dalam file deployment.debug.amd64.json ke IoT Hub my-iot-hub untuk perangkat IoT Edge my-device, jalankan perintah berikut:

az iot edge set-modules --hub-name my-iot-hub --device-id my-device --content ./deployment.debug.template.json --login "HostName=my-iot-hub.azure-devices.net;SharedAccessKeyName=iothubowner;SharedAccessKey=<SharedAccessKey>"

Petunjuk / Saran

Temukan IoT Hub string koneksi Anda di portal Azure di bawah pengaturan Azure IoT Hub >Keamanan>Kebijakan akses berbagi.

Mengonfirmasi penyebaran ke perangkat Anda

Untuk memeriksa apakah modul IoT Edge Anda disebarkan ke Azure, masuk ke perangkat Anda (atau komputer virtual), misalnya melalui SSH atau Azure Bastion, dan jalankan perintah daftar IoT Edge.

   iotedge list

Anda akan melihat daftar modul yang berjalan di perangkat atau komputer virtual Anda.

   NAME                        STATUS           DESCRIPTION      CONFIG
   SimulatedTemperatureSensor  running          Up a minute      mcr.microsoft.com/azureiotedge-simulated-temperature-sensor:1.0
   edgeAgent                   running          Up a minute      mcr.microsoft.com/azureiotedge-agent:1.6
   edgeHub                     running          Up a minute      mcr.microsoft.com/azureiotedge-hub:1.6
   IotEdgeModule1              running          Up a minute      myacr.azurecr.io/iotedgemodule1:0.0.1-amd64.debug
   myIotEdgeModule2            running          Up a minute      myacr.azurecr.io/myiotedgemodule2:0.0.1-amd64.debug

Debug menggunakan Docker Remote SSH

Mesin Docker dan Moby mendukung koneksi SSH ke kontainer yang memungkinkan Anda melampirkan dan men-debug kode pada perangkat jarak jauh menggunakan Visual Studio.

  1. Terhubung secara jarak jauh ke Docker memerlukan hak akses root. Ikuti langkah-langkah dalam Mengelola docker sebagai pengguna non-root untuk mengizinkan koneksi ke daemon Docker di perangkat jarak jauh. Setelah selesai menelusuri kesalahan, Anda mungkin ingin menghapus pengguna Anda dari grup Docker.

  2. Ikuti langkah-langkah untuk menggunakan Visual Studio untuk Attach ke proses yang berjalan pada kontainer Docker di perangkat jarak jauh Anda.

  3. Di Visual Studio, atur titik henti dalam modul kustom Anda.

  4. Ketika breakpoint tercapai, Anda dapat memeriksa variabel, menelusuri kode, dan meng-debug modul Anda.

    Screenshot Visual Studio yang terhubung ke kontainer Docker jarak jauh pada perangkat yang dijeda pada breakpoint.

Langkah berikutnya