

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

# Peristiwa siklus hidup
<a name="life-cycle-events"></a>

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.  
`thingName`hanya akan disertakan jika klien terhubung menggunakan fitur [hal eksklusif](exclusive-thing.md).

**Topics**
+ [Hubungkan/Putuskan acara](#connect-disconnect)
+ [Acara kegagalan percobaan Connect](#connect-authfailure-event)
+ [Acara Berlangganan/Berhenti Berlangganan](#subscribe-unsubscribe-events)

## Hubungkan/Putuskan acara
<a name="connect-disconnect"></a>

**catatan**  
Dengan pengindeksan armada Manajemen AWS IoT Perangkat, Anda dapat mencari sesuatu, menjalankan kueri agregat, dan membuat grup dinamis berdasarkan peristiwa sesuatu. Connect/Disconnect Untuk informasi selengkapnya, lihat [Pengindeksan armada](https://docs.aws.amazon.com//iot/latest/developerguide/iot-indexing.html).

AWS IoT menerbitkan pesan ke topik MQTT 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 elemen JSON yang terkandung dalam connection/disconnection pesan yang dipublikasikan ke `$aws/events/presence/connected/{{clientId}}` topik.

**clientId**  
ID klien dari klien yang menghubungkan atau memutuskan sambungan.  
Klien IDs yang berisi \# atau \+ tidak menerima peristiwa siklus hidup.

**thingName**  
Nama benda IoT Anda. `thingName`hanya akan disertakan jika klien terhubung menggunakan fitur [hal eksklusif](exclusive-thing.md).

**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 and Testament (LWT)](mqtt.md#mqtt-lwt) ketika pemutusan terjadi.      
[See the AWS documentation website for more details](http://docs.aws.amazon.com/id_id/iot/latest/developerguide/life-cycle-events.html)
1 Jika perangkat memiliki koneksi aktif sebelum menerima kesalahan ini.  
2 Untuk mencegah pesan Last Will and Testament (LWT), atur `preventWillMessage=true` untuk mengganti perilaku pengiriman LWT default `DeleteConnection` API.

**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 timbal balik TLS, ini adalah ID sertifikat. Untuk koneksi lain, ini adalah kredensi IAM.

**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.  
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 yang dikonfigurasi 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
<a name="reconnect"></a>

Praktik terbaik adalah selalu menerapkan status tunggu untuk peristiwa siklus hidup, termasuk pesan [Kehendak Terakhir dan Perjanjian (LWT](mqtt.md)). 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](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-delay-queues.html). Saat klien menerima LWT atau peristiwa 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
<a name="connect-authfailure-event"></a>

AWS IoT menerbitkan pesan ke topik MQTT 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 elemen JSON yang terkandung dalam pesan otorisasi sambungkan yang dipublikasikan ke topik. `$aws/events/presence/connect_failed/{{clientId}}`

**clientId**  
ID klien klien yang mencoba dan gagal terhubung.  
Klien IDs yang berisi \# atau \+ tidak menerima peristiwa siklus hidup.

**thingName**  
Nama benda IoT Anda. `thingName`hanya akan disertakan jika klien terhubung menggunakan fitur [hal eksklusif](exclusive-thing.md).

**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 timbal balik TLS, ini adalah ID sertifikat. Untuk koneksi lain, ini adalah kredensi IAM.

**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
<a name="subscribe-unsubscribe-events"></a>

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 pesan. AWS IoT 

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 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.  
Klien IDs yang berisi \# atau \+ tidak menerima peristiwa siklus hidup.

thingName  
Nama benda IoT Anda. `thingName`hanya akan disertakan jika klien terhubung menggunakan fitur [hal eksklusif](exclusive-thing.md).

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

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

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

timestamp  
Perkiraan kapan peristiwa itu terjadi.

topik  
Sebuah array dari topik MQTT yang klien telah berlangganan.

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