Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Peristiwa siklus hidup
AWS IoT dapat mempublikasikan peristiwa siklus hidup pada topik MQTT. Acara ini tersedia secara default dan tidak dapat dinonaktifkan.
catatan
Pesan siklus hidup mungkin dikirim tidak berurutan. Anda mungkin menerima pesan duplikat.
thingNamehanya akan disertakan jika klien terhubung menggunakan fitur hal eksklusif.
Dalam topik ini:
Connect/Disconnect acara
catatan
Dengan pengindeksan armada Manajemen AWS IoT Perangkat, Anda dapat mencari sesuatu, menjalankan kueri agregat, dan membuat grup dinamis berdasarkan Connect/Disconnect peristiwa benda. Untuk informasi selengkapnya, lihat Pengindeksan Ar https://docs.aws.amazon.com/iot/latest/developerguide/iot-indexing.html mada.
AWS IoT menerbitkan pesan ke topik MQTT berikut ketika klien menghubungkan atau memutuskan sambungan:
-
$aws/events/presence/connected/— Klien yang terhubung ke broker pesan.clientId -
$aws/events/presence/disconnected/— Klien terputus dari broker pesan.clientId
Berikut ini adalah daftar elemen JSON yang terkandung dalam connection/disconnection pesan yang dipublikasikan ke $aws/events/presence/connected/ topik.clientId
- clientId
-
ID klien dari klien yang menghubungkan atau memutuskan sambungan.
catatan
ID klien yang berisi # atau + tidak menerima peristiwa siklus hidup.
- Nama benda
-
Nama barang IoT Anda.
thingNamehanya akan disertakan jika klien terhubung menggunakan fitur hal eksklusif. - Klien InitiatedDisconnect
-
Benar jika klien memulai pemutusan. Kalau tidak, salah. Hanya ditemukan di pesan pemutusan.
- Pemutusan KoneksiPengkhianatan
-
Alasan mengapa klien memutuskan sambungan. Hanya ditemukan di pesan pemutusan. Tabel berikut berisi nilai yang valid dan apakah broker akan mengirim pesan Last Will and Testament (LWT) ketika pemutusan terjadi.
Putuskan alasan Deskripsi Pialang akan mengirim pesan LWT AUTH_ERRORKlien gagal mengotentikasi atau otorisasi gagal. Ya1 CLIENT_INITIATED_DISCONNECTKlien menunjukkan bahwa itu akan terputus. Klien dapat melakukan ini dengan mengirimkan paket DISCONNECTkontrol MQTT atauClose framejika klien menggunakan WebSocket koneksi.Tidak CLIENT_ERRORKlien melakukan sesuatu yang salah yang menyebabkannya terputus. Misalnya, klien akan terputus karena mengirim lebih dari 1 CONNECTpaket MQTT pada koneksi yang sama atau jika klien mencoba untuk mempublikasikan dengan payload yang melebihi batas muatan.Ya CONNECTION_LOSTKoneksi klien-server terputus. Hal ini dapat terjadi selama periode latensi jaringan yang tinggi atau ketika koneksi internet terputus. Ya DUPLICATE_CLIENTIDKlien menggunakan ID klien yang sudah digunakan. Dalam hal ini, klien yang sudah terhubung akan terputus dengan alasan pemutusan ini. Ya FORBIDDEN_ACCESSKlien tidak diizinkan untuk terhubung. Misalnya, klien dengan alamat IP yang ditolak akan gagal terhubung. Ya1 MQTT_KEEP_ALIVE_TIMEOUTJika tidak ada komunikasi klien-server selama 1,5x waktu keep-alive klien, klien terputus. Ya SERVER_ERRORTerputus karena masalah server yang tidak terduga. Ya SERVER_INITIATED_DISCONNECTServer sengaja memutuskan koneksi klien karena alasan operasional. Ya API_INITIATED_DISCONNECTKlien terputus menggunakan DeleteConnectionAPI.Ya 2 THROTTLEDKlien terputus karena melebihi batas pelambatan. Ya WEBSOCKET_TTL_EXPIRATIONKlien terputus karena a WebSocket telah terhubung lebih lama dari nilai time-to-live. Ya CUSTOMAUTH_TTL_EXPIRATIONKlien terputus karena telah terhubung lebih lama dari nilai time-to-live dari otorizer kustomnya. Ya 1 Jika perangkat memiliki koneksi aktif sebelum menerima kesalahan ini.
2 Untuk mencegah pesan Last Will and Testament (LWT), atur
preventWillMessage=trueuntuk mengganti perilaku pengiriman LWT defaultDeleteConnectionAPI. - eventType
-
Jenis peristiwa. Nilai-nilai yang valid adalah
connectedataudisconnected. - ipAddress
-
Alamat IP klien penghubung. Ini bisa dalam format IPv4 atau IPv6. Hanya ditemukan di pesan koneksi.
- Identifier Utama
-
Kredensi yang digunakan untuk mengotentikasi. Untuk sertifikat otentikasi bersama TLS, ini adalah ID sertifikat. Untuk koneksi lain, ini adalah kredenSIAL IAM.
- Pengidentifikasi sesi
-
Pengidentifikasi unik global AWS IoT yang ada selama masa sesi.
- timestamp
-
Perkiraan kapan peristiwa itu terjadi.
- Nomor versi
-
Nomor versi untuk peristiwa siklus hidup. Ini adalah nilai integer panjang yang meningkat secara monoton untuk setiap koneksi ID klien. Nomor versi dapat digunakan oleh pelanggan untuk menyimpulkan urutan peristiwa siklus hidup.
catatan
Pesan sambungkan dan putuskan sambungan untuk koneksi klien memiliki nomor versi yang sama.
Nomor versi mungkin melewati nilai dan tidak dijamin akan meningkat secara konsisten sebesar 1 untuk setiap acara.
Jika klien tidak terhubung selama sekitar satu jam, nomor versi diatur ulang ke 0. Untuk sesi persisten, nomor versi diatur ulang ke 0 setelah klien terputus lebih lama dari time-to-live (TTL) yang dikonfigurasi untuk sesi persisten.
Pesan koneksi memiliki struktur berikut.
{ "clientId": "186b5", "thingName": "exampleThing", "timestamp": 1573002230757, "eventType": "connected", "sessionIdentifier": "00000000-0000-0000-0000-000000000000", "principalIdentifier": "12345678901234567890123456789012", "ipAddress": "192.0.2.0", "versionNumber": 0 }
Pesan pemutusan memiliki struktur berikut.
{ "clientId": "186b5", "thingName": "exampleThing", "timestamp": 1573002340451, "eventType": "disconnected", "sessionIdentifier": "00000000-0000-0000-0000-000000000000", "principalIdentifier": "12345678901234567890123456789012", "clientInitiatedDisconnect": true, "disconnectReason": "CLIENT_INITIATED_DISCONNECT", "versionNumber": 0 }
Menangani pemutusan klien
Praktik terbaik adalah selalu menerapkan status tunggu untuk peristiwa siklus hidup, termasuk pesan MQTT Last Will and Testament (LWT). Ketika pesan pemutusan diterima, kode Anda harus menunggu jangka waktu tertentu dan memverifikasi perangkat masih offline sebelum mengambil tindakan. Salah satu cara untuk melakukannya adalah dengan menggunakan SQS Delay Queues. Saat klien menerima LWT atau peristiwa siklus hidup, Anda dapat mengantri pesan (misalnya, selama 5 detik). Ketika pesan itu tersedia dan diproses (oleh Lambda atau layanan lain), Anda dapat terlebih dahulu memeriksa apakah perangkat masih offline sebelum mengambil tindakan lebih lanjut.
Hubungkan peristiwa kegagalan upaya
AWS IoT menerbitkan pesan ke topik MQTT berikut ketika klien tidak berwenang untuk terhubung atau ketika wasiat terakhir dikonfigurasi dan klien tidak berwenang untuk menerbitkan ke topik surat wasiat terakhir tersebut.
$aws/events/presence/connect_failed/clientId
Berikut ini adalah daftar elemen JSON yang terkandung dalam pesan otorisasi koneksi yang diterbitkan ke $aws/events/presence/connect_failed/ topik.clientId
- clientId
-
ID klien dari klien yang mencoba dan gagal terhubung.
catatan
ID klien yang berisi # atau + tidak menerima peristiwa siklus hidup.
- Nama benda
-
Nama barang IoT Anda.
thingNamehanya akan disertakan jika klien terhubung menggunakan fitur hal eksklusif. - timestamp
-
Perkiraan kapan peristiwa itu terjadi.
- eventType
-
Jenis peristiwa. Nilai yang valid adalah
connect_failed. - menghubungkan FailureReason
-
Alasan mengapa koneksi gagal. Nilai yang valid adalah
AUTHORIZATION_FAILED. - Identifier Utama
-
Kredensi yang digunakan untuk mengotentikasi. Untuk sertifikat otentikasi bersama TLS, ini adalah ID sertifikat. Untuk koneksi lain, ini adalah kredenSIAL IAM.
- Pengidentifikasi sesi
-
Pengidentifikasi unik global AWS IoT yang ada selama masa sesi.
- ipAddress
-
Alamat IP klien penghubung. Ini bisa dalam format IPv4 atau IPv6. Hanya ditemukan di pesan koneksi.
Pesan kegagalan koneksi memiliki struktur berikut.
{ "clientId": "186b5", "thingName": "exampleThing", "timestamp": 1460065214626, "eventType": "connect_failed", "connectFailureReason": "AUTHORIZATION_FAILED", "principalIdentifier": "12345678901234567890123456789012", "sessionIdentifier": "00000000-0000-0000-0000-000000000000", "ipAddress" : "192.0.2.0" }
Subscribe/Unsubscribe acara
AWS IoT menerbitkan pesan ke topik MQTT berikut ketika klien berlangganan atau berhenti berlangganan topik MQTT:
$aws/events/subscriptions/subscribed/clientId
atau
$aws/events/subscriptions/unsubscribed/clientId
Di clientId mana ID klien MQTT yang terhubung ke broker AWS IoT
pesan.
Pesan yang dipublikasikan untuk topik ini memiliki struktur sebagai berikut:
{ "clientId": "186b5", "thingName": "exampleThing", "timestamp": 1460065214626, "eventType": "subscribed" | "unsubscribed", "sessionIdentifier": "00000000-0000-0000-0000-000000000000", "principalIdentifier": "12345678901234567890123456789012", "topics" : ["foo/bar","device/data","dog/cat"] }
Berikut ini adalah daftar elemen JSON yang terkandung dalam pesan berlangganan dan tidak berlangganan yang diterbitkan ke $aws/events/subscriptions/unsubscribed/ topik clientId$aws/events/subscriptions/subscribed/ dan.clientId
- clientId
-
ID klien klien yang berlangganan atau berhenti berlangganan.
catatan
ID klien yang berisi # atau + tidak menerima peristiwa siklus hidup.
- Nama benda
-
Nama barang IoT Anda.
thingNamehanya akan disertakan jika klien terhubung menggunakan fitur hal eksklusif. - eventType
-
Jenis peristiwa. Nilai-nilai yang valid adalah
subscribedatauunsubscribed. - Identifier Utama
-
Kredensi yang digunakan untuk mengotentikasi. Untuk sertifikat otentikasi bersama TLS, ini adalah ID sertifikat. Untuk koneksi lain, ini adalah kredenSIAL IAM.
- Pengidentifikasi sesi
-
Pengidentifikasi unik global AWS IoT yang ada selama masa sesi.
- timestamp
-
Perkiraan kapan peristiwa itu terjadi.
- topik
-
Array topik MQTT yang telah berlangganan klien.
catatan
Pesan siklus hidup mungkin dikirim tidak berurutan. Anda mungkin menerima pesan duplikat.