일반적인AWS IoT Events 문제 및 해결 방법 - AWS IoT Events

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

일반적인AWS IoT Events 문제 및 해결 방법

다음 섹션을 참조하여 오류를 해결하고 문제를 해결할 수 있는 해결 방법을 찾아보십시오AWS IoT Events.

감지기 모델 생성 오류

.

.

  • action 필드에는 한 가지 작업만 허용됩니다.

  • 에는condition 이 (가) 필요합니다transitionEvents. OnEnterOnInput, 및OnExit 이벤트의 경우 선택 사항입니다.

  • condition필드가 비어 있는 경우 조건 표현식의 평가 결과는 와 같습니다true.

  • . 결과가 Boolean 값이 아닌 경우 해당 결과는 이벤트에nextState 지정된 값으로의actions 또는 전환을 트리거하는 것과false 동일하며 트리거하지 않습니다.

자세한 내용은 .을 참조하세요.

삭제된 검출기 모델에서의 업데이트

몇 분 전에 감지기 모델을 업데이트하거나 삭제했지만 여전히 MQTT 메시지 또는 SNS 알림을 통해 이전 감지기 모델에서 상태 업데이트를 받고 있습니다.

탐지기 모델을 업데이트, 삭제 또는 재생성하는 경우 (참조 UpdateDetectorModel), 모든 탐지기 인스턴스가 삭제되고 새 모델이 사용되기까지 지연이 발생합니다. 이 기간 동안에는 이전 버전의 감지기 모델 인스턴스에서 입력을 계속 처리할 수 있습니다. 이전 감지기 모델에서 정의한 경고는 계속 수신될 수 있습니다. 업데이트를 다시 확인하거나 오류를 보고하기 전에 최소 7분 정도 기다리세요.

액션 트리거 실패 (조건 충족 시)

조건이 충족되면 감지기가 동작을 트리거하지 못하거나 새 상태로 전환하지 못합니다.

검출기 조건식의 평가 결과가 부울 값인지 확인합니다. 결과가 Boolean 값이 아닌 경우 해당 결과는 이벤트에nextState 지정된 값으로의action 또는 전환을 트리거하는 것과false 동일하며 트리거하지 않습니다. .

작업 트리거 실패 (임계값 초과 시)

감지기는 조건식의 변수가 지정된 값에 도달해도 동작 또는 이벤트 전환을 트리거하지 않습니다.

onInputonEnteronExit, 또는setVariable 에 대해 업데이트하면 현재 처리 주기condition 동안 어떤 값도 평가할 때 새 값이 사용되지 않습니다. 대신 현재 주기가 완료될 때까지 원래 값이 사용됩니다. evaluationMethod. 를 로SERIAL 설정하면 변수가 업데이트되고 이벤트 조건이 이벤트가 정의된 순서대로 평가됩니다.evaluationMethodBATCH (기본값) 로 설정하면 변수가 업데이트되고 모든 이벤트 조건이 평가된 후에만 이벤트가 수행됩니다.evaluationMethod

잘못된 상태 사용

를 사용하여 입력에 메시지를 보내려고 하면 감지기가 잘못된 상태로 전환됩니다BatchPutMessage.

BatchPutMessage사용하여 여러 메시지를 입력으로 보내는 경우 메시지 또는 입력이 처리되는 순서가 보장되지 않습니다. 주문을 보장하려면 메시지를 한 번에 하나씩 보내고 성공 여부를 확인할 때까지 기다리세요.BatchPutMessage

연결 메시지

API를 호출하거나 호출하려고 하면('Connection aborted.', error(54, 'Connection reset by peer')) 오류가 발생합니다.

OpenSSL이 TLS 1.1 이상 버전을 사용하여 연결을 설정하는지 확인하십시오. 대부분의 Linux 배포판이나 Windows 버전 7 이상에서는 이것이 기본값이어야 합니다. macOS 사용자는 OpenSSL을 업그레이드해야 할 수 있습니다.

InvalidRequestException 메시지

호출하려고 InvalidRequestException 할 때CreateDetectorModelUpdateDetectorModel API가 표시됩니다.

. 자세한 내용은 CreateDetectorModel및 을 참조하십시오 UpdateDetectorModel.

  • secondsdurationExpressionSetTimerAction 동시에 의 매개 변수로 사용하지 않도록 주의하십시오.

  • 에 대한 문자열 표현식이durationExpression 유효한지 확인하십시오. 문자열 표현식에는 숫자, 변수 ($variable.<variable-name>) 또는 입력값 ($input.<input-name>.<path-to-datum>) 이 포함될 수 있습니다.

아마존 CloudWatch 로그action.setTimer 오류

Amazon CloudWatch Logs를 설정하여AWS IoT Events 탐지기 모델 인스턴스를 모니터링할 수 있습니다. 다음은 를 사용할 때 발생하는AWS IoT Events 일반적인action.setTimer 오류입니다.

  • 오류: 이름이 지정된 타이머의 지속 시간 표현식을 숫자로 평가할<timer-name> 수 없습니다.

    에 대한 문자열 표현식을 숫자로durationExpression 변환할 수 있는지 확인하십시오. Boolean과 같은 다른 데이터 유형은 허용되지 않습니다.

  • 오류: 이름이 지정된 타이머에 대한 지속 시간 표현식의 평가 결과가 31622440보다<timer-name> 큽니다. 정확성을 보장하려면 지속 시간 표현식이 60‐31622400 사이의 값을 참조해야 합니다.

    . 지속 시간의 평가된 결과는 가장 가까운 정수로 내림됩니다.

  • 오류: 이름이 지정된 타이머에 대한 지속 시간 표현식의 평가 결과는 60<timer-name> 미만입니다. 정확성을 보장하려면 지속 시간 표현식이 60‐31622400 사이의 값을 참조해야 합니다.

    . 지속 시간의 평가된 결과는 가장 가까운 정수로 내림됩니다.

  • 오류: 이름이 지정된 타이머의 지속 시간 표현식을 평가할<timer-name> 수 없습니다. 변수 이름, 입력 이름 및 데이터 경로를 확인하여 기존 변수와 입력값을 참조하는지 확인하십시오.

    문자열 표현식이 기존 변수 및 입력을 참조하는지 확인하십시오. , ($variable.variable-name$input.input-name.path-to-datum).

  • 오류: <timer-name>. .

    SetTimerAction작업을 참조하여 올바른 매개 변수를 지정했는지 확인한 다음 타이머를 다시 설정하십시오.

자세한 내용은 AWS IoT Events탐지기 모델 개발 시 Amazon CloudWatch 로깅 활성화를 참조하십시오.

아마존 CloudWatch 페이로드 오류

Amazon CloudWatch Logs를 설정하여AWS IoT Events 탐지기 모델 인스턴스를 모니터링할 수 있습니다. 다음은 작업 페이로드를 구성할 때 에서AWS IoT Events 생성되는 일반적인 오류 및 경고입니다.

  • 오류: 행동에 대한 당신의 표현을 평가할 수 없었습니다. 변수 이름, 입력 이름 및 데이터 경로가 기존 변수 및 입력 값을 참조하는지 확인하십시오. 또한 페이로드 크기가 페이로드의 최대 허용 크기인 1KB 미만인지 확인하십시오.

    변수 이름, 입력 이름 및 데이터 경로를 올바르게 입력했는지 확인하십시오. 작업 페이로드가 1KB보다 큰 경우에도 이 오류 메시지가 표시될 수 있습니다.

  • 오류: 의 페이로드에 대한 콘텐츠 표현식을 파싱할 수 없습니다<action-type>. 올바른 구문을 사용하여 콘텐츠 표현식을 입력합니다.

    , ($variable.variable-name$input.input-name.path-to-datum),${}.'string'

  • 오류: 페이로드 표현식 {expression} 이 (가) 유효하지 않습니다. 정의된 페이로드 유형은 JSON이므로 문자열로AWS IoT Events 평가되는 식을 지정해야 합니다.

    지정된 페이로드 유형이 JSON인 경우AWS IoT Events 먼저 서비스가 표현식을 문자열로 평가할 수 있는지 확인합니다. 평가 결과는 부울 또는 숫자일 수 없습니다. 검증이 실패하면 이 오류가 발생할 수 있습니다.

  • 경고: 작업이 실행되었지만 유효한 JSON에 대한 작업 페이로드에 대한 콘텐츠 표현식을 평가할 수 없습니다. 정의된 페이로드 유형은 JSON입니다.

    페이로드 유형을 로 정의하면 작업 페이로드의 콘텐츠 표현식을 유효한 JSON으로 평가할AWS IoT Events 수 있는지 확인하십시오JSON. AWS IoT Events콘텐츠 표현식을 유효한 JSON으로 평가할AWS IoT Events 수 없는 경우에도 작업을 실행합니다.

자세한 내용은 AWS IoT Events탐지기 모델 개발 시 Amazon CloudWatch 로깅 활성화를 참조하십시오.

.

메시지: 호환되지 않는 데이터 유형 [<inferred-types>] 이 (가) 다음 표현식에서 발견되었습니다.<reference><expression>

.

  • 참조의 평가 결과는 표현식의 다른 피연산자와 호환되지 않습니다.

  • 함수에 전달된 인수 유형은 지원되지 않습니다.

표현식에 참조를 사용하는 경우 다음 사항을 확인하십시오.

  • 참조를 하나 이상의 연산자와 함께 피연산자로 사용하는 경우 참조하는 모든 데이터 유형이 호환되는지 확인하십시오.

    예를 들어, 다음 표현식에서2 정수는 및 연산자 모두의&& 피연산자입니다.== 피연산자가 호환되는지 확인하려면 정수 또는 십진수를$variable.testVariable 참조해야 합니다.$variable.testVariable + 1

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

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

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

    timeout("timer-name")
    참고

    convert(type, expression)함수의 경우 형식 값에 대한 참조를 사용하는 경우 참조의 평가 결과는StringDecimal, 또는 이어야 합니다Boolean.

자세한 내용은 참조 단원을 참조하세요.