진단 규칙 문제 - AWS IoT Core

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

진단 규칙 문제

이 섹션에서는 규칙에 문제가 발생할 때 확인해야 할 몇 가지 사항에 대해 설명합니다.

문제 해결을 위한 CloudWatch 로그 구성

규칙과 관련된 문제를 디버깅하는 가장 좋은 방법은 CloudWatch 로그를 사용하는 것입니다. CloudWatch Logs for AWS IoT를 활성화하면 어떤 규칙이 트리거되고 해당 규칙의 성공 또는 실패를 확인할 수 있습니다. 또한 WHERE 절 조건이 일치하는지 여부에 대한 정보도 얻을 수 있습니다. 자세한 내용은 CloudWatch 로그를 AWS IoT 사용한 모니터링 단원을 참조하세요.

가장 일반적인 규칙 문제는 권한 부여입니다. 로그에는 AssumeRole 리소스에서 역할을 수행할 권한이 없는지 여부가 표시됩니다. 아래는 세부 로깅에서 작성된 로그 예제입니다.

{ "timestamp": "2017-12-09 22:49:17.954", "logLevel": "ERROR", "traceId": "ff563525-6469-506a-e141-78d40375fc4e", "accountId": "123456789012", "status": "Failure", "eventType": "RuleExecution", "clientId": "iotconsole-123456789012-3", "topicName": "test-topic", "ruleName": "rule1", "ruleAction": "DynamoAction", "resources": { "ItemHashKeyField": "id", "Table": "trashbin", "Operation": "Insert", "ItemHashKeyValue": "id", "IsPayloadJSON": "true" }, "principalId": "ABCDEFG1234567ABCD890:outis", "details": "User: arn:aws:sts::123456789012:assumed-role/dynamo-testbin/5aUMInJH is not authorized to perform: dynamodb:PutItem on resource: arn:aws:dynamodb:us-east-1:123456789012:table/testbin (Service: AmazonDynamoDBv2; Status Code: 400; Error Code: AccessDeniedException; Request ID: AKQJ987654321AKQJ123456789AKQJ987654321AKQJ987654321)" }

아래는 글로벌 로깅에서 비슷하게 작성된 로그 예제입니다.

2017-12-09 22:49:17.954 TRACEID:ff562535-6964-506a-e141-78d40375fc4e PRINCIPALID:ABCDEFG1234567ABCD890:outis [ERROR] EVENT:DynamoActionFailure TOPICNAME:test-topic CLIENTID:iotconsole-123456789012-3 MESSAGE:Dynamo Insert record failed. The error received was User: arn:aws:sts::123456789012:assumed-role/dynamo-testbin/5aUMInJI is not authorized to perform: dynamodb:PutItem on resource: arn:aws:dynamodb:us-east-1:123456789012:table/testbin (Service: AmazonDynamoDBv2; Status Code: 400; Error Code: AccessDeniedException; Request ID: AKQJ987654321AKQJ987654321AKQJ987654321AKQJ987654321). Message arrived on: test-topic, Action: dynamo, Table: trashbin, HashKeyField: id, HashKeyValue: id, RangeKeyField: None, RangeKeyValue: 123456789012 No newer events found at the moment. Retry.

자세한 내용은 CloudWatch 콘솔에서 AWS IoT 로그 보기 단원을 참조하세요.

외부 서비스 진단

외부 서비스는 최종 사용자에 의해 제어됩니다. 규칙을 실행하기 전에 규칙에 연결된 외부 서비스가 설정되어 있고 애플리케이션에 충분한 처리량 및 용량 단위가 있는지 확인하세요.

SQL 문제 진단

SQL 쿼리가 예상한 데이터를 반환하지 않는 경우:
  • 로그에서 오류 메시지를 검토합니다.

  • SQL 구문이 메시지의 JSON 문서와 일치하는지 확인합니다.

    주제 메시지 페이로드의 JSON 문서에 사용된 객체 및 속성 이름과 함께 쿼리에 사용된 객체 및 속성 이름을 검토합니다. SQL 쿼리의 JSON 형식에 대한 자세한 내용은 JSON 확장 단원을 참조하세요.

  • JSON 객체 또는 속성 이름에 예약된 문자 또는 숫자가 포함되어 있는지 확인합니다.

    SQL 쿼리의 JSON 개체 참조의 예약 문자에 대한 자세한 내용은 JSON 확장 단원을 참조하세요.