Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Mengatur dan memecahkan masalah AWS IoT Greengrass dengan perangkat klien
Marouane Sefiani dan Akalanka De Silva, Amazon Web Services
Ringkasan
AWS IoT Greengrass adalah runtime edge open-source dan layanan cloud untuk membangun, menerapkan, dan mengelola perangkat lunak Internet of Things (IoT) pada perangkat edge. Kasus penggunaan untuk AWS IoT Greengrass meliputi:
Rumah pintar tempat gateway AWS IoT Greengrass digunakan sebagai hub untuk otomatisasi rumah
Pabrik pintar tempat AWS IoT Greengrass dapat memfasilitasi konsumsi dan pemrosesan data lokal dari lantai toko
AWS IoT Greengrass dapat bertindak sebagai titik akhir koneksi MQTT yang aman dan terautentikasi untuk perangkat edge lainnya (juga dikenal sebagai perangkat klien), yang biasanya akan terhubung langsung ke AWS IoT Core. Kemampuan ini berguna ketika perangkat klien tidak memiliki akses jaringan langsung ke titik akhir AWS IoT Core.
Anda dapat mengatur AWS IoT Greengrass untuk digunakan dengan perangkat klien untuk kasus penggunaan berikut:
Untuk perangkat klien untuk mengirim data ke AWS IoT Greengrass
Untuk AWS IoT Greengrass untuk meneruskan data ke AWS IoT Core
Untuk memanfaatkan fitur engine aturan AWS IoT Core yang canggih
Kemampuan ini memerlukan penginstalan dan konfigurasi komponen berikut pada perangkat AWS IoT Greengrass:
Pialang MQTT
Jembatan MQTT
Otentikasi perangkat klien
Detektor IP
Selain itu, pesan yang dipublikasikan dari perangkat klien harus dalam format JSON atau format Protocol Buffers (protobuf)
Pola ini menjelaskan cara menginstal dan mengkonfigurasi komponen yang diperlukan ini, dan memberikan tips pemecahan masalah dan praktik terbaik.
Prasyarat dan batasan
Prasyarat
Akun AWS yang aktif
Dua perangkat klien yang menjalankan Python 3.7 atau yang lebih baru
Satu perangkat inti yang menjalankan Java Runtime Environment (JRE) versi 8 atau yang lebih baru, dan Amazon Corretto
11 atau OpenJDK 11
Batasan
Anda harus memilih Wilayah AWS tempat AWS IoT Core tersedia. Untuk daftar Wilayah AWS IoT Core saat ini, lihat AWS Services by
Region. Perangkat inti harus memiliki setidaknya 172 MB RAM dan 512 MB ruang disk.
Arsitektur
Diagram berikut menunjukkan arsitektur solusi untuk pola ini.

Arsitekturnya meliputi:
Dua perangkat klien. Setiap perangkat berisi kunci pribadi, sertifikat perangkat, dan sertifikat otoritas sertifikat root (CA). AWS IoT Device SDK, yang berisi klien MQTT, juga diinstal pada setiap perangkat klien.
Perangkat inti yang memiliki AWS IoT Greengrass yang digunakan dengan komponen berikut:
Pialang MQTT
Jembatan MQTT
Otentikasi perangkat klien
Detektor IP
Arsitektur ini mendukung skenario berikut:
Perangkat klien dapat menggunakan klien MQTT mereka untuk berkomunikasi satu sama lain melalui broker MQTT perangkat inti.
Perangkat klien juga dapat berkomunikasi dengan AWS IoT Core di cloud melalui broker MQTT perangkat inti dan jembatan MQTT.
AWS IoT Core di cloud dapat mengirim pesan ke perangkat klien melalui klien pengujian MQTT dan jembatan MQTT perangkat inti dan broker MQTT.
Untuk informasi selengkapnya tentang komunikasi antara perangkat klien dan perangkat inti, lihat bagian Informasi tambahan.
Alat
Layanan AWS
AWS IoT Greengrass adalah layanan runtime dan cloud edge Internet of Things (IoT) open source yang membantu Anda membangun, menerapkan, dan mengelola aplikasi IoT di perangkat Anda.
AWS IoT Core menyediakan komunikasi dua arah yang aman untuk perangkat yang terhubung ke internet agar tersambung ke AWS Cloud.
AWS IoT Device SDK
adalah kit pengembangan perangkat lunak yang mencakup pustaka sumber terbuka, panduan pengembang dengan sampel, dan panduan porting sehingga Anda dapat membuat produk atau solusi IoT inovatif pada platform perangkat keras pilihan Anda. AWS Identity and Access Management (IAM) membantu Anda mengelola akses ke sumber daya AWS dengan aman dengan mengontrol siapa yang diautentikasi dan diberi wewenang untuk menggunakannya.
Praktik terbaik
Muatan pesan dari perangkat klien harus dalam format JSON atau Protobuf untuk memanfaatkan fitur-fitur canggih dari mesin aturan AWS IoT Core, seperti transformasi dan tindakan bersyarat.
Konfigurasikan jembatan MQTT untuk memungkinkan komunikasi dua arah.
Konfigurasikan dan terapkan komponen detektor IP di AWS IoT Greengrass untuk memastikan bahwa alamat IP perangkat inti disertakan dalam bidang nama alternatif subjek (SAN) sertifikat broker MQTT.
Epik
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Siapkan AWS IoT Greengrass di perangkat inti Anda. | Instal perangkat lunak AWS IoT Greengrass Core dengan mengikuti petunjuk di panduan pengembang. | AWS IoT Greengrass |
Periksa status instalasi Anda. | Gunakan perintah berikut untuk memeriksa status layanan AWS IoT Greengrass di perangkat inti Anda:
Output yang diharapkan dari perintah ini adalah:
| AWS Umum |
Siapkan kebijakan IAM dan lampirkan ke peran layanan Greengrass. |
| AWS Umum |
Konfigurasikan dan terapkan komponen yang diperlukan di perangkat inti AWS IoT Greengrass. | Konfigurasikan dan terapkan komponen-komponen berikut:
| AWS IoT Greengrass |
Konfirmasikan bahwa jembatan MQTT memungkinkan komunikasi dua arah. | Untuk menyampaikan pesan MQTT antara perangkat klien dan AWS IoT Core, konfigurasikan dan terapkan komponen jembatan MQTT dan tentukan topik yang akan disampaikan. Berikut ini contohnya:
| AWS IoT Greengrass |
Konfirmasikan bahwa komponen autentikasi memungkinkan perangkat klien untuk terhubung dan menerbitkan atau berlangganan topik. |
| AWS IoT Greengrass |
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Instal AWS IoT Device SDK. | Instal AWS IoT Device SDK pada perangkat klien. Untuk daftar lengkap bahasa yang didukung dan yang terkait SDKs, lihat dokumentasi AWS IoT Core. Misalnya, AWS IoT Device SDK untuk Python SDK terletak di. GitHub
Atau, Anda dapat menginstal SDK dari repositori sumber:
| AWS IoT Umum |
Ciptakan sesuatu. |
| AWS IoT Core |
Unduh sertifikat CA dari perangkat inti Greengrass. | Jika Anda mengharapkan perangkat inti Greengrass berfungsi di lingkungan offline, Anda harus membuat sertifikat CA inti Greengrass tersedia untuk perangkat klien sehingga dapat memverifikasi sertifikat broker MQTT (yang dikeluarkan oleh CA inti Greengrass). Karena itu, penting untuk mendapatkan salinan sertifikat ini. Gunakan salah satu pendekatan berikut untuk mengunduh sertifikat CA:
| AWS Umum |
Salin kredensi di perangkat klien. | Salin sertifikat CA inti Greengrass, sertifikat perangkat, dan kunci pribadi di perangkat klien. | AWS Umum |
Kaitkan perangkat klien dengan perangkat inti. | Mengaitkan perangkat klien dengan perangkat inti sehingga mereka dapat menemukan perangkat inti. Perangkat klien kemudian dapat menggunakan Greengrass discovery API untuk mengambil informasi konektivitas dan sertifikat untuk perangkat inti terkait mereka. Untuk informasi selengkapnya, lihat Mengaitkan perangkat klien dalam dokumentasi AWS IoT Greengrass.
Perangkat klien yang telah Anda kaitkan sekarang dapat menggunakan Greengrass penemuan API untuk menemukan perangkat inti ini. | AWS IoT Greengrass |
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Kirim data dari satu perangkat klien ke perangkat klien lain. | Gunakan klien MQTT di perangkat Anda untuk mempublikasikan pesan tentang topik tersebut. | AWS Umum |
Kirim data dari perangkat klien ke AWS IoT Core. | Gunakan klien MQTT di perangkat Anda untuk mempublikasikan pesan tentang topik tersebut. | AWS Umum |
Kirim pesan dari AWS IoT Core ke perangkat klien. | Pada halaman klien pengujian MQTT, di tab Publikasikan ke topik, di bidang Nama topik, masukkan nama topik pesan Anda. Dalam contoh ini, gunakan | AWS Umum |
Pemecahan Masalah
| Isu | Solusi |
|---|---|
Tidak dapat memverifikasi kesalahan sertifikat server | Kesalahan ini terjadi ketika klien MQTT tidak dapat memverifikasi sertifikat yang disajikan oleh broker MQTT selama jabat tangan TLS. Alasan paling umum adalah bahwa klien MQTT tidak memiliki sertifikat CA. Ikuti langkah-langkah ini untuk memastikan bahwa sertifikat CA diberikan kepada klien MQTT.
|
Tidak dapat memverifikasi kesalahan nama server | Kesalahan ini terjadi ketika klien MQTT tidak dapat memverifikasi bahwa itu terhubung ke server yang benar. Alasan paling umum adalah bahwa alamat IP perangkat Greengrass tidak terdaftar di bidang SAN sertifikat. Ikuti petunjuk di solusi sebelumnya untuk mendapatkan sertifikat broker MQTT dan verifikasi bahwa bidang SAN berisi alamat IP perangkat AWS IoT Greengrass, seperti yang dijelaskan di bagian Informasi tambahan. Jika tidak, konfirmasikan bahwa komponen detektor IP diinstal dengan benar dan restart perangkat inti. |
Tidak dapat memverifikasi nama server hanya saat menghubungkan dari perangkat klien yang disematkan | Mbed TLS, yang merupakan pustaka TLS populer yang digunakan dalam perangkat tertanam, saat ini mendukung verifikasi nama DNS hanya di bidang SAN sertifikat, seperti yang ditunjukkan dalam kode perpustakaan Mbed TLS. Karena perangkat inti tidak memiliki nama domain sendiri dan bergantung pada alamat IP, klien TLS yang menggunakan Mbed TLS akan gagal verifikasi nama server selama jabat tangan TLS, menyebabkan kegagalan koneksi. Kami menyarankan Anda menambahkan verifikasi alamat IP SAN ke pustaka Mbed TLS Anda di fungsi x509_crt_check_san |
Sumber daya terkait
Menerapkan Perangkat Klien Lokal dengan AWS IoT Greengrass
(postingan blog AWS)
Informasi tambahan
Bagian ini memberikan informasi tambahan tentang komunikasi antara perangkat klien dan perangkat inti.
Broker MQTT mendengarkan port 8883 di perangkat inti untuk upaya koneksi klien TLS. Ilustrasi berikut menunjukkan contoh sertifikat server broker MQTT.

Sertifikat contoh menampilkan rincian berikut:
Sertifikat ini dikeluarkan oleh AWS IoT Greengrass Core CA, yang bersifat lokal dan khusus untuk perangkat inti; artinya, ia bertindak sebagai CA lokal.
Sertifikat ini secara otomatis diputar setiap minggu oleh komponen autentikasi klien seperti yang ditunjukkan pada ilustrasi berikut. Anda dapat mengatur interval ini dalam konfigurasi komponen autentikasi klien.

Nama alternatif subjek (SAN) memainkan peran penting dalam verifikasi nama server di ujung klien TLS. Ini membantu klien TLS memastikan bahwa itu terhubung ke server yang benar dan membantu menghindari man-in-the-middle serangan selama pengaturan sesi TLS. Dalam contoh sertifikat, bidang SAN menunjukkan bahwa server ini mendengarkan di localhost (soket domain Unix lokal), dan antarmuka jaringan memiliki alamat IP 192.168.1.12.
Klien TLS menggunakan bidang SAN dalam sertifikat untuk memverifikasi bahwa itu terhubung ke server yang sah selama verifikasi server. Sebaliknya, selama jabat tangan TLS khas antara server HTTP dan browser, nama domain di bidang common name (CN) atau bidang SAN digunakan untuk memeriksa silang domain yang sebenarnya terhubung ke browser selama proses verifikasi server. Jika perangkat inti tidak memiliki nama domain, alamat IP yang disertakan dalam bidang SAN memiliki tujuan yang sama. Untuk informasi selengkapnya, lihat bagian Nama Alternatif Subjek
Komponen detektor IP di AWS IoT Greengrass memastikan bahwa alamat IP yang benar disertakan dalam bidang SAN sertifikat.
Sertifikat dalam contoh ditandatangani oleh perangkat AWS IoT Greengrass yang bertindak sebagai CA lokal. Klien TLS (klien MQTT) tidak mengetahui CA ini, jadi kami harus memberikan sertifikat CA yang terlihat seperti berikut ini.
