Diagnosi dei problemi relativi alle regole - AWS IoT Core

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Diagnosi dei problemi relativi alle regole

Aiutaci a migliorare questo argomento

Questa sezione indica gli oggetti da verificare nel caso si riscontri un problema con la regola.

Configurazione dei CloudWatch log per la risoluzione dei problemi

Il modo migliore per risolvere i problemi relativi alle regole consiste nell'utilizzare i registri. CloudWatch Quando abiliti CloudWatch Logs for AWS IoT, puoi vedere quali regole vengono attivate e il loro successo o fallimento. Puoi inoltre ottenere informazioni sulla corrispondenza delle condizioni delle clausole WHERE. Per ulteriori informazioni, consulta Monitora AWS IoT usando CloudWatch i log.

La maggior parte dei problemi comuni delle regole riguarda l'autorizzazione. I log mostrano se il tuo ruolo non è autorizzato a svolgere AssumeRole sulla risorsa. Di seguito è illustrato un esempio di log generato dal logging granulare:

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

Di seguito è illustrato un esempio di log generato dal logging globale:

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.

Per ulteriori informazioni, consulta Visualizzazione dei AWS IoT log nella console CloudWatch .

Diagnosi di servizi esterni

I servizi esterni sono controllati dall'utente finale. Prima dell'esecuzione della regola, assicurati che i servizi esterni collegati alla regola siano configurati e dispongano di unità di capacità e velocità effettiva sufficiente per l'applicazione.

Diagnosi dei problemi SQL

Se la query SQL non restituisce i dati che ci si aspetta:
  • Esamina i registri per individuare gli eventuali messaggi di errore.

  • Verifica che la sintassi SQL corrisponda al documento JSON nel messaggio.

    Esamina i nomi degli oggetti e delle proprietà utilizzati nella query con quelli utilizzati nel documento JSON del payload dei messaggi dell'argomento. Per ulteriori informazioni sul formato JSON nelle query SQL, consulta Estensioni JSON.

  • Verifica se i nomi degli oggetti o delle proprietà JSON includono caratteri riservati o numerici.

    Per ulteriori informazioni sui caratteri riservati nei riferimenti agli oggetti JSON nelle query SQL, consulta Estensioni JSON.