Diagnosticar problemas de regras - AWS IoT Core

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Diagnosticar problemas de regras

Ajude-nos a melhorar este tópico

Esta seção descreve algumas objetos a serem verificadas quando você encontra um problema com a regra.

Configurando CloudWatch registros para solução de problemas

A melhor maneira de depurar problemas que você está tendo com as regras é usar o CloudWatch Logs. Ao ativar CloudWatch os registros para AWS IoT, você pode ver quais regras são acionadas e seu sucesso ou fracasso. Você também obtém informações que indicam se as condições da cláusula WHERE são correspondentes. Para ter mais informações, consulte Monitore AWS IoT usando CloudWatch registros.

O problema mais comum de regras é a autorização. Os registros mostram se sua função não está autorizada a atuar AssumeRole no recurso. Este é um log de exemplo gerado por log refinado:

{ "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)" }

Este é um log de exemplo semelhante gerado por log global:

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.

Para ter mais informações, consulte Visualizando AWS IoT registros no CloudWatch console.

Diagnosticando serviços externos

Os serviços externos são controlados pelo usuário final. Antes da execução da regra, certifique-se de que os serviços externos vinculados à sua regra estejam configurados e tenham unidades de throughput e capacidade suficientes para seu aplicativo.

Diagnosticar problemas de SQL

Se sua consulta SQL não estiver retornando os dados esperados:
  • Examine os logs em busca de mensagens de erro.

  • Confirme se sua sintaxe SQL corresponde ao documento JSON na mensagem.

    Analise os nomes de objetos e propriedades usados na consulta com aqueles usados no documento JSON da carga útil da mensagem do tópico. Para obter mais informações sobre a formatação JSON em consultas SQL, consulte Extensões JSON.

  • Verifique se os nomes do objeto ou da propriedade JSON incluem caracteres reservados ou numéricos.

    Para obter mais informações sobre caracteres reservados em referências de objetos JSON em consultas SQL, consulte Extensões JSON.