

지원 종료 알림: 2026년 5월 20일에 AWS 에 대한 지원이 종료됩니다 AWS IoT Events. 2026년 5월 20일 이후에는 AWS IoT Events 콘솔 또는 AWS IoT Events 리소스에 더 이상 액세스할 수 없습니다. 자세한 내용은 [AWS IoT Events 지원 종료를 참조하세요](https://docs.aws.amazon.com/iotevents/latest/developerguide/iotevents-end-of-support.html).

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

# AWS IoT Events 콘솔 시작하기
<a name="iotevents-getting-started"></a>

이 섹션에서는 [AWS IoT Events 콘솔](https://console.aws.amazon.com/iotevents/)을 사용하여 입력 및 감지기 모델을 생성하는 방법을 보여줍니다. 엔진의 두 가지 상태, 즉 정상 상태와 과압 상태를 모델링합니다. 엔진에서 측정된 압력이 특정 임계값을 초과하면 모델이 정상 상태에서 과압 상태로 전환됩니다. 그런 다음 Amazon SNS 메시지를 보내 기술자에게 상태를 알립니다. 압력 판독값이 3회 연속으로 다시 임계값 아래로 떨어지면 모델이 정상 상태로 돌아가고 또 다른 Amazon SNS 메시지로 확인 메시지를 보냅니다.

비선형 회복 단계 또는 비정상적인 압력 판독값의 경우, 압력 임계값 미만으로 3회 연속 측정값을 확인하여 과압 또는 정상 메시지의 끊김 현상을 방지합니다.

콘솔에서는 사용자가 지정할 수 있는 미리 만들어진 여러 개의 감지기 모델 템플릿도 찾을 수 있습니다. 콘솔을 사용하여 다른 사용자가 작성한 감지기 모델을 가져오거나 감지기 모델을 내보내고 다른 AWS 리전에서 사용할 수도 있습니다. 감지기 모델을 가져오는 경우 새 리전에 필요한 입력을 생성하거나 다시 생성하고 사용된 역할 ARN을 업데이트해야 합니다.

 AWS IoT Events 콘솔을 사용하여 다음에 대해 알아봅니다.

**입력 정의**  
디바이스와 프로세스를 모니터링하려면 원격 측정 데이터를 AWS IoT Events로 보낼 방법이 있어야 합니다. 이는 메시지를 *입력*으로 전송하여 수행됩니다 AWS IoT Events. 여러 가지 방법으로 이 작업을 수행할 수 있습니다.  
+ [BatchPutMessage](https://docs.aws.amazon.com/iotevents/latest/apireference/API_iotevents-data_BatchPutMessage.html) 작업을 사용합니다.
+ 에서 메시지 데이터를 전달하는 AWS IoT 규칙 엔진에 대한 [AWS IoT Events 작업](https://docs.aws.amazon.com/iot/latest/developerguide/iot-rule-actions.html#iotevents-rule) 규칙을 AWS IoT Core작성합니다 AWS IoT Events. 입력 내용을 이름으로 식별해야 합니다.
+ 에서 [ CreateDataset](https://docs.aws.amazon.com/iotanalytics/latest/userguide/automate.html#aws-iot-analytics-automate-create-dataset) 작업을 AWS IoT 분석사용하여 로 데이터 세트를 생성합니다`contentDeliveryRules`. 이러한 규칙은 데이터 세트 콘텐츠가 자동으로 전송되는 AWS IoT Events 입력을 지정합니다.
디바이스에서 이러한 방식으로 데이터를 전송하려면 먼저 하나 이상의 입력을 정의해야 합니다. 이렇게 하려면 각 입력에 이름을 지정하고 입력이 모니터링하는 수신 메시지 데이터의 필드를 지정하십시오.

**감지기 모델 생성**  
*상태*를 사용하여 *감지기 모델*(디바이스 또는 프로세스의 모델)을 정의합니다. 각 상태에 대해 수신되는 입력을 평가하여 중요 이벤트를 탐지하는 조건부(부울) 논리를 정의합니다. 감지기 모델이 이벤트를 감지하면 상태를 변경하거나 다른 AWS 서비스를 사용하여 사용자 지정 빌드 또는 사전 정의된 작업을 시작할 수 있습니다. 특정 상태가 시작 또는 종료할 때 또한 선택적으로 특정 조건이 충족될 때 작업을 시작하는 추가 이벤트를 정의할 수 있습니다.  
이 자습서에서는 모델이 특정 상태에 들어가거나 종료될 때 Amazon SNS 메시지를 작업으로 전송합니다.

**디바이스 또는 프로세스 모니터링**  
여러 장치 또는 프로세스를 모니터링하는 경우 각 입력에 입력이 들어오는 특정 장치 또는 프로세스를 식별하는 필드를 지정하십시오. `CreateDetectorModel`의 `key` 필드를 참조하십시오. `key`로 식별된 입력 필드가 새 값을 인식하면 새 디바이스가 식별되고 감지기가 생성됩니다. 각 감지기는 감지기 모델의 인스턴스입니다. 새 감지기는 해당 감지기 모델이 업데이트되거나 삭제될 때까지 해당 장치에서 오는 입력에 계속 응답합니다.  
단일 프로세스를 모니터링하는 경우(여러 장치 또는 하위 프로세스가 입력을 보내는 경우에도) 고유한 식별 `key` 필드를 지정하지 않습니다. 이 경우 모델은 첫 번째 입력이 도착하면 단일 감지기(인스턴스)를 생성합니다.

**메시지를 감지기 모델에 입력으로 전송**  
디바이스에서 메시지를 보내거나 AWS IoT Events 감지기에 입력으로 처리하는 방법에는 여러 가지가 있으며, 이 경우 메시지에 추가 형식을 지정할 필요가 없습니다. 이 자습서에서는 AWS IoT 콘솔을 사용하여 메시지 데이터를 전달하는 AWS IoT 규칙 엔진에 대한 [AWS IoT Events 작업](https://docs.aws.amazon.com/iot/latest/developerguide/iot-rule-actions.html#iotevents-rule) 규칙을 작성합니다 AWS IoT Events.  
이렇게 하려면 이름으로 입력을 식별하고 AWS IoT 콘솔을 계속 사용하여 입력으로 전달되는 메시지를 생성합니다 AWS IoT Events.

**참고**  
이 자습서에서는 [AWS IoT Events 사용 사례에 대한 자습서](iotevents-tutorials.md)의 예제에서 나타나는 콘솔을 사용하여 동일한 `input` 및 `detector model`을 생성합니다. 이 JSON 예제를 사용하면 자습서를 쉽게 이해할 수 있습니다.

**Topics**
+ [시작하기 위한 사전 조건 AWS IoT Events](iotevents-getting-started-prereqs.md)
+ [에서 모델에 대한 입력 생성 AWS IoT Events](create-input-overview.md)
+ [에서 감지기 모델 생성 AWS IoT Events](iotevents-detector-model.md)
+ [에서 감지기 모델을 테스트하기 위한 입력 전송 AWS IoT Events](iotevents-iot-rules-engine.md)

# 시작하기 위한 사전 조건 AWS IoT Events
<a name="iotevents-getting-started-prereqs"></a>

 AWS 계정이 없는 경우 계정을 생성합니다.

1. 의 단계에 따라 계정 설정 및 권한이 적절한[설 AWS IoT Events정](iotevents-start.md)지 확인합니다.

1. 두 개의 Amazon Simple Notification Service(SNS) 주제를 생성하십시오.

   이 자습서(및 해당 예제) 에서는 Amazon SNS 주제를 두 개 생성했다고 가정합니다. 이러한 주제의 ARN은 `arn:aws:sns:us-east-1:123456789012:underPressureAction` 또는 `arn:aws:sns:us-east-1:123456789012:pressureClearedAction`과 같이 표시됩니다. 이러한 값을 사용자가 생성한 Amazon SNS 주제의 ARN으로 대체하십시오. 자세한 내용은 [Amazon Simple Notification Service Developer Guide](https://docs.aws.amazon.com/sns/latest/dg/)를 참조하십시오.

   Amazon SNS 주제에 알림을 게시하는 대신, 감지기가 지정한 주제와 함께 MQTT 메시지를 보내도록 할 수 있습니다. 이 옵션을 사용하면 AWS IoT 코어 콘솔을 사용하여 해당 MQTT 주제로 전송된 메시지를 구독하고 모니터링하여 감지기 모델이 인스턴스를 생성하고 해당 인스턴스가 알림을 전송하고 있는지 확인할 수 있습니다. 감지기 모델에서 생성한 입력 또는 변수를 사용하여 런타임에 MQTT 주제 이름을 동적으로 정의할 수도 있습니다.

1. 에서 AWS 리전 지원하는를 선택합니다 AWS IoT Events. 자세한 내용은 *AWS 일반 참조*의 [AWS IoT Events](https://docs.aws.amazon.com/general/latest/gr/rande.html#iotevents_region) 섹션을 참조하세요. 도움이 필요하면 [시작하기의에서 서비스 AWS Management Console](https://docs.aws.amazon.com/awsconsolehelpdocs/latest/gsg/start-service.html) *시작하기를 참조하세요 AWS Management Console*.

# 에서 모델에 대한 입력 생성 AWS IoT Events
<a name="create-input-overview"></a>

모델의 입력을 구성할 때는 디바이스 또는 프로세스가 상태를 보고하기 위해 보내는 샘플 메시지 페이로드가 포함된 파일을 수집하는 것이 좋습니다. 이러한 파일은 필요한 입력을 정의하는 데 도움이 됩니다.

이 섹션에 설명된 여러 방법을 통해 입력을 생성할 수 있습니다.

## JSON 입력 파일 생성
<a name="create-input-file"></a>

1. 시작하려면 로컬 파일 시스템에 다음과 같은 내용으로 `input.json`(이)라는 이름을 지정한 파일을 만드십시오.

   ```
   {
     "motorid": "Fulton-A32",
     "sensorData": {
       "pressure": 23,
       "temperature": 47
     }
   }
   ```

1. 이제 시작 `input.json` 파일이 생겼으므로 입력을 만들 수 있습니다. 입력을 생성하는 방법에는 두 가지가 있습니다. [AWS IoT Events 콘솔](https://console.aws.amazon.com/iotevents/)의 탐색 창을 사용하여 입력을 생성할 수 있습니다. 또는 감지기 모델이 생성된 후 감지기 모델 내에서 입력을 생성할 수 있습니다.

## 입력 생성 및 구성
<a name="create-input"></a>

경보 모델 또는 감지기 모델에 대한 *입력을* 생성하는 방법을 알아봅니다.

1. [AWS IoT Events 콘솔](https://console.aws.amazon.com/iotevents/)에 로그인하거나 새 AWS IoT Events 계정 생성 옵션을 선택합니다.

1.  AWS IoT Events 콘솔의 왼쪽 상단 모서리에서 탐색 창을 선택하고 확장합니다.

1. 왼쪽 탐색 창에서 **입력**을 선택합니다.

1. 콘솔의 오른쪽 모서리에서 **입력 생성**을 선택합니다.

1. unique**InputName**을 제공합니다.

1. *선택 사항* - 입력에 대한 **설명을** 입력합니다.

1. **JSON 파일을 업로드**하려면의 개요에서 생성한 `input.json` 파일을 선택합니다[JSON 입력 파일 생성](#create-input-file). **입력 속성 선택**은 입력한 속성 목록과 함께 나타납니다.

1. **입력 속성 선택**에서 사용할 속성을 선택하고 **생성**을 선택합니다. 이 예제에서는 **motorid** 및 **SensorData.pressure**를 선택합니다.

1. *선택 사항* - 입력에 관련 **태그를** 추가합니다.

**참고**  
[AWS IoT Events 콘솔 ](https://console.aws.amazon.com/iotevents/)에서 감지기 모델 내에 추가 입력을 생성할 수도 있습니다. 자세한 내용은 [에서 감지기 모델 내에 입력 생성 AWS IoT Events](iotevents-detector-input.md) 단원을 참조하십시오.

# 에서 감지기 모델 내에 입력 생성 AWS IoT Events
<a name="iotevents-detector-input"></a>

의 감지기 입력 AWS IoT Events 은 데이터 소스와 감지기 모델 간의 브리지 역할을 합니다. 감지기 입력은 이벤트 감지 및 자동화 기능을 지원하는 원시 데이터를 제공합니다 AWS IoT Events. 모델이 IoT 에코시스템의 실제 이벤트 및 조건에 정확하게 대응할 수 있도록 감지기 입력을 구성하는 방법을 알아봅니다.

이 섹션에서는 원격 측정 데이터 또는 메시지를 수신하기 위해 감지기 모델의 *입력을* 정의하는 방법을 보여줍니다.

**감지기 모델의 입력을 정의하려면**

1. [AWS IoT Events 콘솔](https://console.aws.amazon.com/iotevents/)을 엽니다.

1.  AWS IoT Events 콘솔에서 **감지기 모델 생성을** 선택합니다.

1. **새로 생성**을 선택합니다.

1. **입력 생성**을 선택합니다.

1. 입력에 **InputName**, 선택 사항인 **설명**을 입력하고 **파일 업로드**를 선택합니다. 표시되는 대화 상자에서의 개요에서 생성한 `input.json` 파일을 선택합니다[JSON 입력 파일 생성](create-input-overview.md#create-input-file).

1. **입력 속성 선택**에서 사용할 속성을 선택하고 **생성**을 선택합니다. 이 예제에서는 **motorId** 및 **sensorData.pressure**를 선택합니다.

# 에서 감지기 모델 생성 AWS IoT Events
<a name="iotevents-detector-model"></a>

이 주제에서는 *상태*를 사용하여 *감지기 모델*(장비 또는 프로세스의 모델)을 정의합니다.

각 상태에 대해 수신되는 입력을 평가하여 중요 이벤트를 탐지하는 조건부(부울) 논리를 정의합니다. 이벤트가 감지되면 상태가 변경되고 추가 작업을 시작할 수 있습니다. 이러한 이벤트를 전환 이벤트라고 합니다.

또한 상태에서는 감지기가 해당 상태에 들어가거나 종료할 때마다, 혹은 입력을 받을 때마다 작업을 실행할 수 있는 이벤트(이를 `OnEnter`, `OnExit` 및 `OnInput` 이벤트라고 함)를 정의합니다. 작업은 이벤트의 조건부 로직이 `true`로 평가되는 경우에만 실행됩니다.

**감지기 모델 생성**

1. 첫 번째 감지기 상태가 생성되었습니다. 수정하려면 기본 편집 스페이스에서 **State\$11**(이)라는 레이블이 있는 원을 선택하십시오.

1. **상태** 창에서 **상태 이름** 및 **OnEnter**을 입력하고 **이벤트 추가**를 선택하십시오.

1. **OnEnter 이벤트 추가** 페이지에서 **이벤트 이름**과 **이벤트 조건**을 입력합니다. 이 예제에서는 `true`를 입력해 상태를 입력할 때 이벤트가 항상 시작됨을 나타냅니다.

1. **이벤트 작업**에서 **작업 추가**를 선택합니다.

1. **이벤트 작업**에서 다음을 수행합니다.

   1. **변수 설정**을 선택합니다.

   1.  **변수 작업**의 경우 **값 할당**을 선택합니다.

   1. **변수 이름**에는 설정할 변수의 이름을 입력합니다.

   1. **변수 값**에 값 **0**(제로)을 입력합니다.

1. **저장**을 선택합니다.

   정의한 것과 같은 변수는 감지기 모델의 모든 이벤트에서 설정(지정 값)될 수 있습니다. 감지기가 상태에 도달하고 해당 상태가 정의되거나 설정된 작업을 실행한 후에만 변수 값을 참조할 수 있습니다(예: 이벤트의 조건부 로직).

1. **상태** 창에서 **상태** 옆의 **X**를 선택해 **감지기 모델 팔레트**로 돌아갑니다.

1. 두 번째 감지기 상태를 만들려면 **감지기 모델 팔레트**에서 **상태**를 선택하고 기본 편집 스페이스로 드래그하십시오. 그러면 `untitled_state_1` 제목이 붙은 상태가 만들어집니다.

1. 첫 번째 상태(**보통**)에서 일시 중지합니다. 상태 둘레에 화살표가 나타납니다.

1. 화살표를 클릭하여 첫 번째 상태에서 두 번째 상태로 드래그합니다. 첫 번째 상태에서 두 번째 상태로 이어지는 지시선(**제목 없음**)이 나타납니다.

1. **제목 없음** 라인을 선택합니다. **전환 이벤트** 창에서 **이벤트 이름**과 **이벤트 트리거 로직**을 입력합니다.

1. **전환 이벤트** 창에서 **작업 추가**를 선택합니다.

1. **전환 이벤트 작업 추가** 창에서 **작업 추가**를 선택합니다.

1.  **작업 선택**에서 **변수 설정**을 선택합니다.

   1. **변수 작업**의 경우 **값 할당**을 선택합니다.

   1. **변수 이름**에 변수의 이름을 입력합니다.

   1. **값 할당**에 `$variable.pressureThresholdBreached + 3`과 같은 값을 입력합니다

   1. **저장**을 선택합니다.

1. 두 번째 상태 **untitled\$1state\$11**를 선택합니다.

1. **상태** 창에서 **주 이름**을 입력하고 **On Enter**에 대해 **이벤트 추가**를 선택합니다.

1. **OnEnter 이벤트** 추가 페이지에서 **이벤트 이름** 및 **이벤트 조건**을 입력합니다. **작업 추가**를 선택합니다.

1. **작업 선택**에서 **SNS 메시지 보내기**를 선택합니다.

   1. **SNS 주제**에 사용할 Amazon SNS 주제의 대상 ARN을 입력합니다.

   1. **저장**을 선택합니다.

1. 예제에 이벤트를 계속 추가하십시오.

   1. **OnInput**의 경우, **이벤트 추가**를 선택하고 다음 이벤트 정보를 입력하고 저장합니다.

      ```
        Event name: Overpressurized
        Event condition: $input.PressureInput.sensorData.pressure > 70
        Event actions:
          Set variable:
            Variable operation: Assign value
            Variable name: pressureThresholdBreached
            Assign value: 3
      ```

   1. **OnInput**의 경우, **이벤트 추가**를 선택하고 다음 이벤트 정보를 입력하고 저장합니다.

      ```
        Event name: Pressure Okay
        Event condition: $input.PressureInput.sensorData.pressure <= 70
        Event actions:
          Set variable:
            Variable operation: Decrement
            Variable name: pressureThresholdBreached
      ```

   1. **OnExit**의 경우, **이벤트 추가**를 선택하고 생성한 Amazon SNS 주제의 ARN을 사용하여 다음 이벤트 정보를 입력하고 저장합니다.

      ```
        Event name: Normal Pressure Restored
        Event condition: true
        Event actions:
          Send SNS message: 
            Target arn: arn:aws:sns:us-east-1:123456789012:pressureClearedAction
      ```

1. 두 번째 상태(**위험**``) 에서 일시 중지합니다. 상태 둘레에 화살표가 나타납니다.

1. 화살표를 클릭하여 두 번째 상태에서 첫 번째 상태로 드래그합니다. **제목 없음** 레이블이 있는 지시선이 나타납니다.

1. **제목 없음** 라인을 선택하고 **전환 이벤트** 창에서 다음 정보를 사용하여 **이벤트 이름**과 **이벤트 트리거 로직**을 입력합니다.

   ```
   {
     Event name: BackToNormal
     Event trigger logic: $input.PressureInput.sensorData.pressure <= 70 && $variable.pressureThresholdBreached <= 0
   }
   ```

   트리거 로직에서 `$input` 값과 `$variable` 값을 테스트하는 이유에 대한 자세한 내용은 [AWS IoT Events 감지기 모델 제한 사항 및 제한 사항](iotevents-restrictions-detector-model.md)의 변수 값 가용성 항목을 참조하십시오.

1. **시작** 상태를 선택합니다. 기본적으로 이 상태는 감지기 모델을 생성할 때 생성되었습니다. **시작** 창에서 **대상 상태**(예: **보통**)를 선택합니다.

1. 그런 다음, 입력을 수신하도록 감지기 모델을 구성합니다. 오른쪽 상단 모서리에서 **게시**를 선택합니다.

1. **감지기 모델 게시** 창에서 다음을 수행합니다.

   1.  **감지기 모델 이름**, **설명**, **역할** 이름을 입력합니다. 이 역할은 사용자를 위해 생성됩니다.

   1. **각 고유 키 값에 대한 감지기 만들기**를 선택합니다. 고유한 **역할**을 생성하여 사용하려면 [에 대한 권한 설정 AWS IoT Events](iotevents-permissions.md)에 나와 있는 단계를 따르고 여기에 **역할**로 입력합니다.

1. **감지기 생성 키**의 경우, 이전에 정의한 입력 속성 중 하나의 이름을 선택합니다. 감지기 생성 키로 선택하는 속성은 각 메시지 입력에 있어야 하며 메시지를 보내는 각 디바이스마다 고유해야 합니다. 이 예제에서는 **motorid** 속성을 사용합니다.

1. [**Save and publish(저장 및 게시)**]를 선택합니다.

**참고**  
지정된 감지기 모델에 대해 생성되는 고유 감지기의 수는 전송된 입력 메시지를 기반으로 합니다. 감지기 모델이 생성되면 입력 속성에서 키가 선택됩니다. 이 키는 사용할 감지기 인스턴스를 결정합니다. (이 감지기 모델에서) 이전에 본 적이 없는 키일 경우, 새 감지기 인스턴스가 생성됩니다. 이전에 본 적이 있는 키일 경우, 이 키 값에 해당하는 기존 감지기 인스턴스를 사용합니다.

감지기 모델 정의의 백업 사본(JSON 내)을 만들어 감지기 모델을 재생성 또는 업데이트하거나 템플릿으로 사용하여 다른 감지기 모델을 생성할 수 있습니다.

콘솔 또는 다음 CLI 명령을 사용하여 수행할 수 있습니다. 필요한 경우 이전 단계에서 게시할 때 사용한 것과 일치하도록 감지기 모델 이름을 변경하십시오.

```
aws iotevents describe-detector-model  --detector-model-name motorDetectorModel > motorDetectorModel.json 
```

그러면 다음과 비슷한 내용이 포함된 파일(`motorDetectorModel.json`)이 생성됩니다.

```
{
    "detectorModel": {
        "detectorModelConfiguration": {
            "status": "ACTIVE", 
            "lastUpdateTime": 1552072424.212, 
            "roleArn": "arn:aws:iam::123456789012:role/IoTEventsRole", 
            "creationTime": 1552072424.212, 
            "detectorModelArn": "arn:aws:iotevents:us-west-2:123456789012:detectorModel/motorDetectorModel", 
            "key": "motorid", 
            "detectorModelName": "motorDetectorModel", 
            "detectorModelVersion": "1"
        }, 
        "detectorModelDefinition": {
            "states": [
                {
                    "onInput": {
                        "transitionEvents": [
                            {
                                "eventName": "Overpressurized", 
                                "actions": [
                                    {
                                        "setVariable": {
                                            "variableName": "pressureThresholdBreached", 
                                            "value": "$variable.pressureThresholdBreached + 3"
                                        }
                                    }
                                ], 
                                "condition": "$input.PressureInput.sensorData.pressure > 70", 
                                "nextState": "Dangerous"
                            }
                        ], 
                        "events": []
                    }, 
                    "stateName": "Normal", 
                    "onEnter": {
                        "events": [
                            {
                                "eventName": "init", 
                                "actions": [
                                    {
                                        "setVariable": {
                                            "variableName": "pressureThresholdBreached", 
                                            "value": "0"
                                        }
                                    }
                                ], 
                                "condition": "true"
                            }
                        ]
                    }, 
                    "onExit": {
                        "events": []
                    }
                }, 
                {
                    "onInput": {
                        "transitionEvents": [
                            {
                                "eventName": "Back to Normal", 
                                "actions": [], 
                                "condition": "$variable.pressureThresholdBreached <= 1 && $input.PressureInput.sensorData.pressure <= 70", 
                                "nextState": "Normal"
                            }
                        ], 
                        "events": [
                            {
                                "eventName": "Overpressurized", 
                                "actions": [
                                    {
                                        "setVariable": {
                                            "variableName": "pressureThresholdBreached", 
                                            "value": "3"
                                        }
                                    }
                                ], 
                                "condition": "$input.PressureInput.sensorData.pressure > 70"
                            }, 
                            {
                                "eventName": "Pressure Okay", 
                                "actions": [
                                    {
                                        "setVariable": {
                                            "variableName": "pressureThresholdBreached", 
                                            "value": "$variable.pressureThresholdBreached - 1"
                                        }
                                    }
                                ], 
                                "condition": "$input.PressureInput.sensorData.pressure <= 70"
                            }
                        ]
                    }, 
                    "stateName": "Dangerous", 
                    "onEnter": {
                        "events": [
                            {
                                "eventName": "Pressure Threshold Breached", 
                                "actions": [
                                    {
                                        "sns": {
                                            "targetArn": "arn:aws:sns:us-west-2:123456789012:MyIoTButtonSNSTopic"
                                        }
                                    }
                                ], 
                                "condition": "$variable.pressureThresholdBreached > 1"
                            }
                        ]
                    }, 
                    "onExit": {
                        "events": [
                            {
                                "eventName": "Normal Pressure Restored", 
                                "actions": [
                                    {
                                        "sns": {
                                            "targetArn": "arn:aws:sns:us-west-2:123456789012:IoTVirtualButtonTopic"
                                        }
                                    }
                                ], 
                                "condition": "true"
                            }
                        ]
                    }
                }
            ], 
            "initialStateName": "Normal"
        }
    }
}
```

# 에서 감지기 모델을 테스트하기 위한 입력 전송 AWS IoT Events
<a name="iotevents-iot-rules-engine"></a>

에서 원격 측정 데이터를 수신하는 방법에는 여러 가지가 있습니다 AWS IoT Events ( 참조[에서 데이터를 수신하고 작업을 트리거하는 데 지원되는 작업 AWS IoT Events](iotevents-supported-actions.md)). 이 주제에서는 AWS IoT 콘솔에서 메시지를 AWS IoT Events 감지기에 입력으로 전달하는 AWS IoT 규칙을 생성하는 방법을 보여줍니다. AWS IoT 콘솔의 MQTT 클라이언트를 사용하여 테스트 메시지를 보낼 수 있습니다. 이 방법을 사용하면 디바이스가 AWS IoT 메시지 브로커를 사용하여 MQTT 메시지를 전송할 수 있을 AWS IoT Events 때에 원격 측정 데이터를 가져올 수 있습니다.

**감지기 모델을 테스트하기 위한 입력을 보내려면**

1. [AWS IoT Core 콘솔](https://console.aws.amazon.com/iot/)을 엽니다. 왼쪽 탐색 창의 **관리**에서 **메시지 라우팅**을 선택한 다음 **규칙**을 선택합니다.

1. 오른쪽 상단의 **규칙 만들기**를 선택합니다.

1. **규칙 생성** 페이지에서 다음 단계를 완료합니다.

   1. **1단계. 규칙 속성을 지정합니다.** 다음 작업을 완료합니다.
      + **규칙 이름.** `MyIoTEventsRule`과 같은 포털의 이름을 입력합니다.
**참고**  
공백은 사용할 수 없습니다.
      + **규칙 설명**. 이는 선택 사항입니다.
      + **다음**을 선택합니다.

   1. **2단계. SQL 명령문 구성**. 다음 작업을 완료합니다.
      + **SQL 버전**. 목록에서 적절한 옵션을 선택합니다.
      + **SQL 명령문**. **SELECT \$1, topic(2) as motorid FROM 'motors/\$1/status'**을 입력합니다.

      **다음**을 선택합니다.

   1. **3단계. 규칙 작업을 첨부합니다**. **규칙 작업** 섹션에서 다음을 완료합니다.
      + **작업 1. IoT 이벤트를 선택합니다.** 다음 필드가 표시됩니다.

        1. **입력 이름**. 목록에서 적절한 옵션을 선택합니다. 암호가 표시되지 않으면 **새로 고침**을 선택합니다.

           새 입력을 생성하려면 **IoT Events 입력 생성**을 선택합니다. 다음 작업을 완료합니다.
           + **입력 이름**. `PressureInput`을 입력합니다.
           + **설명**. 이는 선택 사항입니다.
           + **JSON 파일을 업로드하십시오**. JSON 파일의 사본을 업로드하십시오. 파일이 없는 경우 이 화면에 샘플 파일로 연결되는 링크가 있습니다. 코드에는 다음이 포함됩니다.

             ```
             {
               "motorid": "Fulton-A32",
               "sensorData": {
                 "pressure": 23,
                 "temperature": 47
               }
             }
             ```
           + **입력 속성을 선택합니다**. 적절한 옵션을 선택합니다.
           + **Tags)**]를 선택합니다. 이는 선택 사항입니다.

           **생성(Create)**을 선택합니다.

           **규칙 생성** 화면으로 돌아가 **입력 이름** 필드를 새로 고칩니다. 방금 생성한 입력을 선택합니다.

        1. **배치 모드**. 이는 선택 사항입니다. 페이로드가 메시지 배열인 경우 이 옵션을 선택하십시오.

        1. **메시지 ID**. 이는 선택 사항이며, 권장 사항은 아닙니다.

        1. **IAM 역할**. 목록에서 적절한 역할을 선택합니다. 역할이 목록에 없는 경우 **새 역할 생성**을 선택합니다.

           **역할 이름**을 입력하고 **생성**을 선택합니다.

        다른 규칙을 추가하려면 **규칙 추가 작업**을 선택합니다.
      + **오류 작업**. 이 섹션은 선택 사항입니다. 작업을 추가하려면 **오류 작업 추가**를 선택하고 목록에서 적절한 작업을 선택합니다.

        나타나는 필드를 모두 입력합니다.
      + **다음**을 선택합니다.

   1. **4단계. 검토 및 생성.** 화면에서 정보를 검토한 후 **생성**을 선택합니다.

1. 왼쪽 탐색 창의 **테스트**에서 **MQTT 테스트 클라이언트**를 선택합니다.

1. **Publish to a topic(주제에 게시)**을 선택합니다. 다음 작업을 완료합니다.
   + **주제 이름**. `motors/Fulton-A32/status`와 같이 메시지를 식별할 이름을 입력합니다.
   + **메시지 페이로드**. 다음을 입력합니다.

     ```
     {
       "messageId": 100,
       "sensorData": {
         "pressure": 39
       }
     }
     ```
**참고**  
새 메시지를 게시할 때마다 `messageId`를 변경하십시오.

1. **게시**의 경우, 주제를 동일하게 유지하되 페이로드의 `"pressure"` 값을 감지기 모델에서 지정한 임계값(예: **85**)보다 큰 값으로 변경하십시오.

1. **게시**를 선택합니다.

 생성된 감지기 인스턴스는 Amazon SNS 메시지를 생성하여 전송합니다. 압력 측정값이 압력 임계값(이 예제의 경우 70)보다 높거나 낮은 압력 측정값을 포함하는 메시지를 계속 보내면 감지기가 작동 중인 것을 확인할 수 있습니다.

이 예시에서는 압력 측정값이 임계값 미만인 메시지 3개를 전송하여 **보통** 상태로 다시 전환하고 과압 상태가 해결되었음을 나타내는 Amazon SNS 메시지를 수신해야 합니다. **보통** 상태로 돌아오면 압력이 한도를 초과하는 메시지 하나가 감지기를 **위험** 상태로 전환하고 해당 상태를 나타내는 Amazon SNS 메시지를 전송합니다.

이제 간단한 입력 및 감지기 모델을 만들었으니 다음을 시도해 보십시오.
+ 콘솔에서 더 많은 감지기 모델 예제(템플릿)를 참조하십시오.
+ 의 단계에 따라 [CLI를 사용하여 두 상태에 대한 AWS IoT Events 감지기 생성](iotevents-simple-example.md)를 사용하여 입력 및 감지기 모델을 생성합니다. AWS CLI
+ 이벤트에서 사용되는 [이벤트 데이터를 필터링, 변환 및 처리하는 표현식](iotevents-expressions.md)에 대해 자세히 알아보십시오.
+ [에서 데이터를 수신하고 작업을 트리거하는 데 지원되는 작업 AWS IoT Events](iotevents-supported-actions.md)에 대해 알아봅니다.
+ 문제가 있으면 [문제 해결 AWS IoT Events](iotevents-troubleshooting.md)을 참조하십시오.