Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Tunjukkan berlangganan pesan dengan AWS IoT Klien Perangkat
Di bagian ini, Anda akan menunjukkan dua jenis langganan pesan:
-
Langganan topik tunggal
-
Wild-card berlangganan topik
Pernyataan kebijakan ini dalam kebijakan yang dibuat untuk latihan ini memberikan izin Raspberry Pi untuk melakukan tindakan ini:
-
IoT: terimaMemberikan izin Klien AWS IoT Perangkat untuk menerima topik MQTT yang cocok dengan yang disebutkan dalam
Resourceobjek.{ "Effect": "Allow", "Action": [ "iot:Receive" ], "Resource": [ "arn:aws:iot:us-west-2:57EXAMPLE833:topic/test/dc/subtopic" ] } -
IoT: BerlanggananMemberikan izin Klien AWS IoT Perangkat untuk berlangganan filter topik MQTT yang cocok dengan yang disebutkan dalam
Resourceobjek.{ "Effect": "Allow", "Action": [ "iot:Subscribe" ], "Resource": [ "arn:aws:iot:us-west-2:57EXAMPLE833:topicfilter/test/dc/subtopic" ] }
Berlangganan satu topik pesan MQTT
Prosedur ini menunjukkan bagaimana Klien AWS IoT Perangkat dapat berlangganan dan mencatat pesan MQTT.
Di jendela terminal pada komputer host lokal Anda yang terhubung ke Raspberry Pi Anda, daftarkan isi ~/dc-configs/dc-pubsub-custom-config.json atau buka file di editor teks untuk meninjau isinya. Temukan samples objek, yang seharusnya terlihat seperti ini.
"samples": { "pub-sub": { "enabled": true, "publish-topic": "test/dc/pubtopic", "publish-file": "~/messages/sample-ws-message.json", "subscribe-topic": "test/dc/subtopic", "subscribe-file": "~/.aws-iot-device-client/log/pubsub_rx_msgs.log"
Perhatikan nil subscribe-topic ainya adalah topik MQTT yang akan berlangganan Klien AWS IoT Perangkat saat dijalankan. Kli AWS IoT en Perangkat menulis payload pesan yang diterimanya dari langganan ini ke file yang disebutkan dalam subscribe-file nilai.
Untuk berlangganan topik pesan MQTT dari AWS IoT Klien Perangkat
-
Pastikan jendela terminal dan jendela dengan klien uji MQTT terlihat saat Anda melakukan prosedur ini. Juga, pastikan klien uji MQTT Anda masih berlangganan filter topik #. Jika tidak, berlangganan filter topik # lagi.
-
Di jendela terminal, masukkan perintah ini untuk menjalankan Kli AWS IoT en Perangkat menggunakan file konfigurasi yang dibuat diBuat file konfigurasi.
cd ~/aws-iot-device-client/build ./aws-iot-device-client --config-file ~/dc-configs/dc-pubsub-custom-config.jsonDi jendela terminal, Klien AWS IoT Perangkat menampilkan pesan informasi dan kesalahan apa pun yang terjadi saat dijalankan.
Jika tidak ada kesalahan yang ditampilkan di jendela terminal, lanjutkan di AWS IoT konsol.
-
Di AWS IoT konsol, di klien uji MQTT, pilih tab Publikasikan ke topik.
-
Di Nama topik, masukkan
test/dc/subtopic -
Di Pay load pesan, tinjau isi pesan.
-
Pilih Publikasikan untuk menerbitkan pesan MQTT.
-
Di jendela terminal, perhatikan entri pesan yang diterima dari Kli AWS IoT en Perangkat yang terlihat seperti ini.
2021-11-10T16:02:20.890Z [DEBUG] {samples/PubSubFeature.cpp}: Message received on subscribe topic, size: 45 bytes -
Setelah Anda melihat entri pesan diterima yang menunjukkan pesan diterima, masukkan
^C(Ctrl-C) untuk menghentikan Kli AWS IoT en Perangkat. -
Masukkan perintah ini untuk melihat akhir file log pesan dan melihat pesan yang Anda terbitkan dari klien uji MQTT.
tail ~/.aws-iot-device-client/log/pubsub_rx_msgs.log
Dengan melihat pesan di file log, Anda telah menunjukkan bahwa Klien AWS IoT Perangkat menerima pesan yang Anda publikasikan dari klien uji MQTT.
Berlangganan beberapa topik pesan MQTT menggunakan karakter wildcard
Prosedur ini menunjukkan bagaimana Klien AWS IoT Perangkat dapat berlangganan dan mencatat pesan MQTT menggunakan karakter wildcard. Untuk melakukan ini, Anda akan:
-
Perbarui filter topik yang digunakan Kli AWS IoT en Perangkat untuk berlangganan topik MQTT.
-
Perbarui kebijakan yang digunakan oleh perangkat untuk mengizinkan langganan baru.
-
Jalankan Klien AWS IoT Perangkat dan publikasikan pesan dari konsol uji MQTT.
Untuk membuat file konfigurasi untuk berlangganan beberapa topik pesan MQTT dengan menggunakan filter topik MQTT wildcard
-
Di jendela terminal pada komputer host lokal Anda yang terhubung ke Raspberry Pi Anda, buka
~/dc-configs/dc-pubsub-custom-config.jsonuntuk mengedit dan temukansamplesobjek. -
Di editor teks, cari
samplesobjek dan perbarui nilsubscribe-topicainya agar terlihat seperti ini."samples": { "pub-sub": { "enabled": true, "publish-topic": "test/dc/pubtopic", "publish-file": "~/messages/sample-ws-message.json", "subscribe-topic": "test/dc/#", "subscribe-file": "~/.aws-iot-device-client/log/pubsub_rx_msgs.log"subscribe-topicNilai baru adalah filter topik MQTT dengan karakter kartu liar MQTT di akhir. Ini menjelaskan berlangganan ke semua topik MQTT yang dimulai dengantest/dc/. Kli AWS IoT en Perangkat menulis muatan pesan yang diterimanya dari langganan ini ke file yang disebutkan disubscribe-file. -
Simpan file konfigurasi yang dimodifikasi sebagai
~/dc-configs/dc-pubsub-wild-config.json, dan keluar dari editor.
Untuk mengubah kebijakan yang digunakan oleh Raspberry Pi Anda untuk memungkinkan berlangganan dan menerima beberapa topik pesan MQTT
-
Di jendela terminal di komputer host lokal Anda yang terhubung ke Raspberry Pi Anda, di editor teks favorit Anda, buka
~/policies/pubsub_test_thing_policy.jsonuntuk diedit, dan kemudian cari pernyataaniot::Receivekebijakaniot::Subscribedan dalam file. -
Dalam pernyataan
iot::Subscribekebijakan, perbarui string di objek Resource untuk digantisubtopic*, sehingga terlihat seperti ini.{ "Effect": "Allow", "Action": [ "iot:Subscribe" ], "Resource": [ "arn:aws:iot:us-west-2:57EXAMPLE833:topicfilter/test/dc/*" ] }catatan
Karakter wild card filter topik MQTT adalah
+(tanda plus) dan#(tanda pound). Permintaan berlangganan dengan#bagian akhir berlangganan semua topik yang dimulai dengan string yang mendahului#karakter (misalnya,test/dc/dalam kasus ini).Namun, nilai sumber daya dalam pernyataan kebijakan yang mengotorisasi langganan ini harus menggunakan
*(tanda bintang) sebagai pengganti#(tanda pound) di filter topik ARN. Ini karena prosesor kebijakan menggunakan karakter wild card yang berbeda dari yang digunakan MQTT.Untuk informasi selengkapnya tentang menggunakan karakter wild card untuk topik dan filter topik dalam kebijakan, lihatMenggunakan karakter wildcard di MQTT dan AWS IoT Core kebijakan-kebijakan.
-
Dalam pernyataan
iot::Receivekebijakan, perbarui string di objek Resource untuk digantisubtopic*, sehingga terlihat seperti ini.{ "Effect": "Allow", "Action": [ "iot:Receive" ], "Resource": [ "arn:aws:iot:us-west-2:57EXAMPLE833:topic/test/dc/*" ] } -
Simpan dokumen kebijakan yang diperbarui sebagai
~/policies/pubsub_wild_test_thing_policy.json, dan keluar dari editor. -
Masukkan perintah ini untuk memperbarui kebijakan tutorial ini untuk menggunakan definisi sumber daya baru.
aws iot create-policy-version \ --set-as-default \ --policy-name "PubSubTestThingPolicy" \ --policy-document "file://~/policies/pubsub_wild_test_thing_policy.json"Jika perintah berhasil, ia mengembalikan respons seperti ini. Perhatikan bahwa
policyVersionIdsekarang2, menunjukkan ini adalah versi kedua dari kebijakan ini.Jika Anda berhasil memperbarui kebijakan, Anda dapat melanjutkan ke prosedur berikutnya.
{ "policyArn": "arn:aws:iot:us-west-2:57EXAMPLE833:policy/PubSubTestThingPolicy", "policyDocument": "{\n \"Version\": \"2012-10-17\",\n \"Statement\": [\n {\n \"Effect\": \"Allow\",\n \"Action\": [\n \"iot:Connect\"\n ],\n \"Resource\": [\n \"arn:aws:iot:us-west-2:57EXAMPLE833:client/PubSubTestThing\"\n ]\n },\n {\n \"Effect\": \"Allow\",\n \"Action\": [\n \"iot:Publish\"\n ],\n \"Resource\": [\n \"arn:aws:iot:us-west-2:57EXAMPLE833:topic/test/dc/pubtopic\"\n ]\n },\n {\n \"Effect\": \"Allow\",\n \"Action\": [\n \"iot:Subscribe\"\n ],\n \"Resource\": [\n \"arn:aws:iot:us-west-2:57EXAMPLE833:topicfilter/test/dc/*\"\n ]\n },\n {\n \"Effect\": \"Allow\",\n \"Action\": [\n \"iot:Receive\"\n ],\n \"Resource\": [\n \"arn:aws:iot:us-west-2:57EXAMPLE833:topic/test/dc/*\"\n ]\n }\n ]\n}\n", "policyVersionId": "2", "isDefaultVersion": true }Jika Anda mendapatkan kesalahan bahwa ada terlalu banyak versi kebijakan untuk menyimpan yang baru, masukkan perintah ini untuk mencantumkan versi kebijakan saat ini. Tinjau daftar yang dikembalikan perintah ini untuk menemukan versi kebijakan yang dapat Anda hapus.
aws iot list-policy-versions --policy-name "PubSubTestThingPolicy"Masukkan perintah ini untuk menghapus versi yang tidak lagi Anda perlukan. Perhatikan bahwa Anda tidak dapat menghapus versi kebijakan default. Versi kebijakan default adalah versi dengan
isDefaultVersionnilaitrue.aws iot delete-policy-version \ --policy-name "PubSubTestThingPolicy" \ --policy-version-idpolicyIdSetelah menghapus versi kebijakan, coba lagi langkah ini.
Dengan file konfigurasi dan kebijakan yang diperbarui, Anda siap untuk mendemonstrasikan langganan wild card dengan Kli AWS IoT en Perangkat.
Untuk menunjukkan bagaimana AWS IoT Klien Perangkat berlangganan dan menerima beberapa topik pesan MQTT
-
Di klien uji MQTT, periksa langganan. Jika klien uji MQTT berlangganan ke filter
#topik, lanjutkan ke langkah berikutnya. Jika tidak, di klien uji MQTT, di tab Ber langganan topik, di Filter Topik, masukkan#(karakter tanda pound), lalu pilih Ber langganan untuk berlangganan. -
Di jendela terminal pada komputer host lokal Anda yang terhubung ke Raspberry Pi Anda, masukkan perintah ini untuk memulai Kli AWS IoT en Perangkat.
cd ~/aws-iot-device-client/build ./aws-iot-device-client --config-file ~/dc-configs/dc-pubsub-wild-config.json -
Saat menonton output AWS IoT Device Client di jendela terminal pada komputer host lokal, kembali ke klien uji MQTT. Di tab Publikasikan ke topik, di Nama topik, masukkan
test/dc/subtopic, lalu pilih Publi kasikan. -
Di jendela terminal, konfirmasikan bahwa pesan diterima dengan mencari pesan seperti:
2021-11-10T16:34:20.101Z [DEBUG] {samples/PubSubFeature.cpp}: Message received on subscribe topic, size: 76 bytes -
Saat menonton output AWS IoT Device Client di jendela terminal komputer host lokal, kembali ke klien uji MQTT. Di tab Publikasikan ke topik, di Nama topik, masukkan
test/dc/subtopic2, lalu pilih Publi kasikan. -
Di jendela terminal, konfirmasikan bahwa pesan diterima dengan mencari pesan seperti:
2021-11-10T16:34:32.078Z [DEBUG] {samples/PubSubFeature.cpp}: Message received on subscribe topic, size: 77 bytes -
Setelah Anda melihat pesan yang mengonfirmasi kedua pesan diterima, masukkan
^C(Ctrl-C) untuk menghentikan Kli AWS IoT en Perangkat. -
Masukkan perintah ini untuk melihat akhir file log pesan dan melihat pesan yang Anda terbitkan dari klien uji MQTT.
tail -n 20 ~/.aws-iot-device-client/log/pubsub_rx_msgs.logcatatan
File log hanya berisi payload pesan. Topik pesan tidak direkam dalam file log pesan yang diterima.
Anda mungkin juga melihat pesan yang diterbitkan oleh Kli AWS IoT en Perangkat di log yang diterima. Ini karena filter topik wild card menyertakan topik pesan itu dan, terkadang, permintaan berlangganan dapat diproses oleh broker pesan sebelum pesan yang dipublikasikan dikirim ke pelanggan.
Entri dalam file log menunjukkan bahwa pesan diterima. Anda dapat mengulangi prosedur ini menggunakan nama topik lain. Semua pesan yang memiliki nama topik yang dimulai dengan test/dc/ harus diterima dan dicatat. Pesan dengan nama topik yang dimulai dengan teks lain diabaikan.
Setelah menunjukkan bagaimana Klien AWS IoT Perangkat dapat mempublikasikan dan berlangganan pesan MQTT, lanjutkanTutorial: Menunjukkan tindakan jarak jauh (pekerjaan) dengan AWS IoT Klien Perangkat.