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 suatu tindakan, mesin aturan mengaktifkan tindakan kesalahan, jika ada yang ditentukan untuk aturan tersebut. 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 tercakup dalam topik ini adalah untuk tindakan aturan. Untuk men-debug SQL masalah, termasuk fungsi eksternal, Anda dapat mengatur AWS IoT logging. Untuk informasi selengkapnya, lihat Konfigurasikan AWS IoT logging.
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.
- cloudwatchTraceId
-
Identitas unik yang mengacu pada log kesalahan CloudWatch.
- clientId
-
ID klien dari penerbit pesan.
- base64 OriginalPayload
-
Pesan asli payload Base64-dikodekan.
- kegagalan
-
- failedAction
-
Nama tindakan yang gagal diselesaikan (misalnya, “S3Action”).
- failedResource
-
Nama sumber daya (misalnya, nama ember 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 templat substitusi apa pun dalam SQL pernyataan tindakan kesalahan termasuk fungsi eksternal: aws_lambda()
,, get_dynamodb()
, get_thing_shadow()
, get_secret()
machinelearning_predict()
, dan decode()
. Jika tindakan kesalahan mengharuskan untuk memanggil fungsi eksternal, maka menjalankan tindakan kesalahan dapat mengakibatkan tagihan tambahan untuk fungsi eksternal.
Fungsi eksternal berikut ditagih setara dengan tindakan aturan: aws_lambda
, get_dynamodb()
, dan get_thing_shadow()
. Anda juga ditagih untuk decode()
fungsi hanya ketika Anda mendekode pesan Protobuf ke. JSON Untuk detail selengkapnya, lihat halaman AWS IoT Core harga
Untuk informasi selengkapnya tentang aturan dan cara menentukan tindakan kesalahan, lihat Membuat AWS IoT Aturan.
Untuk informasi lebih lanjut tentang penggunaan CloudWatch untuk memantau keberhasilan atau kegagalan aturan, lihatAWS IoT metrik dan dimensi.