Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
AWS IoT Device DefenderDemo
penting
Demo ini di-host di repositori Amazon-freertos yang tidak digunakan lagi. Kami menyarankan Anda mulai di sini ketika Anda membuat proyek baru. Jika Anda sudah memiliki proyek FreeRTOS yang sudah ada berdasarkan repositori Amazon-freertos yang sekarang tidak digunakan lagi, lihatPanduan Migrasi Repositori Github Amazon-freertos.
Pengantar
Demo ini menunjukkan cara menggunakan libraryAWS IoT Device Defender untuk terhubung AWS IoT Device Defender. Demo menggunakan pustaka CoremQTT untuk membuat koneksi MQTT melalui TLS (otentikasi bersama) ke BrokerAWS IoT MQTT dan pustaka CoreJSON untuk memvalidasi dan mengurai tanggapan yang diterima dariAWS IoT Device Defender layanan. Demo menunjukkan cara membuat laporan berformat JSON menggunakan metrik yang dikumpulkan dari perangkat, dan cara mengirimkan laporan yang dibuat keAWS IoT Device Defender layanan. Demo juga menunjukkan cara mendaftarkan fungsi callback dengan pustaka CoreMQTT untuk menangani respons dariAWS IoT Device Defender layanan untuk mengonfirmasi apakah laporan terkirim diterima atau ditolak.
catatan
Untuk mengatur dan menjalankan demo FreeRTOS, ikuti langkah-langkah di dalamnyaMemulai dengan FreeRTOS.
Fungsionalitas
Demo ini membuat tugas aplikasi tunggal yang menunjukkan cara mengumpulkan metrik, membuat laporan pembela perangkat dalam format JSON, dan mengirimkannya keAWS IoT Device Defender layanan melalui koneksi MQTT yang aman ke BrokerAWS IoT MQTT. Demo ini mencakup metrik jaringan standar serta metrik khusus. Untuk metrik khusus, demo mencakup:
-
Metrik bernama
task_numbers
"" yang merupakan daftar ID tugas FreeRTOS. Jenis metrik ini adalah “daftar angka”. -
Metrik bernama
stack_high_water_mark
"" yang merupakan tanda air tinggi tumpukan untuk tugas aplikasi demo. Jenis metrik ini adalah “angka”.
Cara kami mengumpulkan metrik jaringan tergantung pada tumpukan TCP/IP yang digunakan. Untuk FreeRTOS+TCP dan konfigurasi lwIP yang didukung, kami menyediakan implementasi pengumpulan metrik yang mengumpulkan metrik nyata dari perangkat dan mengirimkannya dalamAWS IoT Device Defender laporan. Anda dapat menemukan implementasi untuk FreeRtos+TCP
Untuk papan yang menggunakan tumpukan TCP/IP lainnya, kami menyediakan definisi rintisan dari fungsi pengumpulan metrik yang mengembalikan angka nol untuk semua metrik jaringan. Menerapkan fungsi
untuk tumpukan jaringan Anda untuk mengirim metrik nyata. File ini juga tersedia di situs GitHubfreertos
/demos/device_defender_for_aws/metrics_collector/stub/metrics_collector.c
Untuk ESP32, konfigurasi LWip default tidak menggunakan penguncian inti dan oleh karena itu demo akan menggunakan metrik berduri. Jika Anda ingin menggunakan implementasi koleksi metrik LWip referensi, tentukan makro berikut dilwiopts.h
:
#define LINK_SPEED_OF_YOUR_NETIF_IN_BPS 0 #define LWIP_TCPIP_CORE_LOCKING 1 #define LWIP_STATS 1 #define MIB2_STATS 1
Berikut ini adalah sebuah contoh output.
Jika papan Anda tidak menggunakan FreeRtos+TCP atau konfigurasi lwIP yang didukung, output akan terlihat seperti berikut.
Kode sumber demo ada di unduhan Anda di
direktori atau di GitHubfreertos
/demos/device_defender_for_aws/
BerlanggananAWS IoT Device Defender topik
Fungsi subscribeToDefenderTopikDEFENDER_API_JSON_ACCEPTED
untuk membangun string topik di mana tanggapan untuk laporan pembela perangkat yang diterima diterima. Ini menggunakan makroDEFENDER_API_JSON_REJECTED
untuk membangun string topik di mana tanggapan untuk laporan pembela perangkat yang ditolak akan diterima.
Mengumpulkan metrik perangkat
collectDeviceMetricsmetrics_collector.h
. Metrik yang dikumpulkan adalah jumlah byte dan paket yang dikirim dan diterima, port TCP terbuka, port UDP terbuka, dan koneksi TCP yang ditetapkan.
MenghasilkanAWS IoT Device Defender laporan
Fungsi generateDeviceMetricsLaporanreport_builder.h
. Fungsi itu mengambil metrik jaringan dan buffer, membuat dokumen JSON dalam format seperti yang diharapkan olehAWS IoT Device Defender dan menulisnya ke buffer yang disediakan. Format dokumen JSON yang diharapkanAWS IoT Device Defender ditentukan dalam metrik sisi perangkat di PanduanAWS IoT Pengembang.
MenerbitkanAWS IoT Device Defender laporan
AWS IoT Device DefenderLaporan ini dipublikasikan pada topik MQTT untuk menerbitkanAWS IoT Device Defender laporan JSON. Laporan ini dibuat menggunakan makroDEFENDER_API_JSON_PUBLISH
, seperti yang ditunjukkan dalam cuplikan kode
Callback untuk menangani respons
Fungsi PublishCallbackDefender_MatchTopic
API dariAWS IoT Device Defender perpustakaan untuk memeriksa apakah pesan MQTT yang masuk berasal dariAWS IoT Device Defender layanan. Jika pesan berasal dariAWS IoT Device Defender layanan, pesan akan mengurai respons JSON yang diterima dan mengekstrak ID laporan dalam respons. ID laporan kemudian diverifikasi sama dengan yang dikirim dalam laporan.