일반적인 AWS IoT Events 문제 및 솔루션 - AWS IoT Events

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

일반적인 AWS IoT Events 문제 및 솔루션

오류를 해결하고 문제를 해결할 수 있는 가능한 솔루션을 찾으려면 다음 섹션을 참조하세요 AWS IoT Events.

감지기 모델 생성 오류

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

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

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

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

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

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

자세한 내용은 AWS IoT Events 감지기 모델 제한 사항 및 제한 사항 섹션을 참조하십시오.

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

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

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

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

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

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

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

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

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

잘못된 상태 사용

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

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

연결 메시지

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

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

InvalidRequestException 메시지

CreateDetectorModel 및를 호출하려고 InvalidRequestException 하면 UpdateDetectorModel를 얻습니다APIs.

다음에 따라 문제를 해결하십시오. 자세한 내용은 CreateDetectorModelUpdateDetectorModel 단원을 참조하세요.

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

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

Amazon CloudWatch Logs 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> 이름의 타이머를 설정하지 못했습니다. 지속 시간 표현식을 확인한 후 다시 시도해 주십시오.

    SetTimerAction 작업을 참조하여 올바른 파라미터를 지정했는지 확인한 다음 타이머를 다시 설정합니다.

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

Amazon 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.

    가 콘텐츠 표현식을 유효한 로 평가할 AWS IoT Events 수 JSON AWS IoT Events 없더라도 JSON페이로드 유형을 로 정의하면가 작업 페이로드에 대한 콘텐츠 표현식을 유효한 로 평가할 AWS IoT Events 수 있는지 확인합니다JSON.

자세한 내용은 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") 함수에는 큰따옴표가 있는 문자열이 인수로 필요합니다. timer-name 값에 참조를 사용하는 경우 큰따옴표가 있는 문자열을 참조해야 합니다.

    timeout("timer-name")
    참고

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

자세한 내용은 AWS IoT Events 표현식의 입력 및 변수에 대한 참조 단원을 참조하십시오.

에 메시지를 보내지 못했습니다. 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을 참조하여 AWS IoT Events 입력을 정의하는 방법을 알아봅니다.