View a markdown version of this page

Penanganan kesalahan (tindakan kesalahan) - AWS IoT Core

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

Penanganan kesalahan (tindakan kesalahan)

Saat AWS IoT menerima pesan dari perangkat, mesin aturan memeriksa untuk melihat apakah pesan tersebut cocok dengan aturan. Jika demikian, pernyataan kueri aturan dievaluasi dan tindakan aturan diaktifkan, meneruskan hasil pernyataan kueri.

Jika masalah terjadi saat mengaktifkan tindakan, mesin aturan mengaktifkan tindakan kesalahan, jika ditentukan untuk aturan. Ini mungkin terjadi ketika:

  • Aturan tidak memiliki izin untuk mengakses bucket Amazon S3.

  • Kesalahan pengguna menyebabkan throughput yang disediakan DynamoDB terlampaui.

catatan

Penanganan kesalahan yang dibahas dalam topik ini adalah untuk tindakan aturan. Untuk men-debug masalah SQL, termasuk fungsi eksternal, Anda dapat mengatur AWS IoT logging. Untuk informasi selengkapnya, lihat Konfigurasi AWS IoT pencatatan log.

Format pesan tindakan kesalahan

Satu pesan dihasilkan per aturan dan pesan. Misalnya, jika dua tindakan aturan dalam aturan yang sama gagal, tindakan kesalahan menerima satu pesan yang berisi kedua kesalahan.

Pesan tindakan kesalahan terlihat seperti contoh berikut.

{ "ruleName": "TestAction", "topic": "testme/action", "cloudwatchTraceId": "7e146a2c-95b5-6caf-98b9-50e3969734c7", "clientId": "iotconsole-1511213971966-0", "base64OriginalPayload": "ewogICJtZXNzYWdlIjogIkhlbGxvIHZyb20gQVdTIElvVCBjb25zb2xlIgp9", "failures": [ { "failedAction": "S3Action", "failedResource": "us-east-1-s3-verify-user", "errorMessage": "Failed to put S3 object. The error received was The specified bucket does not exist (Service: Amazon S3; Status Code: 404; Error Code: NoSuchBucket; Request ID: 9DF5416B9B47B9AF; S3 Extended Request ID: yMah1cwPhqTH267QLPhTKeVPKJB8BO5ndBHzOmWtxLTM6uAvwYYuqieAKyb6qRPTxP1tHXCoR4Y=). Message arrived on: error/action, Action: s3, Bucket: us-east-1-s3-verify-user, Key: \"aaa\". Value of x-amz-id-2: yMah1cwPhqTH267QLPhTKeVPKJB8BO5ndBHzOmWtxLTM6uAvwYYuqieAKyb6qRPTxP1tHXCoR4Y=" } ] }
ruleName

Nama aturan yang memicu tindakan kesalahan.

topik

Topik di mana pesan asli diterima.

pengawalan awan TraceId

Identitas unik yang mengacu pada log kesalahan CloudWatch.

clientId

ID klien dari penerbit pesan.

dasar64 OriginalPayload

Payload Base64-encoded pesan asli.

kegagalan
Tindakan Gagal

Nama tindakan yang gagal diselesaikan (misalnya, “S3Action”).

Sumber Daya Gagal

Nama sumber daya (misalnya, nama bucket S3).

errorMessage

Deskripsi dan penjelasan kesalahan.

Contoh tindakan kesalahan

Berikut adalah contoh aturan dengan tindakan kesalahan tambahan. Aturan berikut memiliki tindakan yang menulis data pesan ke tabel DynamoDB dan tindakan kesalahan yang menulis data ke bucket Amazon S3:

{ "sql" : "SELECT * FROM ..." "actions" : [{ "dynamoDB" : { "table" : "PoorlyConfiguredTable", "hashKeyField" : "AConstantString", "hashKeyValue" : "AHashKey"}} ], "errorAction" : { "s3" : { "roleArn": "arn:aws:iam::123456789012:role/aws_iot_s3", "bucketName" : "message-processing-errors", "key" : "${replace(topic(), '/', '-') + '-' + timestamp() + '-' + newuuid()}" } } }

Anda dapat menggunakan fungsi atau template substitusi apa pun dalam pernyataan SQL tindakan kesalahan termasuk fungsi eksternal: aws_lambda(), get_dynamodb(), get_registry_data(), get_thing_shadow(), get_secret(), dan decode(). Jika tindakan kesalahan mengharuskan untuk memanggil fungsi eksternal, maka memanggil tindakan kesalahan dapat menghasilkan tagihan tambahan untuk fungsi eksternal.

Untuk informasi selengkapnya tentang aturan dan cara menentukan tindakan kesalahan, lihat Membuat A AWS IoT turan.

Untuk informasi selengkapnya tentang penggunaan CloudWatch untuk memantau keberhasilan atau kegagalan aturan, lihatAWS IoT metrik dan dimensi.