

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

# Pemberitahuan integrasi terkelola
<a name="managedintegrations-notifications"></a>

Pemberitahuan integrasi terkelola memberikan pembaruan dan wawasan utama dari perangkat. Pemberitahuan mencakup peristiwa konektor, perintah perangkat, peristiwa siklus hidup, pembaruan OTA (Over-the-Air), dan laporan kesalahan. Wawasan ini memberikan informasi yang dapat ditindaklanjuti untuk membuat alur kerja otomatis, mengambil tindakan segera, atau menyimpan data peristiwa untuk pemecahan masalah.

Saat ini, hanya aliran data Amazon Kinesis yang didukung sebagai tujuan notifikasi integrasi terkelola. Pertama-tama Anda harus menyiapkan aliran data Amazon Kinesis dan mengizinkan akses integrasi terkelola ke aliran data sebelum menyiapkan notifikasi. 

## Siapkan Amazon Kinesis untuk notifikasi
<a name="kinesis-setup"></a>

**Contents**
+ [Langkah 1: Buat aliran data Amazon Kinesis](#create-data-stream)
+ [Langkah 2: Buat kebijakan izin](#create-permissions-policy)
+ [Langkah 3: Arahkan ke dasbor IAM dan pilih Peran](#navigate-roles)
+ [Langkah 4: Gunakan kebijakan kepercayaan khusus](#custom-trust-policy)
+ [Langkah 5: Terapkan kebijakan izin Anda](#apply-permissions-policy)
+ [Langkah 6: Masukkan nama peran](#finalize-role)

Untuk mengatur Amazon Kinesis untuk notifikasi integrasi terkelola, ikuti langkah-langkah berikut:

### Langkah 1: Buat aliran data Amazon Kinesis
<a name="create-data-stream"></a>

Amazon Kinesis Data Stream dapat menelan sejumlah besar data secara real time, menyimpan data dengan tahan lama, dan membuat data tersedia untuk dikonsumsi oleh aplikasi.

**Untuk membuat aliran data Amazon Kinesis**
+ Untuk membuat aliran data Kinesis, ikuti langkah-langkah yang diuraikan dalam [Membuat dan mengelola aliran data Kinesis](https://docs.aws.amazon.com/streams/latest/dev/working-with-streams.html).

### Langkah 2: Buat kebijakan izin
<a name="create-permissions-policy"></a>

Buat kebijakan izin yang memungkinkan integrasi terkelola mengakses aliran data Kinesis Anda.

**Untuk membuat kebijakan izin**
+ Untuk membuat kebijakan izin, salin kebijakan di bawah ini dan ikuti langkah-langkah yang diuraikan dalam [Membuat kebijakan menggunakan editor JSON](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create-console.html#access_policies_create-json-editor)

------
#### [ JSON ]

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Action": "kinesis:PutRecord",
              "Resource": "*",
              "Effect": "Allow"
          }
      ]
  }
  ```

------

### Langkah 3: Arahkan ke dasbor IAM dan pilih Peran
<a name="navigate-roles"></a>

Buka dasbor IAM dan klik **Peran**.

**Untuk menavigasi ke dasbor IAM**
+ **Buka dasbor IAM dan klik Peran.**

  Untuk informasi selengkapnya, lihat [Pembuatan peran IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create.html) di Panduan *AWS Identity and Access Management*Pengguna.

### Langkah 4: Gunakan kebijakan kepercayaan khusus
<a name="custom-trust-policy"></a>

Anda dapat menggunakan kebijakan kepercayaan khusus untuk memberikan akses integrasi terkelola ke aliran data Kinesis.

**Untuk menggunakan kebijakan kepercayaan khusus**
+ **Buat peran baru dan pilih Kebijakan kepercayaan khusus. Klik Berikutnya.**

  Kebijakan berikut memungkinkan integrasi terkelola untuk mengambil peran, dan `Condition` pernyataan tersebut membantu mencegah masalah wakil yang membingungkan. 

------
#### [ JSON ]

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Effect": "Allow",
              "Principal": {
                  "Service": "iotmanagedintegrations.amazonaws.com"
              },
              "Action": "sts:AssumeRole",
              "Condition": {
                  "StringEquals": {
                      "aws:SourceAccount": "123456789012"
                  },
                  "ArnLike": {
                      "aws:SourceArn": "arn:aws:iotmanagedintegrations:ca-central-1:123456789012:*"
                  }
              }
          }
      ]
  }
  ```

------

### Langkah 5: Terapkan kebijakan izin Anda
<a name="apply-permissions-policy"></a>

Tambahkan kebijakan izin yang Anda buat di langkah 2 ke peran.

**Untuk menambahkan kebijakan izin**
+ **Pada halaman Tambahkan izin, cari dan tambahkan kebijakan izin yang Anda buat di langkah 2. Klik Berikutnya.**

### Langkah 6: Masukkan nama peran
<a name="finalize-role"></a>
+ **Masukkan nama peran dan klik Buat peran.**

## Siapkan notifikasi integrasi terkelola
<a name="managedintegrations-notification-setup"></a>

**Topics**
+ [Langkah 1: Berikan izin pengguna untuk memanggil API CreateDestination](#user-permissions)
+ [Langkah 2: Panggil CreateDestination API](#call-createdestination)
+ [Langkah 3: Panggil CreateNotificationConfiguration API](#call-notification-config)

Untuk mengatur notifikasi integrasi terkelola, ikuti langkah-langkah berikut:

### Langkah 1: Berikan izin pengguna untuk memanggil API CreateDestination
<a name="user-permissions"></a>
+ **Berikan izin pengguna untuk memanggil API `CreateDestination`**

   Kebijakan berikut menentukan persyaratan bagi pengguna untuk memanggil [CreateDestination](https://docs.aws.amazon.com/iot-mi/latest/APIReference/API_CreateDestination.html)API.

   Lihat [Memberikan izin pengguna untuk meneruskan peran ke AWS layanan](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_passrole.html) di Panduan *AWS Identity and Access Management*Pengguna untuk mendapatkan izin peran sandi ke integrasi terkelola. 

------
#### [ JSON ]

****  

  ```
  {
        "Version":"2012-10-17",		 	 	 
        "Statement":[
           {
              "Effect":"Allow",
              "Action":"iam:PassRole",
              "Resource":"arn:aws:iam::123456789012:role/ROLE_CREATED_IN_PREVIOUS_STEP",
              "Condition":{
                 "StringEquals":{
                    "iam:PassedToService":"iotmanagedintegrations.amazonaws.com"
                 }
              }
           },
           {
              "Effect":"Allow",
              "Action":"iotmanagedintegrations:CreateDestination",
              "Resource":"*"
           }
        ]
  }
  ```

------

### Langkah 2: Panggil CreateDestination API
<a name="call-createdestination"></a>
+ **Panggil `CreateDestination` API**

  Setelah Anda membuat aliran data Amazon Kinesis dan peran akses streaming, panggil [CreateDestination](https://docs.aws.amazon.com/iot-mi/latest/APIReference/API_CreateDestination.html)API untuk membuat tujuan notifikasi tempat notifikasi akan diarahkan. Untuk `DeliveryDestinationArn` parameternya, gunakan `arn` aliran data Amazon Kinesis baru Anda.

  ```
  {
      "DeliveryDestinationArn": "Your Kinesis arn"
      "DeliveryDestinationType": "KINESIS"
      "Name": "DestinationName"
      "ClientToken": "string"
      "RoleArn": "arn:aws:iam::accountID:role/ROLE_CREATED_IN_PREVIOUS_STEP"
  }
  ```
**catatan**  
`ClientToken`adalah token idempotensi. Jika Anda mencoba lagi permintaan yang berhasil diselesaikan pada awalnya menggunakan token dan parameter klien yang sama, maka upaya coba lagi akan berhasil tanpa melakukan tindakan lebih lanjut.

### Langkah 3: Panggil CreateNotificationConfiguration API
<a name="call-notification-config"></a>
+ **Panggil `CreateNotificationConfiguration` API**

  Terakhir, gunakan [CreateNotificationConfiguration](https://docs.aws.amazon.com/iot-mi/latest/APIReference/API_CreateNotificationConfiguration.html)API untuk membuat konfigurasi notifikasi yang merutekan jenis peristiwa yang dipilih ke tujuan yang diwakili oleh aliran data Kinesis. Dalam `DestinationName` parameter, gunakan nama tujuan yang sama seperti ketika Anda awalnya memanggil `CreateDestination` API.

  ```
  {
      "EventType": "DEVICE_EVENT"
      "DestinationName" // This name has to be identical to the name in createDestination API
      "ClientToken": "string"
  }
  ```

## Jenis acara dipantau dengan integrasi terkelola
<a name="managedintegrations-notification-listevents"></a>

Berikut ini adalah jenis acara yang dipantau dengan notifikasi integrasi terkelola:
+ `DEVICE_COMMAND`
  + Status perintah [SendManagedThingCommand](https://docs.aws.amazon.com/iot-mi/latest/APIReference/API_SendManagedThingCommand.html)API. Nilai yang valid adalah `succeeded` maupun `failed`.

    ```
    {
                  "version":"0",
                  "messageId":"6a7e8feb-b491-4cf7-a9f1-bf3703467718",
                  "messageType":"DEVICE_COMMAND",
                  "source":"aws.iotmanagedintegrations",
                  "customerAccountId":"123456789012",
                  "timestamp":"2017-12-22T18:43:48Z",
                  "region":"ca-central-1",
                  "resources":[
                        "arn:aws:iotmanagedintegrations:ca-central-1:123456789012:managed-thing/6a7e8feb-b491-4cf7-a9f1-bf3703467718"
                  ],
                  "payload":{
                    "traceId":"1234567890abcdef0",
                    "receivedAt":"2017-12-22T18:43:48Z",
                    "executedAt":"2017-12-22T18:43:48Z",
                    "result":"failed"
                  }
    }
    ```
+ `DEVICE_COMMAND_REQUEST`
  + Permintaan perintah dari Web Real-Time Communication (WebRTC).

    Standar WebRTC memungkinkan komunikasi antara dua rekan. Rekan-rekan ini dapat mengirimkan video real-time, audio, dan data arbitrer. Integrasi terkelola mendukung WebRTC untuk mengaktifkan jenis streaming antara aplikasi seluler pelanggan dan perangkat pengguna akhir. [Untuk informasi selengkapnya tentang standar WebRTC, lihat WebRTC.](https://webrtc.org/)

    ```
    {
                  "version":"0",
                  "messageId":"6a7e8feb-b491-4cf7-a9f1-bf3703467718",
                  "messageType":"DEVICE_COMMAND_REQUEST",
                  "source":"aws.iotmanagedintegrations",
                  "customerAccountId":"123456789012",
                  "timestamp":"2017-12-22T18:43:48Z",
                  "region":"ca-central-1",
                  "resources":[
                      "arn:aws:iotmanagedintegrations:ca-central-1:123456789012:managed-thing/6a7e8feb-b491-4cf7-a9f1-bf3703467718"
                  ],
                  "payload":{
                    "endpoints":[{
                      "endpointId":"1",
                      "capabilities":[{
                        "id":"aws.DoorLock",
                        "name":"Door Lock",
                        "version":"1.0"
                      }]
                    }]
                  }
    }
    ```
+ `DEVICE_DISCOVERY_STATUS`
  + Status penemuan perangkat.

    ```
    {
          "version":"0",
          "messageId":"6a7e8feb-b491-4cf7-a9f1-bf3703467718",
          "messageType":"DEVICE_DISCOVERY_STATUS",
          "source":"aws.iotmanagedintegrations",
          "customerAccountId":"123456789012",
          "timestamp":"2017-12-22T18:43:48Z",
          "region":"ca-central-1",
          "resources":[
            "arn:aws:iotmanagedintegrations:ca-central-1:123456789012:managed-thing/6a7e8feb-b491-4cf7-a9f1-bf3703467718"
          ],
          "payload":{
            "deviceCount": 1,
            "deviceDiscoveryId": "123",
            "status": "SUCCEEDED"
          }
    }
    ```
+ `DEVICE_EVENT`
  + Pemberitahuan peristiwa perangkat yang terjadi.

    ```
    {
          "version":"1.0",
          "messageId":"2ed545027bd347a2b855d28f94559940",
          "messageType":"DEVICE_EVENT",
          "source":"aws.iotmanagedintegrations",
          "customerAccountId":"123456789012",
          "timestamp":"1731630247280",
          "resources":[
            "/quit/1b15b39992f9460ba82c6c04595d1f4f"
          ],
          "payload":{
            "endpoints":[{
              "endpointId":"1",
              "capabilities":[{
                "id":"aws.DoorLock",
                "name":"Door Lock",
                "version":"1.0",
                "properties":[{
                  "name":"ActuatorEnabled",
                  "value":"true"
                }]
              }]
            }]
          }
    }
    ```
+ `DEVICE_LIFE_CYCLE`
  + Status siklus hidup perangkat.

    ```
    { 
          "version": "1.0.0", 
          "messageId": "8d1e311a473f44f89d821531a0907b05",
          "messageType": "DEVICE_LIFE_CYCLE",
          "source": "aws.iotmanagedintegrations",
          "customerAccountId": "123456789012",
          "timestamp": "2024-11-14T19:55:57.568284645Z",
          "region": "ca-central-1",
          "resources": [
            "arn:aws:iotmanagedintegrations:ca-central-1:123456789012:managed-thing/d5c280b423a042f3933eed09cf408657"
            ],
          "payload": {
            "deviceDetails": {
              "id": "d5c280b423a042f3933eed09cf408657",
              "arn": "arn:aws:iotmanagedintegrations:ca-central-1:123456789012:managed-thing/d5c280b423a042f3933eed09cf408657",
              "createdAt": "2024-11-14T19:55:57.515841147Z",
              "updatedAt": "2024-11-14T19:55:57.515841559Z"
            },
            "status": "UNCLAIMED" 
          } 
    }
    ```
+ `DEVICE_OTA`
  + Pemberitahuan OTA perangkat.
+ `DEVICE_STATE`
  + Pemberitahuan saat status perangkat telah diperbarui.

    ```
    { 
          "messageType": "DEVICE_STATE",
          "source": "aws.iotmanagedintegrations",
          "customerAccountId": "123456789012",
          "timestamp": "1731623291671",
          "resources": [
            "arn:aws:iotmanagedintegrations:ca-central-1:123456789012:managed-thing/61889008880012345678"
          ],
          "payload": {
            "addedStates": {
              "endpoints": [{
                "endpointId": "nonEndpointId",
                "capabilities": [{
                  "id": "aws.OnOff",
                  "name": "On/Off",
                  "version": "1.0",
                  "properties": [{
                    "name": "OnOff",
                    "value": {
                      "propertyValue": "\"onoff\"",
                      "lastChangedAt": "2024-06-11T01:38:09.000414Z"
                    }
                  }
                ]}
              ]}
            ]}
          } 
    }
    ```