

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 受管整合通知
<a name="managedintegrations-notifications"></a>

受管整合通知可提供來自裝置的更新和重要洞見。通知包括連接器事件、裝置命令、生命週期事件、OTA Over-the-Air) 更新和錯誤報告。這些洞見提供可行的資訊，可用來建立自動化工作流程、立即採取行動，或存放事件資料以進行故障診斷。

目前，僅支援 Amazon Kinesis 資料串流做為受管整合通知的目的地。您必須先設定 Amazon Kinesis 資料串流，並允許受管整合存取資料串流，再設定通知。

## 為通知設定 Amazon Kinesis
<a name="kinesis-setup"></a>

**Contents**
+ [步驟 1：建立 Amazon Kinesis 資料串流](#create-data-stream)
+ [步驟 2：建立許可政策](#create-permissions-policy)
+ [步驟 3：導覽至 IAM 儀表板，然後選取角色](#navigate-roles)
+ [步驟 4：使用自訂信任政策](#custom-trust-policy)
+ [步驟 5：套用您的許可政策](#apply-permissions-policy)
+ [步驟 6：輸入角色名稱](#finalize-role)

若要為受管整合通知設定 Amazon Kinesis，請遵循下列步驟：

### 步驟 1：建立 Amazon Kinesis 資料串流
<a name="create-data-stream"></a>

Amazon Kinesis Data Stream 可以即時擷取大量資料、長期存放資料，並讓資料可供應用程式使用。

**建立 Amazon Kinesis 資料串流**
+ 若要建立 Kinesis 資料串流，請遵循[建立和管理 Kinesis 資料串流](https://docs.aws.amazon.com/streams/latest/dev/working-with-streams.html)中概述的步驟。

### 步驟 2：建立許可政策
<a name="create-permissions-policy"></a>

建立允許受管整合存取 Kinesis 資料串流的許可政策。

**建立許可政策**
+ 若要建立許可政策，請複製以下政策，並遵循[使用 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"
          }
      ]
  }
  ```

------

### 步驟 3：導覽至 IAM 儀表板，然後選取角色
<a name="navigate-roles"></a>

開啟 IAM 儀表板，然後按一下**角色**。

**導覽至 IAM 儀表板**
+ **開啟 IAM 儀表板，然後按一下角色。**

  如需詳細資訊，請參閱*AWS Identity and Access Management*《 使用者指南》中的[建立 IAM 角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create.html)。

### 步驟 4：使用自訂信任政策
<a name="custom-trust-policy"></a>

您可以使用自訂信任政策來授予 Kinesis 資料串流的受管整合存取權。

**使用自訂信任政策**
+ **建立新的角色，然後選擇自訂信任政策。按一下下一步。 **

  下列政策允許 受管整合擔任角色，而 `Condition`陳述式有助於防止混淆代理人問題。

------
#### [ 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:*"
                  }
              }
          }
      ]
  }
  ```

------

### 步驟 5：套用您的許可政策
<a name="apply-permissions-policy"></a>

將您在步驟 2 中建立的許可政策新增至角色。

**新增許可政策**
+ **在新增許可頁面上，搜尋並新增您在步驟 2 中建立的許可政策。按一下下一步。 **

### 步驟 6：輸入角色名稱
<a name="finalize-role"></a>
+ **輸入角色名稱，然後按一下建立角色。**

## 設定受管整合通知
<a name="managedintegrations-notification-setup"></a>

**Topics**
+ [步驟 1：授予使用者呼叫 CreateDestination API 的許可](#user-permissions)
+ [步驟 2：呼叫 CreateDestination API](#call-createdestination)
+ [步驟 3：呼叫 CreateNotificationConfiguration API](#call-notification-config)

若要設定受管整合通知，請遵循下列步驟：

### 步驟 1：授予使用者呼叫 CreateDestination API 的許可
<a name="user-permissions"></a>
+ **授予使用者呼叫 `CreateDestination` API 的許可**

   下列政策定義使用者呼叫 [CreateDestination](https://docs.aws.amazon.com/iot-mi/latest/APIReference/API_CreateDestination.html) API 的需求。

   請參閱*AWS Identity and Access Management*《 使用者指南》中的[授予使用者將角色傳遞至 AWS 服務的許可](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_passrole.html)，以取得受管整合的傳遞許可。

------
#### [ 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":"*"
           }
        ]
  }
  ```

------

### 步驟 2：呼叫 CreateDestination API
<a name="call-createdestination"></a>
+ **呼叫 `CreateDestination` API**

  在您建立 Amazon Kinesis 資料串流和串流存取角色之後，請呼叫 [CreateDestination](https://docs.aws.amazon.com/iot-mi/latest/APIReference/API_CreateDestination.html) API 來建立通知目的地，以便將通知路由到該目的地。對於 `DeliveryDestinationArn` 參數，請使用來自新 Amazon Kinesis 資料串流`arn`的 。

  ```
  {
      "DeliveryDestinationArn": "Your Kinesis arn"
      "DeliveryDestinationType": "KINESIS"
      "Name": "DestinationName"
      "ClientToken": "string"
      "RoleArn": "arn:aws:iam::accountID:role/ROLE_CREATED_IN_PREVIOUS_STEP"
  }
  ```
**注意**  
`ClientToken` 是等冪符記。如果您重試最初使用相同用戶端字符和參數成功完成的請求，則重試嘗試將成功，而無需執行任何其他動作。

### 步驟 3：呼叫 CreateNotificationConfiguration API
<a name="call-notification-config"></a>
+ **呼叫 `CreateNotificationConfiguration` API**

  最後，使用 [CreateNotificationConfiguration](https://docs.aws.amazon.com/iot-mi/latest/APIReference/API_CreateNotificationConfiguration.html) API 建立通知組態，將所選事件類型路由到 Kinesis 資料串流所代表的目的地。在 `DestinationName` 參數中，使用與最初呼叫 `CreateDestination` API 時相同的目的地名稱。

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

## 受管整合監控的事件類型
<a name="managedintegrations-notification-listevents"></a>

以下是使用受管整合通知監控的事件類型：
+ `DEVICE_COMMAND`
  + [SendManagedThingCommand](https://docs.aws.amazon.com/iot-mi/latest/APIReference/API_SendManagedThingCommand.html) API 命令的狀態。有效值是 `succeeded` 或 `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`
  + Web 即時通訊 (WebRTC) 的命令請求。

    WebRTC 標準允許兩個對等之間的通訊。這些對等可以傳輸即時視訊、音訊和任意資料。受管整合支援 WebRTC，可在客戶行動應用程式和最終使用者的裝置之間啟用這些類型的串流。如需 WebRTC 標準的詳細資訊，請參閱 [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`
  + 裝置探索狀態。

    ```
    {
          "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`
  + 發生裝置事件的通知。

    ```
    {
          "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`
  + 裝置生命週期的狀態。

    ```
    { 
          "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`
  + 裝置 OTA 通知。
+ `DEVICE_STATE`
  + 更新裝置狀態時的通知。

    ```
    { 
          "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"
                    }
                  }
                ]}
              ]}
            ]}
          } 
    }
    ```