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

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

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

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

감지기 모델 생성 오류

감지기 모델을 생성하려고 하면 오류가 발생합니다.

감지기 모델을 생성할 때 다음 제한 사항을 고려해야 합니다.

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

  • transitionEvents에서 condition은(는) 필수입니다. OnEnter, OnInputOnExit 이벤트는 선택 사항입니다.

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

  • 조건 표현식을 평가 결과는 부울 값이어야 합니다. 결과가 부울 값이 아닌 경우 이 값은 false와 같으며 actions 또는 이벤트에서 지정된 nextState로 전환을 트리거하지 않습니다.

자세한 내용은 감지기 모델 규제 및 제한 섹션을 참조하십시오.

삭제된 감지기 모델 업데이트

몇 분 전에 감지기 모델을 업데이트하거나 삭제했지만 MQTT 메시지 또는 SNS 경보를 통해 이전 감지기 모델의 상태 업데이트를 계속 받고 있습니다.

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

작업 트리거 실패(조건 충족 시)

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

감지기 조건식의 평가 결과가 부울 값인지 확인하십시오. 결과가 부울 값이 아닌 경우 이 값은 false와 같으며 action 또는 이벤트에서 지정된 nextState로 전환을 트리거하지 않습니다. 자세한 정보는 조건 표현식 조건을 참조하십시오.

작업 트리거 실패(임계값 위반 시)

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

setVariableonInput, onEnter 또는 onExit로 업데이트하면 현재 처리 주기 동안 condition을 평가할 때 새 값이 사용되지 않습니다. 대신 현재 주기가 완료될 때까지 원래 값이 사용됩니다. 감지기 모델 정의에서 evaluationMethod 파라미터를 설정하여 이 동작을 변경할 수 있습니다. evaluationMethodSERIAL로 설정하면 이벤트가 정의된 순서대로 변수가 업데이트되고 이벤트 조건이 평가됩니다. evaluationMethodBATCH(기본값)로 설정하면 변수가 업데이트되고 모든 이벤트 조건이 평가된 후에만 이벤트가 수행됩니다.

잘못된 상태 사용

BatchPutMessage를 사용하여 입력으로 메시지를 보내려고 하면 감지기가 잘못된 상태로 들어갑니다.

BatchPut메시지를 사용하여 여러 메시지를 입력에 보내는 경우 메시지 또는 입력이 처리되는 순서가 보장되지 않습니다. 순서를 보장하려면 메시지를 한 번에 하나씩 보내고 성공이 확인될 때까지 매번 BatchPutMessage 동안 기다리십시오.

연결 메시지

API를 직간접적으로 호출하려고 하면 ('Connection aborted.', error(54, 'Connection reset by peer')) 오류가 발생합니다.

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

InvalidRequestException 메시지

CreateDetectorModel호출하고 UpdateDetectorModel API를 InvalidRequestException 시도하면 메시지가 나타납니다.

다음에 따라 문제를 해결하십시오. 자세한 내용은 CreateDetector모델 및 UpdateDetector모델을 참조하십시오.

  • secondsdurationExpression을 동시에 SetTimerAction의 파라미터로 사용하지 않도록 하십시오.

  • 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의 문자열 표현식을 숫자로 변환할 수 있는지 확인하십시오. 부울과 같은 다른 데이터 유형은 허용되지 않습니다.

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

    타이머의 지속 시간이 31622400초 이하인지 확인하십시오. 지속 시간의 평가된 결과는 가장 가까운 정수로 내림됩니다.

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

    타이머의 지속 시간이 60초 이상인지 확인하십시오. 지속 시간의 평가된 결과는 가장 가까운 정수로 내림됩니다.

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

    문자열 표현식이 기존 변수와 입력을 참조하는지 확인하십시오. 문자열 표현식에는 숫자, 변수($variable.variable-name) 및 입력 값($input.input-name.path-to-datum)이 포함될 수 있습니다.

  • 오류: <timer-name> 이름의 타이머를 설정하지 못했습니다. 지속 시간 표현식을 확인한 후 다시 시도해 주십시오.

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

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

아마존 CloudWatch 페이로드 오류

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

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

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

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

    콘텐츠 표현식은 문자열('string'), 변수($variable.variable-name), 입력 값($input.input-name.path-to-datum), 문자열 연결 및 ${}를 포함하는 문자열을 포함할 수 있습니다.

  • 오류: 페이로드 표현식 {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 로깅 활성화를 참조하십시오.

호환되지 않는 데이터 유형

메시지: 다음 표현식 <reference><expression>으로 호환되지 않는 데이터 유형 [<inferred-types>]이 있습니다.

다음과 같은 이유 중 하나로 오류가 발생할 수 있습니다.

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

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

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

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

    예를 들어, 다음 표현식에서 정수 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

메시지: Iot Events에 메시지를 보내지 못했습니다.

다음과 같은 이유로 오류가 발생할 수 있습니다.

  • 입력 메시지 페이로드에 Input attribute Key가 포함되어 있지 않습니다.

  • Input attribute Key가 입력 정의에 지정된 것과 동일한 JSON 경로에 있지 않습니다.

  • 입력 메시지가 입력에 정의된 스키마와 일치하지 않습니다. AWS IoT Events

참고

다른 서비스에서 데이터 모으기를 할 때도 오류가 발생합니다.

예를 들어 AWS IoT Core에서는 AWS IoT 규칙이 실패하고 다음 메시지가 표시됩니다. Verify the Input Attribute key.

이 문제를 해결하려면 입력 페이로드 메시지 스키마가 AWS IoT Events 입력 정의를 준수하고 Input attribute Key 위치가 일치하는지 확인하십시오. 자세한 내용은 입력을 정의하는 AWS IoT Events 방법에 대한 자세한 내용을 참조하십시오탐색 창에서 입력 생성.