

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# マネージド統合通知
<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 データストリームへのアクセスを許可できます。

**カスタム信頼ポリシーを使用するには**
+ **新しいロールを作成し、カスタム信頼ポリシーを選択します。Next をクリックします。 **

  次のポリシーでは、マネージド統合がロールを引き受けることを許可し、 `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 で作成したアクセス許可ポリシーを検索して追加します。Next をクリックします。 **

### ステップ 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 サービスにロールを渡すアクセス許可をユーザーに付与](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_passrole.html)する」を参照してください。 *AWS Identity and Access Management*

------
#### [ 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 Real-Time Communication (WebRTC) からのコマンドリクエスト。

    WebRTC 標準では、2 つのピア間の通信が可能です。これらのピアは、リアルタイムの動画、オーディオ、および任意のデータを送信できます。マネージド統合は 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"
                    }
                  }
                ]}
              ]}
            ]}
          } 
    }
    ```