Mendiagnosis masalah aturan - AWS IoT Core

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Mendiagnosis masalah aturan

Bagian ini menjelaskan beberapa hal yang harus diperiksa ketika Anda mengalami masalah dengan aturan.

Mengkonfigurasi CloudWatch Log untuk pemecahan masalah

Cara terbaik untuk men-debug masalah yang Anda alami dengan aturan adalah dengan menggunakan CloudWatch Log. Saat Anda mengaktifkan CloudWatch Log for AWS IoT, Anda dapat melihat aturan mana yang dipicu dan keberhasilan atau kegagalannya. Anda juga mendapatkan informasi tentang apakah kondisi klausa WHERE cocok. Untuk informasi selengkapnya, lihat Monitor AWS IoT menggunakan CloudWatch Log.

Masalah aturan yang paling umum adalah otorisasi. Log menunjukkan jika peran Anda tidak diizinkan untuk dilakukan AssumeRole pada sumber daya. Berikut adalah contoh log yang dihasilkan oleh logging berbutir halus:

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

Berikut adalah contoh log serupa yang dihasilkan oleh pencatatan 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.

Untuk informasi selengkapnya, lihat Melihat AWS IoT log di CloudWatch konsol.

Mendiagnosis layanan eksternal

Layanan eksternal dikendalikan oleh pengguna akhir. Sebelum eksekusi aturan, pastikan bahwa layanan eksternal yang telah Anda tautkan ke aturan sudah disiapkan dan memiliki unit throughput dan kapasitas yang cukup untuk aplikasi Anda.

Mendiagnosis masalah SQL

Jika kueri SQL Anda tidak mengembalikan data yang Anda harapkan:
  • Tinjau log untuk pesan kesalahan.

  • Konfirmasikan bahwa sintaks SQL Anda cocok dengan dokumen JSON dalam pesan.

    Tinjau nama objek dan properti yang digunakan dalam kueri dengan yang digunakan dalam dokumen JSON dari muatan pesan topik. Untuk informasi selengkapnya tentang pemformatan JSON dalam kueri SQL, lihat. Ekstensi JSON

  • Periksa untuk melihat apakah objek JSON atau nama properti menyertakan karakter cadangan atau numerik.

    Untuk informasi selengkapnya tentang karakter yang dicadangkan dalam referensi objek JSON dalam kueri SQL, lihat. Ekstensi JSON