Pialang MQTT 5 (EMQX) - AWS IoT Greengrass

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

Pialang MQTT 5 (EMQX)

Komponen broker EMQX MQTT (aws.greengrass.clientdevices.mqtt.EMQX) menangani pesan MQTT antara perangkat klien dan perangkat inti Greengrass. Komponen ini menyediakan versi modifikasi dari broker EMQX MQTT 5.0. Menyebarkan broker MQTT ini untuk menggunakan fitur MQTT 5 dalam komunikasi antara perangkat klien dan perangkat inti. Untuk informasi lebih lanjut tentang cara memilih broker MQTT, lihat. Pilih broker MQTT

Broker ini mengimplementasikan protokol MQTT 5.0. Ini mencakup dukungan untuk interval kedaluwarsa sesi dan pesan, properti pengguna, langganan bersama, alias topik, dan banyak lagi. MQTT 5 kompatibel dengan MQTT 3.1.1, jadi jika Anda menjalankan broker Moquette MQTT 3.1.1, Anda dapat menggantinya dengan broker EMQX MQTT 5, dan perangkat klien dapat terus terhubung dan beroperasi seperti biasa.

catatan

Perangkat klien adalah perangkat IoT lokal yang terhubung ke perangkat inti Greengrass untuk mengirim pesan MQTT dan data yang akan diproses. Untuk informasi selengkapnya, lihat Berinteraksilah dengan perangkat IoT lokal.

Versi

Komponen ini memiliki versi berikut:

  • 2.0.x

  • 1.2.x

  • 1.1.x

  • 1.0.x

Tipe

Komponen ini adalah komponen generik (aws.greengrass.generic). Inti Greengrass menjalankan skrip siklus hidup komponen.

Untuk informasi selengkapnya, lihat Jenis komponen.

Sistem operasi

Komponen ini dapat diinstal pada perangkat inti yang menjalankan sistem operasi berikut:

  • Linux

  • Windows

Persyaratan

Komponen ini memiliki persyaratan sebagai berikut:

  • Perangkat inti harus dapat menerima koneksi pada port tempat broker MQTT beroperasi. Komponen ini menjalankan broker MQTT pada port 8883 secara default. Anda dapat menentukan port yang berbeda saat Anda mengonfigurasi komponen ini.

    Jika Anda menentukan port yang berbeda, dan Anda menggunakan komponen jembatan MQTT untuk menyampaikan pesan MQTT ke broker lain, Anda harus menggunakan MQTT bridge v2.1.0 atau yang lebih baru. Konfigurasikan untuk menggunakan port tempat broker MQTT beroperasi.

    Jika Anda menentukan port yang berbeda, dan Anda menggunakan komponen detektor IP untuk mengelola titik akhir broker MQTT, Anda harus menggunakan detektor IP v2.1.0 atau yang lebih baru. Konfigurasikan untuk melaporkan port tempat broker MQTT beroperasi.

  • Pada perangkat inti Linux, Docker diinstal dan dikonfigurasi pada perangkat inti:

    • Docker Engine 1.9.1 atau yang lebih baru diinstal pada perangkat inti Greengrass. Versi 20.10 adalah versi terbaru yang diverifikasi untuk bekerja dengan perangkat lunak AWS IoT Greengrass Core. Anda harus menginstal Docker langsung pada perangkat inti sebelum Anda menyebarkan komponen yang menjalankan kontainer Docker.

    • Daemon Docker dimulai dan berjalan pada perangkat inti sebelum Anda men-deploy komponen ini.

    • Pengguna sistem yang menjalankan komponen ini harus memiliki izin root atau administrator. Atau, Anda dapat menjalankan komponen ini sebagai pengguna sistem dalam docker grup dan mengonfigurasi requiresPrivileges opsi komponen ini false untuk menjalankan broker EQMX MQTT tanpa hak istimewa.

  • Komponen broker EMQX MQTT didukung untuk berjalan di VPC.

  • Komponen broker EMQX MQTT tidak didukung di platform. armv7

Dependensi

Saat Anda menerapkan komponen, gunakan AWS IoT Greengrass juga versi dependensinya yang kompatibel. Ini berarti bahwa Anda harus memenuhi persyaratan untuk komponen dan semua dependensinya untuk berhasil men-deploy komponen. Bagian ini berisi daftar dependensi untuk versi yang dirilis dari komponen ini dan kendala versi semantik yang menentukan versi komponen untuk setiap dependensi. Anda juga dapat melihat dependensi untuk setiap versi komponen di konsol AWS IoT Greengrass tersebut. Pada halaman detail komponen, cari daftar Dependensi.

2.0.0

Tabel berikut mencantumkan dependensi untuk versi 2.0.0 komponen ini.

Dependensi Versi yang kompatibel Jenis dependensi
Autentikasi perangkat klien >=2.2.0 <2.5.0 Keras
1.2.2 – 1.2.3

Tabel berikut mencantumkan dependensi untuk versi 1.2.2 hingga 1.2.3 komponen ini.

Dependensi Versi yang kompatibel Jenis dependensi
Autentikasi perangkat klien >=2.2.0 <2.5.0 Keras
1.2.0 and 1.2.1

Tabel berikut mencantumkan dependensi untuk versi 1.2.0 dan 1.2.1 dari komponen ini.

Dependensi Versi yang kompatibel Jenis dependensi
Autentikasi perangkat klien >=2.2.0 <2.4.0 Keras
1.0.0 and 1.1.0

Tabel berikut mencantumkan dependensi untuk versi 1.0.0 dan 1.1.0 dari komponen ini.

Dependensi Versi yang kompatibel Jenis dependensi
Autentikasi perangkat klien >=2.2.0 <2.3.0 Keras

Untuk informasi selengkapnya tentang dependensi komponen, lihat referensi resep komponen.

Konfigurasi

2.0.0

Komponen ini menyediakan parameter konfigurasi berikut yang dapat Anda sesuaikan ketika Anda men-deploy komponen.

penting

Jika Anda menggunakan versi 2 dari komponen broker MQTT 5 (EMQX), Anda harus memperbarui file konfigurasi Anda. File konfigurasi versi 1 tidak berfungsi dengan versi 2.

EMQXconfig

(Opsional) Konfigurasi broker EMQX MQTT untuk digunakan. Anda dapat mengatur opsi konfigurasi EMQX dalam komponen ini.

Saat Anda menggunakan broker EMQX, Greengrass menggunakan konfigurasi default. Konfigurasi ini digunakan kecuali Anda memodifikasinya menggunakan bidang ini.

Memodifikasi pengaturan konfigurasi berikut menyebabkan komponen broker EMQX dimulai ulang. Perubahan konfigurasi lainnya berlaku tanpa memulai ulang komponen.

  • emqxConfig/cluster

  • emqxConfig/node

  • emqxConfig/rpc

catatan

aws.greengrass.clientdevices.mqtt.EMQXmemungkinkan Anda mengonfigurasi opsi yang sensitif terhadap keamanan. Ini termasuk pengaturan TLS, otentikasi, dan penyedia otorisasi. Kami merekomendasikan konfigurasi default yang menggunakan otentikasi TLS timbal balik dan penyedia autentikasi perangkat klien Greengrass.

contoh Contoh: Konfigurasi default

Contoh berikut menunjukkan default yang ditetapkan untuk broker MQTT 5 (EMQX). Anda dapat mengganti pengaturan ini menggunakan pengaturan emqxConfig konfigurasi.

{ "authorization": { "no_match": "deny", "sources": [] }, "node": { "cookie": "<placeholder>" }, "listeners": { "ssl": { "default": { "ssl_options": { "keyfile": "{work:path}\\data\\key.pem", "certfile": "{work:path}\\data\\cert.pem", "cacertfile": null, "verify": "verify_peer", "versions": ["tlsv1.3", "tlsv1.2"], "fail_if_no_peer_cert": true } } }, "tcp": { "default": { "enabled": false } }, "ws": { "default": { "enabled": false } }, "wss": { "default": { "enabled": false } } }, "plugins": { "states": [{"name_vsn": "gg-1.0.0", "enable": true}], "install_dir": "plugins" } }
AuthMode

(Opsional) Menetapkan penyedia otorisasi untuk broker. Dapat menjadi salah satu dari nilai berikut:

  • enabled— (Default) Gunakan penyedia otentikasi dan otorisasi Greengrass.

  • bypass_on_failure— Gunakan penyedia otentikasi Greengrass, lalu gunakan penyedia otentikasi yang tersisa di rantai penyedia EMQX jika Greengrass menolak otentikasi atau otorisasi.

  • bypass— Penyedia Greengrass dinonaktifkan. Otentikasi dan otorisasi ditangani oleh rantai penyedia EMQX.

requiresPrivilege

(Opsional) Pada perangkat inti Linux, Anda dapat menentukan untuk menjalankan broker EMQX MQTT tanpa hak root atau administrator. Jika Anda menyetel opsi inifalse, pengguna sistem yang menjalankan komponen ini harus menjadi anggota docker grup.

Default: true

startupTimeoutSeconds

(Opsional) Maksimum waktu dalam hitungan detik untuk memulai broker EMQX MQTT. Status komponen berubah menjadi BROKEN jika melebihi batas waktu ini.

Default: 90

ipcTimeoutSeconds

(Opsional) Maksimum waktu dalam hitungan detik bagi komponen untuk menunggu inti Greengrass merespons permintaan komunikasi antarproses (IPC). Tingkatkan angka ini jika komponen ini melaporkan kesalahan batas waktu saat memeriksa apakah perangkat klien diotorisasi.

Default: 5

crtLogLevel

(Opsional) Tingkat log untuk pustaka AWS Common Runtime (CRT).

Default ke level log broker EMQX MQTT (in). log.level emqx

restartIdentifier

(Opsional) Konfigurasikan opsi ini untuk memulai ulang broker EMQX MQTT. Ketika nilai konfigurasi ini berubah, komponen ini memulai ulang broker MQTT. Anda dapat menggunakan opsi ini untuk memaksa perangkat klien memutuskan sambungan.

dockerOptions

(Opsional) Konfigurasikan opsi ini hanya pada sistem operasi Linux untuk menambahkan parameter ke baris perintah Docker. Misalnya, untuk memetakan port tambahan, gunakan parameter -p Docker:

"-p 1883:1883"
contoh Contoh: Memperbarui file konfigurasi v1.x ke v2.x

Contoh berikut menunjukkan perubahan yang diperlukan untuk memperbarui file konfigurasi v1.x ke versi 2.x.

File konfigurasi versi 1.x:

{ "emqx": { "listener.ssl.external": "443", "listener.ssl.external.max_connections": "1024000", "listener.ssl.external.max_conn_rate": "500", "listener.ssl.external.rate_limit": "50KB,5s", "listener.ssl.external.handshake_timeout": "15s", "log.level": "warning" }, "mergeConfigurationFiles": { "etc/plugins/aws_greengrass_emqx_auth.conf": "auth_mode=enabled\n use_greengrass_managed_certificates=true\n" } }

File konfigurasi yang setara untuk v2:

{ "emqxConfig": { "listeners": { "ssl": { "default": { "bind": "8883", "max_connections": "1024000", "max_conn_rate": "500", "handshake_timeout": "15s" } } }, "log": { "console": { "enable": true, "level": "warning" } } }, "authMode": "enabled" }

Tidak ada yang setara dengan entri listener.ssl.external.rate_limit konfigurasi. Opsi use_greengrass_managed_certificates konfigurasi telah dihapus.

contoh Contoh: Tetapkan port baru untuk broker

Contoh berikut mengubah port tempat broker MQTT beroperasi dari default 8883 ke port 1234. Jika Anda menggunakan Linux, sertakan dockerOptions bidangnya.

{ "emqxConfig": { "listeners": { "ssl": { "default": { "bind": 1234 } } } }, "dockerOptions": "-p 1234:1234" }
contoh Contoh: Sesuaikan level log broker MQTT

Contoh berikut mengubah level log broker MQTT menjadi. debug Anda dapat memilih dari level log berikut:

  • debug

  • info

  • notice

  • warning

  • error

  • critical

  • alert

  • emergency

Level log default adalahwarning.

{ "emqxConfig": { "log": { "console": { "level": "debug" } } } }
contoh Contoh: Aktifkan dasbor EMQX

Contoh berikut memungkinkan dashboard EMQX sehingga Anda dapat memantau dan mengelola broker Anda. Jika Anda menggunakan Linux, sertakan dockerOptions bidangnya.

{ "emqxConfig": { "dashboard": { "listeners": { "http": { "bind": 18083 } } } }, "dockerOptions": "-p 18083:18083" }
1.0.0 - 1.2.2

Komponen ini menyediakan parameter konfigurasi berikut yang dapat Anda sesuaikan ketika Anda men-deploy komponen.

emqx

(Opsional) Konfigurasi broker EMQX MQTT untuk digunakan. Anda dapat mengonfigurasi subset opsi konfigurasi EMQX dalam komponen ini.

Objek ini berisi informasi berikut:

listener.ssl.external

(Opsional) Port tempat broker MQTT beroperasi.

catatan

Jika Anda menentukan port yang berbeda, dan Anda menggunakan komponen jembatan MQTT untuk menyampaikan pesan MQTT ke broker lain, Anda harus menggunakan MQTT bridge v2.1.0 atau yang lebih baru. Konfigurasikan untuk menggunakan port tempat broker MQTT beroperasi.

Jika Anda menentukan port yang berbeda, dan Anda menggunakan komponen detektor IP untuk mengelola titik akhir broker MQTT, Anda harus menggunakan detektor IP v2.1.0 atau yang lebih baru. Konfigurasikan untuk melaporkan port tempat broker MQTT beroperasi.

Default: 8883

listener.ssl.external.max_connections

(Opsional) Jumlah maksimum koneksi bersamaan yang didukung oleh broker MQTT.

Default: 1024000

listener.ssl.external.max_conn_rate

(Opsional) Jumlah maksimum koneksi baru per detik yang dapat diterima broker MQTT.

Default: 500

listener.ssl.external.rate_limit

(Opsional) Batas bandwidth untuk semua koneksi ke broker MQTT. Tentukan bandwidth dan durasi untuk bandwidth yang dipisahkan oleh koma (,) dalam format berikut:bandwidth,duration. Misalnya, Anda dapat menentukan 50KB,5s untuk membatasi broker MQTT hingga 50 kilobyte (KB) data setiap 5 detik.

listener.ssl.external.handshake_timeout

(Opsional) Jumlah waktu yang menunggu broker MQTT untuk menyelesaikan otentikasi koneksi baru.

Default: 15s

mqtt.max_packet_size

(Opsional) Ukuran maksimum pesan MQTT.

Default: 268435455 (256 MB dikurangi 1)

log.level

(Opsional) Tingkat log untuk broker MQTT. Pilih dari salah satu pilihan berikut:

  • debug

  • info

  • notice

  • warning

  • error

  • critical

  • alert

  • emergency

Level log default adalahwarning.

requiresPrivilege

(Opsional) Pada perangkat inti Linux, Anda dapat menentukan untuk menjalankan broker EMQX MQTT tanpa hak root atau administrator. Jika Anda menyetel opsi inifalse, pengguna sistem yang menjalankan komponen ini harus menjadi anggota docker grup.

Default: true

startupTimeoutSeconds

(Opsional) Maksimum waktu dalam hitungan detik untuk memulai broker EMQX MQTT. Status komponen berubah menjadi BROKEN jika melebihi batas waktu ini.

Default: 90

ipcTimeoutSeconds

(Opsional) Maksimum waktu dalam hitungan detik bagi komponen untuk menunggu inti Greengrass merespons permintaan komunikasi antarproses (IPC). Tingkatkan angka ini jika komponen ini melaporkan kesalahan batas waktu saat memeriksa apakah perangkat klien diotorisasi.

Default: 5

crtLogLevel

(Opsional) Tingkat log untuk pustaka AWS Common Runtime (CRT).

Default ke level log broker EMQX MQTT (in). log.level emqx

restartIdentifier

(Opsional) Konfigurasikan opsi ini untuk memulai ulang broker EMQX MQTT. Ketika nilai konfigurasi ini berubah, komponen ini memulai ulang broker MQTT. Anda dapat menggunakan opsi ini untuk memaksa perangkat klien memutuskan sambungan.

dockerOptions

(Opsional) Konfigurasikan opsi ini hanya pada sistem operasi Linux untuk menambahkan parameter ke baris perintah Docker. Misalnya, untuk memetakan port tambahan, gunakan parameter -p Docker:

"-p 1883:1883"
mergeConfigurationFiles

(Opsional) Konfigurasikan opsi ini untuk menambah atau mengganti default dalam file konfigurasi EMQX yang ditentukan. Untuk informasi tentang file konfigurasi dan formatnya, lihat Konfigurasi dalam Dokumentasi EMQX 4.0. Nilai yang Anda tentukan ditambahkan ke file konfigurasi.

Contoh berikut memperbarui etc/emqx.conf file.

"mergeConfigurationFiles": { "etc/emqx.conf": "broker.sys_interval=30s\nbroker.sys_heartbeat=10s" },

Selain file konfigurasi yang didukung oleh EMQX, Greengrass mendukung file yang mengkonfigurasi plugin autentikasi Greengrass untuk EMQX yang disebut. etc/plugins/aws_greengrass_emqx_auth.conf Ada dua opsi yang didukung, auth_mode danuse_greengrass_managed_certificates. Untuk menggunakan penyedia autentikasi lain, setel auth_mode opsi ke salah satu dari berikut ini:

  • enabled— (Default) Gunakan penyedia otentikasi dan otorisasi Greengrass.

  • bypass_on_failure— Gunakan penyedia otentikasi Greengrass, lalu gunakan penyedia otentikasi yang tersisa di rantai penyedia EMQX jika Greengrass menolak otentikasi atau otorisasi.

  • bypass— Penyedia Greengrass dinonaktifkan. Otentikasi dan otorisasi kemudian ditangani oleh rantai penyedia EMQX.

Jika yatrue, opsi ini menunjukkan bahwa Greengrass mengelola sertifikat TLS broker. use_greengrass_managed_certificates Jikafalse, ini menunjukkan bahwa Anda memberikan sertifikat melalui sumber lain.

Contoh berikut memperbarui default dalam file konfigurasi. etc/plugins/aws_greengrass_emqx_auth.conf

"mergeConfigurationFiles": { "etc/plugins/aws_greengrass_emqx_auth.conf": "auth_mode=enabled\n use_greengrass_managed_certificates=true\n" },
catatan

aws.greengrass.clientdevices.mqtt.EMQXmemungkinkan Anda mengonfigurasi opsi yang sensitif terhadap keamanan. Ini termasuk pengaturan TLS, otentikasi, dan penyedia otorisasi. Konfigurasi yang disarankan adalah konfigurasi default yang menggunakan otentikasi TLS timbal balik dan penyedia Auth Perangkat Klien Greengrass.

replaceConfigurationFiles

(Opsional) Konfigurasikan opsi ini untuk mengganti file konfigurasi EMQX yang ditentukan. Nilai yang Anda tentukan menggantikan seluruh file konfigurasi yang ada. Anda tidak dapat menentukan etc/emqx.conf file di bagian ini. Anda harus menggunakan mergeConfigurationFile untuk memodifikasietc/emqx.conf.

contoh Contoh: Pembaruan gabungan konfigurasi

Contoh konfigurasi berikut menentukan untuk mengoperasikan broker MQTT pada port 443.

{ "emqx": { "listener.ssl.external": "443", "listener.ssl.external.max_connections": "1024000", "listener.ssl.external.max_conn_rate": "500", "listener.ssl.external.rate_limit": "50KB,5s", "listener.ssl.external.handshake_timeout": "15s", "log.level": "warning" }, "requiresPrivilege": "true", "startupTimeoutSeconds": "90", "ipcTimeoutSeconds": "5" }

Berkas log lokal

Komponen ini menggunakan file log berikut.

Linux
/greengrass/v2/logs/aws.greengrass.clientdevices.mqtt.EMQX.log
Windows
C:\greengrass\v2\logs\aws.greengrass.clientdevices.mqtt.EMQX.log
Untuk melihat log komponen ini
  • Jalankan perintah berikut pada perangkat inti untuk melihat file log komponen ini secara real time. Ganti /greengrass/v2 atau C:\greengrass\v2 dengan jalur ke folder AWS IoT Greengrass root.

    Linux
    sudo tail -f /greengrass/v2/logs/aws.greengrass.clientdevices.mqtt.EMQX.log
    Windows (PowerShell)
    Get-Content C:\greengrass\v2\logs\aws.greengrass.clientdevices.mqtt.EMQX.log -Tail 10 -Wait

Lisensi

Pada sistem operasi Windows, perangkat lunak ini menyertakan kode yang didistribusikan di bawah Persyaratan Lisensi Perangkat Lunak Microsoft - Komunitas Microsoft Visual Studio 2022. Dengan mengunduh perangkat lunak ini, Anda menyetujui ketentuan lisensi kode tersebut.

Komponen ini dirilis menurut Perjanjian Lisensi Perangkat Lunak Greengrass Core.

Changelog

Tabel berikut menjelaskan perubahan dalam setiap versi komponen.

v2.x

Versi

Perubahan

2.0.0

Versi broker MQTT 5 (EMQX) ini mengharapkan parameter konfigurasi yang berbeda dari versi 1.x. Jika Anda menggunakan konfigurasi non-default untuk versi 1.x, Anda harus memperbarui konfigurasi komponen untuk 2.x. Untuk informasi selengkapnya, lihat Konfigurasi.

Fitur baru
  • Tingkatkan broker MQTT ke EMQX 5.1.1.

  • Mengaktifkan perubahan konfigurasi broker tanpa memulai ulang komponen.

Pembaruan
  • Menambahkan bidang emqxConfig konfigurasi baru yang menggantikan bidangemqx,mergeConfigurationFiles, dan replaceConfigurationFiles konfigurasi.

v1.x

Versi

Perubahan

1.2.3

Perbaikan bug dan peningkatan
  • Memperbaiki masalah di mana klien tidak dapat berinteraksi dengan EMQX setelah sebelumnya mengautentikasi dengan memutuskan dan mengautentikasi ulang klien.

1.2.2

Versi diperbarui untuk perangkat klien autentikasi versi 2.4.0 rilis.

1.2.1

Perbaikan bug dan peningkatan
  • Memperbaiki masalah di mana komponen tidak akan memulai pada Windows jika Visual C++ Redistributable belum ada.

  • Pembaruan EMQX ke versi 4.4.14.

1.2.0

Menambahkan dukungan untuk rantai sertifikat.

1.1.0

Fitur baru
  • Menambahkan dukungan untuk konfigurasi EMQX termasuk opsi broker dan plug-in.

Perbaikan bug dan peningkatan
  • Pembaruan EMQX ke versi 4.4.9.

1.0.1

Memperbaiki masalah selama jabat tangan TLS yang mengakibatkan beberapa klien MQTT gagal terhubung.

1.0.0

Versi awal.