

지원 종료 알림: 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-analyze-api"></a>

AWS IoT Events 는 감지기 모델에 입력 데이터를 보내지 않고도 감지기 모델을 분석하고 분석 결과를 생성할 수 있습니다.는이 섹션에 설명된 일련의 분석을 AWS IoT Events 수행하여 감지기 모델을 확인합니다. 이 고급 문제 해결 솔루션은 또한 심각도 수준 및 위치를 포함한 진단 정보를 요약하므로 감지기 모델의 잠재적 문제를 신속하게 찾아 수정할 수 있습니다. 감지기 모델의 진단 오류 유형 및 메시지에 대한 자세한 내용은 [에 대한 감지기 모델 분석 및 진단 정보 AWS IoT Events](analyze-diagnostic-information.md)을 참조하십시오.

 AWS IoT Events 콘솔, [API](https://docs.aws.amazon.com/iotevents/latest/apireference/), [AWS Command Line Interface (AWS CLI)](https://docs.aws.amazon.com/cli/latest/reference/iotevents/index.html) 또는 [AWS SDK](https://docs.aws.amazon.com/iot/latest/developerguide/iot-sdks.html)를 사용하여 감지기 모델 분석의 진단 오류 메시지를 볼 수 있습니다.

**참고**  
감지기 모델을 게시하려면 먼저 모든 오류를 수정해야 합니다.
생산 환경에서 감지기 모델을 사용하기 전에 경고를 검토하고 필요한 조치를 취하는 것이 좋습니다. 그렇지 않으면 감지기 모델이 예상대로 작동하지 않을 수 있습니다.
`RUNNING` 상태에서 동시에 최대 10개의 분석을 수행할 수 있습니다.

감지기 모델을 분석하는 방법을 알아보려면 [감지기 모델 분석 AWS IoT Events (콘솔)](analyze-api-console.md) 또는 [AWS IoT Events (AWS CLI)에서 감지기 모델 분석](analyze-api-api.md)를 참조하십시오.

**Topics**
+ [에 대한 감지기 모델 분석 및 진단 정보 AWS IoT Events](analyze-diagnostic-information.md)
+ [감지기 모델 분석 AWS IoT Events (콘솔)](analyze-api-console.md)
+ [AWS IoT Events (AWS CLI)에서 감지기 모델 분석](analyze-api-api.md)

# 에 대한 감지기 모델 분석 및 진단 정보 AWS IoT Events
<a name="analyze-diagnostic-information"></a>

감지기 모델 분석은 다음과 같은 진단 정보를 수집합니다.
+ **수준** — 분석 결과의 심각도 수준입니다. 심각도에 따라 분석 결과는 세 가지 일반적인 범주로 분류됩니다.
  + **정보**(`INFO`) — 정보 결과는 감지기 모델의 중요한 필드에 대한 정보를 제공합니다. 이러한 유형의 결과에는 일반적으로 즉각적인 조치가 필요하지 않습니다.
  + **경고**(`WARNING`) — 경고 결과는 감지기 모델에 문제를 일으킬 수 있는 분야에 특히 주의를 기울입니다. 생산 환경에서 감지기 모델을 사용하기 전에 경고를 검토하고 필요한 조치를 취하는 것이 좋습니다. 그렇지 않으면 감지기 모델이 예상대로 작동하지 않을 수 있습니다.
  + **오류**(`ERROR`) — 오류 결과는 감지기 모델에서 발견된 문제에 대해 알려줍니다. AWS IoT Events 는 감지기 모델을 게시하기 전에 이 분석 세트를 자동으로 수행합니다. 감지기 모델을 게시하려면 먼저 모든 오류를 수정해야 합니다.
+ **위치** - 분석 결과가 참조하는 감지기 모델에서 필드를 찾는 데 사용할 수 있는 정보를 포함합니다. 위치에는 일반적으로 상태 이름, 전환 이벤트 이름, 이벤트 이름 및 표현식(예: `in state TemperatureCheck in onEnter in event Init in action setVariable`)이 포함됩니다.
+ **유형** — 분석 결과의 유형입니다. 분석 유형은 다음과 같은 범주로 분류됩니다.
  + `supported-actions` - 지정된 이벤트 또는 전환 이벤트가 감지되면 작업을 호출할 AWS IoT Events 수 있습니다. 타이머를 사용하거나 변수를 설정하거나 다른 AWS 서비스로 데이터를 보내도록 기본 제공 작업을 정의할 수 있습니다. AWS 서비스를 사용할 수 있는 AWS 리전에서 다른 AWS 서비스와 함께 작동하는 작업을 지정해야 합니다.
  + `service-limits` - 한도라고도 하는 서비스 할당량은 AWS 계정의 최대 또는 최소 서비스 리소스 또는 작업 수입니다. 다르게 표시되지 않는 한, 리전별로 각 할당량이 적용됩니다. 비즈니스 요구 사항에 따라 감지기 모델을 업데이트하여 제한이 발생하지 않도록 하거나 할당량 증가를 요청할 수 있습니다. 일부 할당량에 대한 증가를 요청할 수 있으며 다른 할당량은 늘릴 수 없습니다. 자세한 내용은 [할당량](https://docs.aws.amazon.com/iotevents/latest/developerguide/iotevents-quotas.html)을 참조하십시오.
+ **`structure`**— 감지기 모델은 상태와 같은 모든 필수 구성 요소를 포함해야 하며 AWS IoT Events 가 지원하는 구조를 따라야 합니다. 감지기 모델에는 중요한 이벤트를 탐지하기 위해 들어오는 입력 데이터를 평가하는 상태와 조건이 하나 이상 있어야 합니다. 이벤트가 감지되면 감지기 모델은 다음 상태로 전환되어 작업을 호출할 수 있습니다. 이러한 이벤트를 전환 이벤트라고 합니다. 전환 이벤트는 진행할 다음 단계로 진행되어야 합니다.
+ **`expression-syntax`**— AWS IoT Events 은(는) 감지기 모델을 생성하고 업데이트할 때 값을 지정하는 여러 가지 방법을 제공합니다. 표현식에서 리터럴, 연산자, 함수, 참조 및 대체 템플릿을 사용할 수 있습니다. 표현식을 사용하여 리터럴 값을 지정하거나 특정 값을 지정하기 전에 표현식을 평가할 AWS IoT Events 수 있습니다. 표현식은 필수 조건을 따라야 합니다. 자세한 내용은 [이벤트 데이터를 필터링, 변환 및 처리하는 표현식](iotevents-expressions.md) 단원을 참조하십시오.

  의 감지기 모델 표현식은 특정 데이터 또는 리소스를 참조할 AWS IoT Events 수 있습니다.
  + **`data-type`** — AWS IoT Events 은(는) 정수, 십진수, 문자열 및 부울 데이터 유형을 지원합니다. 가 표현식 평가 중에 한 데이터 형식의 데이터를 다른 데이터 형식으로 자동 변환할 AWS IoT Events 수 있는 경우 이러한 데이터 형식은 호환됩니다.
**참고**  
 AWS IoT Events에서 지원하는 호환 가능한 데이터 유형은 정수와 10진수뿐입니다.
AWS IoT Events 는 정수를 문자열로 변환할 수 없기 때문에 AWS IoT Events 산술 표현식을 평가할 수 없습니다.
  + **`referenced-data`**— 데이터를 사용하려면 먼저 감지기 모델에서 참조되는 데이터를 정의해야 합니다. 예를 들어 DynamoDB 테이블로 데이터를 보내려면 먼저 테이블 이름을 참조하는 변수를 정의해야 표현식(`$variable.TableName`)에 변수를 사용할 수 있습니다.
  + **`referenced-resource`**— 감지기 모델이 사용하는 리소스는 사용 가능해야 합니다. 리소스를 사용하려면 먼저 리소스를 정의해야 합니다. 예를 들어 온실의 온도를 모니터링하기 위한 감지기 모델을 생성하려고 합니다. `$input.TemperatureInput.sensorData.temperature`를 사용하여 온도를 참조하려면 먼저 들어오는 온도 데이터를 감지기 모델로 라우팅하는 입력(`$input.TemperatureInput`)을 정의해야 합니다.

오류를 해결하고 감지기 모델 분석을 통해 가능한 해결책을 찾으려면 다음 섹션을 참조하십시오.

## 에서 감지기 모델 오류 문제 해결 AWS IoT Events
<a name="troubleshoot-error-messages"></a>

위에서 설명한 오류 유형은 감지기 모델에 대한 진단 정보를 제공하며 검색할 수 있는 메시지에 해당합니다. 이 메시지와 제안된 솔루션을 사용하여 감지기 모델의 오류를 해결하십시오.

**Topics**
+ [`Location`](#analyze-location)
+ [`supported-actions`](#analyze-supported-actions)
+ [`service-limits`](#analyze-service-limits)
+ [`structure`](#analyze-structure)
+ [`expression-syntax`](#analyze-expression-syntax)
+ [`data-type`](#analyze-data-type)
+ [`referenced-data`](#analyze-referenced-data)
+ [`referenced-resource`](#analyze-referenced-resource)

### `Location`
<a name="analyze-location"></a>

`Location`에 대한 정보가 포함된 분석 결과는 다음 오류 메시지에 해당합니다.
+ **메시지** — 분석 결과에 대한 추가 정보가 들어 있습니다. 정보, 경고 또는 오류 메시지일 수 있습니다.

#### Solution
<a name="w2aac42c13c13b9b7b5b1b3b1b1"></a>

   AWS IoT Events 현재 지원되지 않는 작업을 지정한 경우 이 오류 메시지가 표시될 수 있습니다. 지원되는 작업 목록은 [에서 데이터를 수신하고 작업을 트리거하는 데 지원되는 작업 AWS IoT Events](iotevents-supported-actions.md)을 참조하십시오.

### `supported-actions`
<a name="analyze-supported-actions"></a>

`supported‐actions`에 대한 정보가 포함된 분석 결과는 다음 오류 메시지에 해당합니다.
+ **메시지:** 작업 정의에 잘못된 작업 유형이 있습니다: *작업 정의*.

#### Solution
<a name="w2aac42c13c13b9b9b5b1b3b1b1"></a>

   AWS IoT Events 현재 지원되지 않는 작업을 지정한 경우 이 오류 메시지가 표시될 수 있습니다. 지원되는 작업 목록은 [에서 데이터를 수신하고 작업을 트리거하는 데 지원되는 작업 AWS IoT Events](iotevents-supported-actions.md)을 참조하십시오.
+ **메시지:** DetectorModel 정의에 *aws-service* 작업이 있지만 *aws-service*서비스가 리전 *리전 이름*에서 지원되지 않습니다.

#### Solution
<a name="w2aac42c13c13b9b9b5b3b3b1b1"></a>

   지정한 작업이에서 지원되지 AWS IoT Events만 현재 리전에서 작업을 사용할 수 없는 경우이 오류 메시지가 표시될 수 있습니다. 이는 리전에서 사용할 수 없는 AWS 서비스로 데이터를 보내려고 할 때 발생할 수 있습니다. 또한 AWS IoT Events 및 사용 중인 서비스 모두에 대해 동일한 리전을 AWS 선택해야 합니다.

### `service-limits`
<a name="analyze-service-limits"></a>

`service‐limits`에 대한 정보가 포함된 분석 결과는 다음 오류 메시지에 해당합니다.
+ **메시지:** 페이로드에 허용된 콘텐츠 표현식이 상태 *상태 이름*의 이벤트 *이벤트 이름*에 있는 *content-expression-size* 바이트 제한을 초과했습니다.

#### Solution
<a name="w2aac42c13c13b9c11b5b1b3b1b1"></a>

   작업 페이로드의 콘텐츠 표현식이 1,024 바이트를 초과하는 경우 이 오류 메시지가 표시될 수 있습니다. 페이로드의 콘텐츠 표현식 크기는 최대 1,024 바이트입니다.
+ **메시지:** 감지기 모델 정의에 허용된 상태 수가 *states-per-detector-model* 제한을 초과했습니다.

#### Solution
<a name="w2aac42c13c13b9c11b5b3b3b1b1"></a>

   감지기 모델의 상태가 20개를 초과하는 경우 이 오류 메시지가 표시될 수 있습니다. 감지기 모델은 최대 20개의 상태를 보유할 수 있습니다.
+ **메시지:** 타이머 *타이머 이름*의 지속 시간은 최소*minimum-timer-duration*초 이상이어야 합니다.

#### Solution
<a name="w2aac42c13c13b9c11b5b5b3b1b1"></a>

   타이머 지속 시간이 60초 미만인 경우 이 오류 메시지가 표시될 수 있습니다. 타이머 지속 시간은 60초에서 31,622,400초 사이로 설정하는 것이 좋습니다. 타이머 지속 시간의 표현식을 지정하는 경우 지속 시간 표현식의 평가된 결과는 가장 가까운 정수로 내림됩니다.
+ **메시지:** 이벤트당 허용된 액션 수가 감지기 모델 정의의 *actions-per-event* 제한을 초과했습니다.

#### Solution
<a name="w2aac42c13c13b9c11b5b7b3b1b1"></a>

   이벤트에 10개 이상의 작업이 있는 경우 이 오류 메시지가 표시될 수 있습니다. 감지기 모델의 각 이벤트에 대해 최대 10개의 동작을 보유할 수 있습니다.
+ **메시지:** 상태당 허용되는 전환 이벤트 수가 감지기 모델 정의의 *transition-events-per-state* 제한을 초과했습니다.

#### Solution
<a name="w2aac42c13c13b9c11b5b9b3b1b1"></a>

   상태에 20개가 넘는 전환 이벤트가 있는 경우 이 오류 메시지가 표시될 수 있습니다. 감지기 모델의 각 상태에 대해 최대 20개의 전환 이벤트를 보유할 수 있습니다.
+ **메시지:** 상태당 허용된 이벤트 수가 감지기 모델 정의의 *events-per-state*제한을 초과했습니다.

#### Solution
<a name="w2aac42c13c13b9c11b5c11b3b1b1"></a>

   상태에 20개가 넘는 이벤트가 있는 경우 이 오류 메시지가 표시될 수 있습니다. 감지기 모델의 각 상태에 대해 최대 20개의 이벤트를 보유할 수 있습니다.
+ **메시지:** 단일 입력과 연결할 수 있는 최대 감지기 모델 수를 초과했습니다. 입력 *input-name*은 감지기 모델별 *detector-models-per-input* 경로에 사용됩니다.

#### Solution
<a name="w2aac42c13c13b9c11b5c13b3b1b1"></a>

   10개 이상의 감지기 모델로 입력을 라우팅하려고 하면 이 경고 메시지가 표시될 수 있습니다. 단일 감지기 모델에 최대 10개의 서로 다른 감지기 모델을 연결할 수 있습니다.

### `structure`
<a name="analyze-structure"></a>

`structure`에 대한 정보가 포함된 분석 결과는 다음 오류 메시지에 해당합니다.
+ **메시지:** 작업에는 한 가지 유형만 정의될 수 있지만 *number-of-types* 유형이 많은 작업이 있습니다. 별도의 작업으로 분리해 주십시오.

#### Solution
<a name="w2aac42c13c13b9c13b5b1b3b1b1"></a>

   API 작업을 사용하여 감지기 모델을 생성하거나 업데이트하여 단일 필드에 두 개 이상의 작업을 지정한 경우 이 오류 메시지가 표시될 수 있습니다. `Action` 객체 배열을 정의할 수 있습니다. 각 작업을 별도의 객체로 정의해야 합니다.
+ **메시지:** TransitionEvent *transition-event-name*는 존재하지 않는 상태 *state-name*로 전환됩니다.

#### Solution
<a name="w2aac42c13c13b9c13b5b3b3b1b1"></a>

   AWS IoT Events 에서 전환 이벤트가 참조한 다음 상태를 찾을 수 없는 경우이 오류 메시지가 표시될 수 있습니다. 다음 상태가 정의되어 있고 올바른 상태 이름을 입력했는지 확인하십시오.
+ **메시지:** DetectorModelDefinition에 공유된 상태 이름이 있습니다. *number-of-states* 반복이 있는 상태 *state-name*을 찾았습니다.

#### Solution
<a name="w2aac42c13c13b9c13b5b5b3b1b1"></a>

   하나 이상의 상태에 같은 이름을 사용하는 경우 이 오류 메시지가 표시될 수 있습니다. 감지기 모델의 각 상태에 고유한 이름을 지정해야 합니다. 이름은 1\$1128자여야 합니다. 유효한 문자는 a-z, A-Z, 0-9, \$1(밑줄) 및 -(하이픈)입니다.
+ **메시지:** 정의의 initialStateName *initial-state-name*이 정의된 상태와 일치하지 않습니다.

#### Solution
<a name="w2aac42c13c13b9c13b5b7b3b1b1"></a>

   초기 상태 이름이 잘못된 경우 이 오류 메시지가 표시될 수 있습니다. 감지기 모델은 입력이 도착할 때까지 초기(시작) 상태를 유지합니다. 입력이 도착하면 감지기 모델은 즉시 다음 상태로 전환됩니다. 초기 상태 이름이 정의된 상태의 이름이고 올바른 이름을 입력했는지 확인하십시오.
+ **메시지:** 감지기 모델 정의는 조건에서 하나 이상의 입력을 사용해야 합니다.

#### Solution
<a name="w2aac42c13c13b9c13b5b9b3b1b1"></a>

   조건에 입력값을 지정하지 않은 경우 이 오류가 발생할 수 있습니다. 하나 이상의 조건에서 하나 이상의 입력을 사용해야 합니다. 그렇지 않으면 수신 데이터를 평가 AWS IoT Events 하지 않습니다.
+ **메시지:** SetTimer에서는 초와 지속 시간 표현식 중 하나만 설정할 수 있습니다.

#### Solution
<a name="w2aac42c13c13b9c13b5c11b3b1b1"></a>

   타이머에 `seconds`와 `durationExpression`을 둘 다 사용한 경우 이 오류 메시지가 표시될 수 있습니다. `seconds` 및 `durationExpression`, 둘 중 하나를 `SetTimerAction`의 파라미터로 사용해야 합니다. 자세한 내용을 알아보려면 *AWS IoT Events API 참조*의 [SetTimerAction](https://docs.aws.amazon.com/iotevents/latest/apireference/API_SetTimerAction.html)를 참조하십시오.
+  **메시지:** 감지기 모델의 동작에 접근할 수 없습니다. 작업을 시작하는 조건을 확인하십시오.

#### Solution
<a name="w2aac42c13c13b9c13b5c15b3b1b1"></a>

   감지기 모델의 동작에 도달할 수 없는 경우 이벤트 조건은 false로 평가됩니다. 동작이 포함된 이벤트의 상태를 확인하여 해당 동작이 true로 평가되는지 확인하십시오. 이벤트 조건이 true로 평가되면 조치를 수행할 수 있어야 합니다.
+ **메시지:** 입력 속성을 읽는 중이지만 타이머 만료로 인한 것일 수 있습니다.

#### Solution
<a name="w2aac42c13c13b9c13b5c17b3b1b1"></a>

   다음 중 하나가 발생할 경우 입력 속성 값을 읽을 수 있습니다.
  + 새 입력 값을 받았습니다.
  + 감지기의 타이머가 만료된 경우.

  

  입력 속성이 해당 입력에 대한 새 값이 수신될 때만 평가되도록 하려면 다음과 같이 조건에 `triggerType(“Message”)` 함수 호출을 포함시키십시오.

  감지기 모델에서 평가 중인 원래 조건: 

  ```
  if ($input.HeartBeat.status == “OFFLINE”)
  ```

  이는 다음과 비슷합니다.

  ```
  if ( triggerType("MESSAGE") &&  $input.HeartBeat.status == “OFFLINE”)
  ```

  조건에 제공된 초기 입력보다 `triggerType(“Message”)` 함수 호출이 먼저 오는 경우. 이 기법을 사용하면 `triggerType("Message")` 함수가 true로 평가되어 새 입력값을 받는 조건을 만족하게 됩니다. `triggerType` 함수 사용에 대한 자세한 내용은 *AWS IoT Events 개발자 안내서*의 [표현식](https://docs.aws.amazon.com/iotevents/latest/developerguide/iotevents-expressions.html) 섹션에서 `triggerType`을 참조하십시오.
+ **메시지:** 감지기 모델의 상태에 도달할 수 없습니다. 원하는 상태로 전환되는 조건을 확인하십시오.

#### Solution
<a name="w2aac42c13c13b9c13b5c19b3b1b1"></a>

   감지기 모델의 상태에 도달할 수 없는 경우 해당 상태로의 전환을 유도하는 조건이 false로 평가됩니다. 감지기 모델에서 도달할 수 없는 상태로의 수신 전환 조건이 true로 평가되는지 확인하여 원하는 상태에 도달할 수 있도록 하십시오.
+ **메시지:** 타이머가 만료되면 예상치 못한 양의 메시지가 전송될 수 있습니다.

#### Solution
<a name="w2aac42c13c13b9c13b5c21b3b1b1"></a>

   타이머가 만료되어 감지기 모델이 예상치 못한 양의 메시지를 보내는 무한 상태에 빠지는 것을 방지하려면 다음과 같이 감지기 모델의 조건에서 `triggerType("Message")` 함수 호출을 사용하는 것이 좋습니다.

  감지기 모델에서 평가 중인 원래 조건: 

  ```
  if (timeout("awake"))
  ```

  다음과 비슷한 조건으로 변환됩니다.

  ```
   if (triggerType("MESSAGE") && timeout("awake")) 
  ```

  조건에 제공된 초기 입력보다 `triggerType(“Message”)` 함수 호출이 먼저 오는 경우.

  이 변경으로 감지기에서 타이머 동작이 시작되지 않아 메시지가 무한 루프 전송되는 것을 방지할 수 있습니다. 감지기에서 타이머 액션을 사용하는 방법에 대한 자세한 내용은 *AWS IoT Events 개발자 가이드*의 [기본 제공 작업 사용](https://docs.aws.amazon.com/iotevents/latest/developerguide/built-in-actions.html) 페이지를 참조하십시오.

### `expression-syntax`
<a name="analyze-expression-syntax"></a>

`expression‐syntax`에 대한 정보가 포함된 분석 결과는 다음 오류 메시지에 해당합니다.
+ **메시지:** 페이로드 표현식\$1*expression*\$1이 유효하지 않습니다. 정의된 페이로드 유형은 JSON이므로 문자열로 AWS IoT Events 평가할 표현식을 지정해야 합니다.

#### Solution
<a name="w2aac42c13c13b9c15b5b1b3b1b1"></a>

   지정된 페이로드 유형이 JSON인 경우 AWS IoT Events 먼저 서비스가 표현식을 문자열로 평가할 수 있는지 확인합니다. 평가된 결과는 부울 또는 숫자일 수 없습니다. 검증에 실패하면 이 오류가 발생할 수 있습니다.
+ **메시지:** `SetVariableAction.value`은(는) 표현식이어야 합니다. ‘*variable-value*' 값을 파싱하지 못했습니다.

#### Solution
<a name="w2aac42c13c13b9c15b5b3b3b1b1"></a>

   `SetVariableAction`을 사용하여 `name` 및 `value` 변수를 정의할 수 있습니다. `value`은(는) 문자열, 숫자 또는 부울 값일 수 있습니다. `value`에 대해 표현식을 지정할 수도 있습니다. 자세한 내용을 알아보려면 *AWS IoT Events API 참조*의 [SetVariableAction](https://docs.aws.amazon.com/iotevents/latest/apireference/API_SetVariableAction.html)을 참조하십시오.
+ **메시지:** DynamoDB 작업에 대한 속성(*attribute-name*) 표현식을 파싱할 수 없습니다. 표현식을 올바른 조건으로 입력합니다.

#### Solution
<a name="w2aac42c13c13b9c15b5b5b3b1b1"></a>

   대체 템플릿 `DynamoDBAction`의 모든 파라미터에 표현식을 사용해야 합니다. 자세한 내용은 *AWS IoT Events API 참조*의 [DynamoDBAction](https://docs.aws.amazon.com/iotevents/latest/apireference/API_DynamoDBAction.html)을 참조하십시오.
+ **메시지:** DynamoDBv2 작업에 대한 테이블 이름 표현식을 파싱할 수 없습니다. 표현식을 올바른 조건으로 입력합니다.

#### Solution
<a name="w2aac42c13c13b9c15b5b7b3b1b1"></a>

   `DynamoDBv2Action`의 `tableName`은(는) 문자열이어야 합니다. `tableName`에는 표현식을 사용해야 합니다. 표현식에서 리터럴, 연산자, 함수, 참조 및 대체 템플릿을 사용할 수 있습니다. 자세한 내용은 *AWS IoT Events API 참조*의 [DynamoDBv2Action](https://docs.aws.amazon.com/iotevents/latest/apireference/API_DynamoDBv2Action.html)을 참조하십시오.
+ **메시지:** 표현식을 유효한 JSON으로 평가할 수 없습니다. DynamoDBv2 작업은 JSON 페이로드 유형만 지원합니다.

#### Solution
<a name="w2aac42c13c13b9c15b5b9b3b1b1"></a>

   `DynamoDBv2`의 페이로드 유형은 JSON이어야 합니다. 가 페이로드의 콘텐츠 표현식을 유효한 JSON으로 AWS IoT Events 평가할 수 있는지 확인합니다. 자세한 내용은 *AWS IoT Events API 참조*에서 [DynamoDBv2Action](https://docs.aws.amazon.com/iotevents/latest/apireference/API_DynamoDBv2Action.html)을 참조하십시오.
+ **메시지:** *action-type*의 페이로드에 대한 콘텐츠 표현식을 파싱할 수 없습니다. 올바른 조건을 사용하여 콘텐츠 표현식을 입력합니다.

#### Solution
<a name="w2aac42c13c13b9c15b5c11b3b1b1"></a>

   콘텐츠 표현식에는 문자열('*string*'), 변수(\$1variable.*variable-name*), 입력 값(\$1input.*input-name*.*path-to-datum)*, 문자열 연결 및 `${}`를 포함하는 문자열이 포함될 수 있습니다.
+ **메시지:** 사용자 지정된 페이로드는 비어 있지 않아야 합니다.

#### Solution
<a name="w2aac42c13c13b9c15b5c13b3b1b1"></a>

   작업에 대해 **사용자 지정 페이로드를** 선택하고 AWS IoT Events 콘솔에 콘텐츠 표현식을 입력하지 않은 경우이 오류 메시지가 표시될 수 있습니다. **사용자 지정 페이로드**를 선택하는 경우 **사용자 지정 페이로드**에 콘텐츠 표현식을 입력해야 합니다. 자세한 내용은 *AWS IoT Events API 참조*의 [Payload](https://docs.aws.amazon.com/iotevents/latest/apireference/API_Payload.html)를 참조하십시오.
+ **메시지:** 타이머 ’*timer-name*’에 대한 기간 표현식 ‘*duration-exprestion*’을 파싱하지 못했습니다.

#### Solution
<a name="w2aac42c13c13b9c15b5c15b3b1b1"></a>

   타이머에 대한 지속 시간 표현식의 평가 결과는 60\$131622400 사이의 값이어야 합니다. 지속 시간의 평가된 결과는 가장 가까운 정수로 내림됩니다.
+ **메시지:** *action-name*에 대한 표현식 '*expression*'을 파싱하지 못했습니다.

#### Solution
<a name="w2aac42c13c13b9c15b5c17b3b1b1"></a>

   지정된 작업의 표현식 조건이 잘못된 경우 이 메시지가 표시될 수 있습니다. 표현식을 올바른 조건으로 입력했는지 확인하십시오. 자세한 내용은 [에서 디바이스 데이터를 필터링하고 작업을 정의하는 구문 AWS IoT Events](iotevents-expressions.md#expression-syntax) 섹션을 참조하십시오.
+ **메시지:** `IotSitewiseAction`에 대한 *fieldName*을 파싱할 수 없습니다. 표현식에 올바른 조건을 사용해야 합니다.

#### Solution
<a name="w2aac42c13c13b9c15b5c19b3b1b1"></a>

  가에 대한 *fieldName*을 구문 분석할 수 AWS IoT Events 없는 경우이 오류가 발생할 수 있습니다`IotSitewiseAction`. *FieldName*에서 AWS IoT Events 가 파싱할 수 있는 표현식을 사용하는지 확인하십시오. 자세한 내용은 *AWS IoT Events API 참조*의 [IotSiteWiseAction](https://docs.aws.amazon.com/iotevents/latest/apireference/API_IotSiteWiseAction.html)을 참조하십시오.

### `data-type`
<a name="analyze-data-type"></a>

`data‐type`에 대한 정보가 포함된 분석 결과는 다음 오류 메시지에 해당합니다.
+ **메시지:** 타이머 *timer-name* 대한 기간 표현식 *duration-expression*이 유효하지 않으므로 숫자를 반환해야 합니다.

#### Solution
<a name="w2aac42c13c13b9c17b5b1b3b1b1"></a>

   AWS IoT Events 가 타이머의 기간 표현식을 숫자로 평가할 수 없는 경우이 오류 메시지가 표시될 수 있습니다. `durationExpression`가 숫자로 변환될 수 있는지 확인하십시오. 부울과 같은 다른 데이터 유형은 지원되지 않습니다.
+ **메시지:** 표현식 *condition-expression*이 유효한 조건 표현식이 아닙니다.

#### Solution
<a name="w2aac42c13c13b9c17b5b3b3b1b1"></a>

  가를 부울 값으로 평가할 수 없는 경우이 오류 메시지가 표시될 `condition-expression` 수 AWS IoT Events 있습니다. 부울 값은 `TRUE` 또는 `FALSE` 중 하나여야 합니다. 조건 표현식이 부울 값으로 변환될 수 있는지 확인하십시오. 결과가 부울 값이 아닌 경우 해당 값은 `FALSE`와 동일하며 이벤트에서 `nextState` 지정된 값으로 전환하거나 액션을 호출하지 않습니다.
+ **메시지:** 다음 표현식 *expression*에서 *reference*로 사용할 수 없는 데이터 유형[*inferred-type*]이 발견되었습니다.

#### Solution
<a name="w2aac42c13c13b9c17b5b5b3b1b1"></a>

   **솔루션**: 감지기 모델에서 동일한 입력 속성 또는 변수에 대한 모든 표현식은 동일한 데이터 유형을 참조해야 합니다.

  다음 정보를 활용하여 문제를 해결합니다.<a name="expression-reference-type-compatibility"></a>
  + 하나 이상의 연산자와 함께 참조를 피연산자로 사용하는 경우, 참조하는 모든 데이터 유형이 호환되는지 확인하십시오.

    예를 들어, 다음 표현식에서 정수 `2`는 및 연산자 `==`와 `&&` 모두의 피연산자입니다. 피연산자를 호환하기 위해서는 `$variable.testVariable + 1` 및 `$variable.testVariable`이 정수 또는 10진수를 참조해야 합니다.

    또한 정수 `1`은(는) `+` 연산자의 피연산자입니다. 따라서 `$variable.testVariable`은(는) 정수 또는 10진수를 참조해야 합니다.

    ```
    ‘$variable.testVariable + 1 == 2 && $variable.testVariable’
    ```
  + 참조를 함수에 전달된 인수로 사용하는 경우, 함수가 참조하는 데이터 유형을 지원하는지 확인하십시오.

    예를 들어, 다음 `timeout("time-name")` 함수에는 큰따옴표가 있는 문자열이 인수로 필요합니다. *타이머 이름* 값에 대한 참조를 사용하는 경우 큰따옴표가 있는 문자열을 참조해야 합니다.

    ```
    timeout("timer-name")
    ```
**참고**  
`convert(type, expression)` 함수의 경우 *유형* 값에 대한 참조를 사용하는 경우 참조의 평가 결과는 `String`, `Decimal` 또는 `Boolean`이어야 합니다.

  자세한 내용은 [AWS IoT Events 표현식의 입력 및 변수에 대한 참조](iotevents-expressions.md#expression-reference) 섹션을 참조하십시오.
+ **메시지:** *reference*로 사용할 수 없는 데이터 유형 [*inferred-types*]입니다. 이로 인해 런타임 오류가 발생할 수 있습니다.

#### Solution
<a name="w2aac42c13c13b9c17b5b7b3b1b1"></a>

   동일한 입력 속성 또는 변수에 대한 두 표현식이 두 데이터 유형을 참조하는 경우 이 경고 메시지가 표시될 수 있습니다. 동일한 입력 속성이나 변수에 대한 표현식이 감지기 모델의 동일한 데이터 유형을 참조하는지 확인하십시오.
+ **메시지:** 연산자[*operator*]에 입력한 데이터 유형[*inferred-types*]이 다음 표현식 ‘*expression*’과 호환되지 않습니다.

#### Solution
<a name="w2aac42c13c13b9c17b5b9b3b1b1"></a>

   표현식이 지정된 연산자와 호환되지 않는 데이터 유형을 결합한 경우 이 오류 메시지가 나타날 수 있습니다. 예를 들어 다음 표현식에서 연산자 `+`은(는) 정수, 10진수 및 문자열 데이터 형식과 호환되지만 부울 데이터 유형의 피연산자와는 호환되지 않습니다.

  ```
  true + false
  ```

  연산자와 함께 사용하는 데이터 유형이 호환되는지 확인해야 합니다.
+ **메시지:** *input‐attribute*에 대해 발견된 데이터 유형[*infered-types*]이 호환되지 않아 런타임 오류가 발생할 수 있습니다.

#### Solution
<a name="w2aac42c13c13b9c17b5c11b3b1b1"></a>

   동일한 입력 속성에 대한 두 표현식이 상태의 `OnEnterLifecycle`, 또는 상태의 `OnInputLifecycle`과 `OnExitLifecycle` 모두에 대해 두 데이터 유형을 참조하는 경우 이 오류 메시지가 표시될 수 있습니다. 감지기 모델의 각 상태에 대해 `OnEnterLifecycle`(또는 `OnInputLifecycle` 및 `OnExitLifecycle` 둘 다)의 표현식이 동일한 데이터 유형을 참조하는지 확인하십시오.
+ **메시지:** 페이로드 표현식[*expression*]이 유효하지 않습니다. 페이로드 유형이 JSON 형식이므로 런타임 시 문자열로 평가되는 식을 지정하십시오.

#### Solution
<a name="w2aac42c13c13b9c17b5c13b3b1b1"></a>

   지정된 페이로드 유형이 JSON이지만 표현식을 문자열로 평가할 AWS IoT Events 수 없는 경우이 오류가 발생할 수 있습니다. 평가 결과가 부울이나 숫자가 아닌 문자열인지 확인하십시오.
+ **메시지:** 보간 표현식\$1*interpolated-expression*\$1은 런타임 시 정수 또는 부울 값으로 평가되어야 합니다. 그렇지 않으면 페이로드 표현식 \$1*payload-expression*\$1을 런타임에 유효한 JSON으로 파싱할 수 없습니다.

#### Solution
<a name="w2aac42c13c13b9c17b5c15b3b1b1"></a>

   AWS IoT Events 가 보간된 표현식을 정수 또는 부울 값으로 평가할 수 없는 경우이 오류 메시지가 표시될 수 있습니다. 문자열과 같은 다른 데이터 유형은 지원되지 않으므로 보간된 식을 정수 또는 부울 값으로 변환할 수 있는지 확인하십시오.
+ **메시지:** `IotSitewiseAction` 필드 *expression*의 표현식 유형은 유형 *defined-type*으로 정의되고 유형 *inferred-type*으로 추론됩니다. 정의된 유형과 유추된 유형은 동일해야 합니다.

#### Solution
<a name="w2aac42c13c13b9c17b5c17b3b1b1"></a>

   `IotSitewiseAction`의 `propertyValue`에서 표현식 데이터 유형이 유추된 AWS IoT Events의 데이터 유형과 다르게 정의된 경우 이 오류 메시지가 표시될 수 있습니다. 감지기 모델에서 이 표현식의 모든 인스턴스에 동일한 데이터 유형을 사용해야 합니다.
+ **메시지:** `setTimer` 작업에 사용되는 데이터 유형 [*inferred-types*]은 다음 표현식 *expression*에서는 `Integer`로 평가되지 않습니다.

#### Solution
<a name="w2aac42c13c13b9c17b5c19b3b1b1"></a>

   기간 표현식의 유추된 데이터 유형이 정수 또는 10진수가 아닌 경우 이 오류 메시지가 표시될 수 있습니다. `durationExpression`가 숫자로 변환할 수 있는지 확인하십시오. 부울과 문자열과 같은 기타 데이터 유형은 지원되지 않습니다.
+ **메시지:** 비교 연산자[*operator*]의 피연산자와 함께 사용되는 데이터 유형 [*interred-types*]은 다음 표현식 *expression*에서 호환되지 않습니다.

#### Solution
<a name="w2aac42c13c13b9c17b5c21b3b1b1"></a>

   감지기 모델의 조건식(*표현식*) 에 있는 연산자의 *피연산자*에 대해 유추된 데이터 유형이 일치하지 않습니다. 피연산자는 감지기 모델의 다른 모든 부분에서 일치하는 데이터 유형과 함께 사용해야 합니다.

**작은 정보**  
`convert`을 사용하여 감지기 모델에서 표현식의 데이터 유형을 변경할 수 있습니다. 자세한 내용은 [AWS IoT Events 표현식에 사용할 함수](iotevents-expressions.md#expression-function) 섹션을 참조하십시오.

### `referenced-data`
<a name="analyze-referenced-data"></a>

`referenced‐data`에 대한 정보가 포함된 분석 결과는 다음 오류 메시지에 해당합니다.
+ **메시지:** 손상된 타이머 감지: 타이머 *timer-name*이 표현식에 사용되었지만 설정되지 않았습니다.

#### Solution
<a name="w2aac42c13c13b9c19b5b1b3b1b1"></a>

   설정되지 않은 타이머를 사용하는 경우 이 오류 메시지가 표시될 수 있습니다. 표현식에 사용하기 전에 타이머를 설정해야 합니다. 또한 타이머 이름을 정확하게 입력해야 합니다.
+ **메시지:** 손상된 변수 감지: 변수 *variable-name*이 표현식에 사용되었지만 설정되지 않았습니다.

#### Solution
<a name="w2aac42c13c13b9c19b5b3b3b1b1"></a>

   설정되지 않은 변수를 사용하는 경우 이 오류 메시지가 표시될 수 있습니다. 표현식에서 변수를 사용하려면 먼저 변수를 설정해야 합니다. 또한 올바른 변수 이름을 입력해야 합니다.
+ **메시지:** 손상된 변수 감지: 변수가 값으로 설정되기 전에 표현식에 사용됩니다.

#### Solution
<a name="w2aac42c13c13b9c19b5b5b3b1b1"></a>

   표현식에서 변수를 평가하려면 먼저 각 변수를 값에 할당해야 합니다. 변수 값을 검색할 수 있도록 사용하기 전에 매번 변수 값을 설정하십시오. 또한 올바른 변수 이름을 입력해야 합니다.

### `referenced-resource`
<a name="analyze-referenced-resource"></a>

`referenced‐resource`에 대한 정보가 포함된 분석 결과는 다음 오류 메시지에 해당합니다.
+ **메시지:** 감지기 모델 정의에는 존재하지 않는 입력에 대한 참조가 포함되어 있습니다.

#### Solution
<a name="w2aac42c13c13b9c21b5b1b3b1b1"></a>

   표현식을 사용하여 존재하지 않는 입력을 참조하는 경우 이 오류 메시지가 표시될 수 있습니다. 표현식이 기존 입력을 참조하는지 확인하고 올바른 입력 이름을 입력하십시오. 입력이 없는 경우에는 먼저 하나를 생성합니다.
+ **메시지:** 감지기 모델 정의에 잘못된 InputName *input-name*이 포함되어 있습니다.

#### Solution
<a name="w2aac42c13c13b9c21b5b3b3b1b1"></a>

   감지기 모델에 잘못된 입력 이름이 포함된 경우 이 오류 메시지가 표시될 수 있습니다. 올바른 입력 이름을 입력해야 합니다. 입력 이름은 1\$1128자여야 합니다. 유효한 문자는 a-z, A-Z, 0-9, \$1(밑줄) 및 -(하이픈)입니다.

# 감지기 모델 분석 AWS IoT Events (콘솔)
<a name="analyze-api-console"></a>

AWS IoT Events 를 사용하면 이벤트를 감지하고 AWS IoT Events API로 작업을 트리거하여 IoT 데이터를 모니터링하고 이에 대응할 수 있습니다. 다음 단계에서는 AWS IoT Events 콘솔을 사용하여 감지기 모델을 분석합니다.

**참고**  
가 감지기 모델 분석을 AWS IoT Events 시작한 후 최대 24시간 동안 분석 결과를 검색할 수 있습니다.

감지기 모델 분석은 모델을 최적화하고, 잠재적 문제를 식별하고, 의도한 대로 작동하는지 확인하는 데 도움이 될 수 있습니다. 예를 들어 풍력 발전소에서 감지기 모델 분석은 모델이 비정상적인 진동 패턴을 기반으로 잠재적 기어 장애를 올바르게 식별하는지 여부를 확인할 수 있습니다. 또는 풍속이 안전한 작동 임계값을 초과할 때 모델이 유지 관리 알림을 정확하게 트리거하는 경우. 분석을 기반으로 모델을 개선하면 예측 유지 관리를 개선하고, 가동 중지 시간을 줄이고, 전반적인 에너지 생산 효율성을 높일 수 있습니다.

**감지기 모델을 분석하려면**

1. [AWS IoT Events 콘솔](https://console.aws.amazon.com/iotevents/)에 로그인합니다.

1. 탐색 창에서 **(감지기 모델)**를 선택합니다.

1. **감지기 모델**에서 대상 감지기 모델을 선택합니다.

1. 감지기 모델 페이지에서 **편집**을 선택합니다.

1. 오른쪽 상단 모서리에서 **분석 실행**을 선택합니다.  
![\[AWS IoT Events 콘솔에서 감지기 모델을 분석하는 방법을 보여주는 스크린샷.\]](http://docs.aws.amazon.com/ko_kr/iotevents/latest/developerguide/images/analyzeAPI1.png)

   다음은 AWS IoT Events 콘솔의 예제 분석 결과입니다.  
![\[AWS IoT Events 콘솔에서 감지기 모델을 분석하는 방법을 보여주는 스크린샷.\]](http://docs.aws.amazon.com/ko_kr/iotevents/latest/developerguide/images/analyzeAPI2.png)

# AWS IoT Events (AWS CLI)에서 감지기 모델 분석
<a name="analyze-api-api"></a>

 AWS IoT Events 감지기 모델을 프로그래밍 방식으로 분석하면 구조, 동작 및 성능에 대한 귀중한 인사이트를 얻을 수 있습니다. 이 API 기반 접근 방식을 사용하면 자동화된 분석, 기존 워크플로와의 통합, 여러 감지기 모델에서 대량 작업을 수행할 수 있습니다. [StartDetectorModelAnalysis](https://docs.aws.amazon.com/iotevents/latest/apireference/API_StartDetectorModelAnalysis.html) API를 활용하면 모델에 대한 심층 검사를 시작하여 잠재적 문제를 식별하고, 로직 흐름을 최적화하고, IoT 이벤트 처리가 비즈니스 요구 사항에 부합하는지 확인할 수 있습니다.

다음 단계에서는 AWS CLI 를 사용하여 감지기 모델을 분석합니다.

**를 사용하여 감지기 모델을 분석하려면 AWS CLI**

1. 다음 명령을 실행해 분석을 시작합니다.

   ```
   aws iotevents start-detector-model-analysis --cli-input-json file://file-name.json
   ```
**참고**  
*file-name*을 감지기 모델 정의가 포함된 파일의 이름으로 대체합니다.  
**Example 감지기 모델 정의**  

   ```
   {
       "detectorModelDefinition": {
           "states": [
               {
                   "stateName": "TemperatureCheck",
                   "onInput": {
                       "events": [
                           {
                               "eventName": "Temperature Received",
                               "condition": "isNull($input.TemperatureInput.sensorData.temperature)==false",
                               "actions": [
                                   {
                                       "iotTopicPublish": {
                                           "mqttTopic": "IoTEvents/Output"
                                       }
                                   }
                               ]
                           }
                       ],
                       "transitionEvents": []
                   },
                   "onEnter": {
                       "events": [
                           {
                               "eventName": "Init",
                               "condition": "true",
                               "actions": [
                                   {
                                       "setVariable": {
                                           "variableName": "temperatureChecked",
                                           "value": "0"
                                       }
                                   }
                               ]
                           }
                       ]
                   },
                   "onExit": {
                       "events": []
                   }
               }
           ],
           "initialStateName": "TemperatureCheck"
       }
   }
   ```

    AWS CLI 를 사용하여 기존 감지기 모델을 분석하는 경우 다음 중 하나를 선택하여 감지기 모델 정의를 검색합니다.
   +  AWS IoT Events 콘솔을 사용하려면 다음을 수행합니다.

     1. 탐색 창에서 **감지기 모델**을 선택합니다.

     1. **감지기 모델**에서 대상 감지기 모델을 선택합니다.

     1. **작업**에서 **감지기 모델 내보내기**를 선택하여 감지기 모델을 다운로드합니다. 감지기 모델은 JSON으로 저장됩니다.

     1. 감지기 모델 JSON 파일을 엽니다.

     1. `detectorModelDefinition` 객체만 있으면 됩니다. 다음을 제거하십시오.
        + 페이지 상단의 첫 번째 중괄호(`{`)
        + `detectorModel` 라인
        + `detectorModelConfiguration` 객체
        + 페이지 하단의 마지막 중괄호(`}`)

     1. 파일을 저장합니다.
   + 를 사용하려면 다음을 AWS CLI수행합니다.

     1. 터미널에서 다음 명령을 실행하십시오.

        ```
        aws iotevents describe-detector-model --detector-model-name detector-model-name
        ```

     1. *detector-model-name*을 감지기 모델 이름으로 바꾸십시오.

     1. `detectorModelDefinition` 개체를 텍스트 편집기에 복사합니다.

     1. `detectorModelDefinition` 외부에 중괄호(`{}`)를 추가합니다.

     1. 파일을 JSON으로 저장합니다.  
**Example 응답의 예**  

   ```
   {
       "analysisId": "c1133390-14e3-4204-9a66-31efd92a4fed"
   }
   ```

1. 출력에서 분석 ID를 복사합니다.

1. 다음 명령을 실행하여 분석 상태를 검색합니다.

   ```
   aws iotevents describe-detector-model-analysis --analysis-id "analysis-id"
   ```
**참고**  
*analysis-id*를 복사한 분석 ID로 바꾸십시오.  
**Example 응답의 예**  

   ```
   {
       "status": "COMPLETE"
   }
   ```

   상태는 다음 값 중 하나일 수 있습니다.
   + `RUNNING` - 감지 AWS IoT Events 기 모델을 분석합니다. 이 프로세스가 완료되는 데 최대 1분이 걸릴 수 있습니다.
   + `COMPLETE` - 감지기 모델 분석을 AWS IoT Events 완료했습니다.
   + `FAILED` –감지기 모델을 분석할 수 AWS IoT Events 없습니다. 나중에 다시 시도해 주세요.

1. 다음 명령을 실행하여 감지기 모델의 분석 결과를 하나 이상 검색합니다.
**참고**  
*analysis-id*를 복사한 분석 ID로 바꾸십시오.

   ```
   aws iotevents get-detector-model-analysis-results --analysis-id "analysis-id"
   ```  
**Example 응답의 예**  

   ```
   {
       "analysisResults": [
           {
               "type": "data-type",
               "level": "INFO",
               "message": "Inferred data types [Integer] for $variable.temperatureChecked",
               "locations": []
           },
           {
               "type": "referenced-resource",
               "level": "ERROR",
               "message": "Detector Model Definition contains reference to Input 'TemperatureInput' that does not exist.",
               "locations": [
                   {
                       "path": "states[0].onInput.events[0]"
                   }
               ]
           }
       ]
   }
   ```

**참고**  
가 감지기 모델 분석을 AWS IoT Events 시작한 후 최대 24시간 동안 분석 결과를 검색할 수 있습니다.