

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 관리형 통합 알림
<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 서비스에 역할을 전달할 수 있는](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 표준은 두 피어 간의 통신을 허용합니다. 이러한 피어는 실시간 비디오, 오디오 및 임의 데이터를 전송할 수 있습니다. 관리형 통합은 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"
                    }
                  }
                ]}
              ]}
            ]}
          } 
    }
    ```