Peristiwa siklus hidup - AWS IoT Core

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 rusak. Anda mungkin menerima pesan duplikat.

thingNamehanya akan disertakan jika klien terhubung menggunakan fitur hal eksklusif.

Hubungkan/Putuskan acara

catatan

Dengan pengindeksan armada Manajemen AWS IoT Perangkat, Anda dapat mencari berbagai hal, menjalankan kueri agregat, dan membuat grup dinamis berdasarkan peristiwa Connect/Disconnect. Untuk informasi selengkapnya, lihat Pengindeksan armada.

AWS IoT menerbitkan pesan ke MQTT topik berikut saat klien menghubungkan atau memutuskan sambungan:

  • $aws/events/presence/connected/clientId— Klien yang terhubung ke broker pesan.

  • $aws/events/presence/disconnected/clientId— Klien terputus dari broker pesan.

Berikut ini adalah daftar JSON elemen yang terkandung dalam pesan koneksi/pemutusan yang dipublikasikan ke topik. $aws/events/presence/connected/clientId

clientId

ID klien dari klien yang menghubungkan atau memutuskan sambungan.

catatan

Klien IDs yang berisi # atau + tidak menerima peristiwa siklus hidup.

thingName

Nama benda IoT Anda. thingNamehanya akan disertakan jika klien terhubung menggunakan fitur hal eksklusif.

clientInitiatedDisconnect

Benar jika klien memulai pemutusan. Kalau tidak, salah. Hanya ditemukan di pesan putuskan sambungan.

disconnectReason

Alasan mengapa klien terputus. Hanya ditemukan di pesan putuskan sambungan. Tabel berikut berisi nilai yang valid dan apakah broker akan mengirim pesan Last Will dan Testament (LWT) ketika pemutusan terjadi.

Putuskan alasan Deskripsi Broker akan mengirim LWT pesan
AUTH_ERROR Klien gagal mengautentikasi atau otorisasi gagal. Ya. Jika perangkat memiliki koneksi aktif sebelum menerima kesalahan ini.
CLIENT_INITIATED_DISCONNECT Klien menunjukkan bahwa itu akan terputus. Klien dapat melakukan ini dengan mengirim paket MQTT DISCONNECT kontrol atau Close frame jika klien menggunakan WebSocket koneksi. Tidak.
CLIENT_ERROR Klien melakukan sesuatu yang salah yang menyebabkannya terputus. Misalnya, klien akan terputus karena mengirim lebih dari 1 MQTT CONNECT paket pada koneksi yang sama atau jika klien mencoba mempublikasikan dengan muatan yang melebihi batas muatan. Ya.
CONNECTION_LOST Koneksi client-server terputus. Hal ini dapat terjadi selama periode latensi jaringan tinggi atau ketika koneksi internet terputus. Ya.
DUPLICATE_CLIENTID Klien menggunakan ID klien yang sudah digunakan. Dalam hal ini, klien yang sudah terhubung akan terputus dengan alasan pemutusan ini. Ya.
FORBIDDEN_ACCESS Klien tidak diizinkan untuk terhubung. Misalnya, klien dengan alamat IP yang ditolak akan gagal terhubung. Ya. Jika perangkat memiliki koneksi aktif sebelum menerima kesalahan ini.
MQTT_KEEP_ALIVE_TIMEOUT Jika tidak ada komunikasi client-server untuk 1.5x dari waktu keep-alive klien, klien terputus. Ya.
SERVER_ERROR Terputus karena masalah server yang tidak terduga. Ya.
SERVER_INITIATED_DISCONNECT Server sengaja memutus klien karena alasan operasional. Ya.
THROTTLED Klien terputus karena melebihi batas pelambatan. Ya.
WEBSOCKET_TTL_EXPIRATION Klien terputus karena WebSocket telah terhubung lebih lama dari time-to-live nilainya. Ya.
CUSTOMAUTH_TTL_EXPIRATION Klien terputus karena telah terhubung lebih lama dari time-to-live nilai otorisasi kustomnya. Ya.
eventType

Jenis peristiwa. Nilai-nilai yang valid adalah connected atau disconnected.

ipAddress

Alamat IP dari klien penghubung. Ini bisa dalam IPv4 atau IPv6 format. Ditemukan dalam pesan koneksi saja.

principalIdentifier

Kredensi yang digunakan untuk mengautentikasi. Untuk sertifikat otentikasi TLS timbal balik, ini adalah ID sertifikat. Untuk koneksi lain, ini adalah IAM kredensi.

sessionIdentifier

Pengidentifikasi unik secara global AWS IoT yang ada selama masa sesi.

timestamp

Perkiraan kapan peristiwa itu terjadi.

versionNumber

Nomor versi untuk acara 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 kurang lebih satu jam, nomor versi diatur ulang ke 0. Untuk sesi persisten, nomor versi disetel ulang ke 0 setelah klien terputus lebih lama dari konfigurasi time-to-live (TTL) untuk sesi persisten.

Pesan connect 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 Will Terakhir dan Perjanjian () 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 SQSDelay Queues. Saat klien menerima peristiwa LWT atau siklus hidup, Anda dapat mengantrekan 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.

Acara kegagalan percobaan Connect

AWS IoT menerbitkan pesan ke MQTT topik berikut ketika klien tidak berwenang untuk terhubung atau ketika surat wasiat dan wasiat terakhir dikonfigurasi dan klien tidak berwenang untuk mempublikasikan ke topik wasiat terakhir tersebut.

$aws/events/presence/connect_failed/clientId

Berikut ini adalah daftar JSON elemen yang terkandung dalam pesan otorisasi sambungkan yang dipublikasikan ke $aws/events/presence/connect_failed/clientId topik.

clientId

ID klien klien yang mencoba dan gagal terhubung.

catatan

Klien IDs yang berisi # atau + tidak menerima peristiwa siklus hidup.

thingName

Nama benda 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.

connectFailureReason

Alasan mengapa koneksi gagal. Nilai yang valid adalah AUTHORIZATION_FAILED.

principalIdentifier

Kredensi yang digunakan untuk mengautentikasi. Untuk sertifikat otentikasi TLS timbal balik, ini adalah ID sertifikat. Untuk koneksi lain, ini adalah IAM kredensi.

sessionIdentifier

Pengidentifikasi unik secara global AWS IoT yang ada selama masa sesi.

ipAddress

Alamat IP dari klien penghubung. Ini bisa dalam IPv4 atau IPv6 format. Ditemukan dalam pesan koneksi saja.

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" }

Acara Berlangganan/Berhenti Berlangganan

AWS IoT menerbitkan pesan ke MQTT topik berikut saat klien berlangganan atau berhenti berlangganan topik: MQTT

$aws/events/subscriptions/subscribed/clientId

atau

$aws/events/subscriptions/unsubscribed/clientId

Di clientId mana ID MQTT klien 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 JSON elemen yang terkandung dalam pesan berlangganan dan berhenti berlangganan yang diterbitkan ke dan topik. $aws/events/subscriptions/subscribed/clientId $aws/events/subscriptions/unsubscribed/clientId

clientId

ID klien dari klien berlangganan atau berhenti berlangganan.

catatan

Klien IDs yang berisi # atau + tidak menerima peristiwa siklus hidup.

thingName

Nama benda IoT Anda. thingNamehanya akan disertakan jika klien terhubung menggunakan fitur hal eksklusif.

eventType

Jenis peristiwa. Nilai-nilai yang valid adalah subscribed atau unsubscribed.

principalIdentifier

Kredensi yang digunakan untuk mengautentikasi. Untuk sertifikat otentikasi TLS timbal balik, ini adalah ID sertifikat. Untuk koneksi lain, ini adalah IAM kredensi.

sessionIdentifier

Pengidentifikasi unik secara global AWS IoT yang ada selama masa sesi.

timestamp

Perkiraan kapan peristiwa itu terjadi.

topik

Sebuah array MQTT topik yang klien telah berlangganan.

catatan

Pesan siklus hidup mungkin dikirim rusak. Anda mungkin menerima pesan duplikat.