

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

# Penanganan kesalahan (tindakan kesalahan)
<a name="rule-error-handling"></a>

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 dibahas dalam topik ini adalah untuk [tindakan aturan](iot-rule-actions.md). Untuk men-debug masalah SQL, termasuk fungsi eksternal, Anda dapat mengatur AWS IoT logging. Untuk informasi selengkapnya, lihat [Konfigurasikan AWS IoT logging](configure-logging.md). 

## Format pesan tindakan kesalahan
<a name="rule-error-message-format"></a>

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
<a name="rule-error-example"></a>

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](iot-sql-functions.md) atau [templat substitusi](https://docs.aws.amazon.com//iot/latest/developerguide/iot-substitution-templates.html) apa pun dalam pernyataan SQL tindakan kesalahan termasuk fungsi eksternal: [https://docs.aws.amazon.com//iot/latest/developerguide/iot-sql-functions.html#iot-func-aws-lambda](https://docs.aws.amazon.com//iot/latest/developerguide/iot-sql-functions.html#iot-func-aws-lambda),,,, [https://docs.aws.amazon.com//iot/latest/developerguide/iot-sql-functions.html#iot-sql-function-get-dynamodb](https://docs.aws.amazon.com//iot/latest/developerguide/iot-sql-functions.html#iot-sql-function-get-dynamodb), [https://docs.aws.amazon.com//iot/latest/developerguide/iot-sql-functions.html#iot-sql-function-get-registry_data](https://docs.aws.amazon.com//iot/latest/developerguide/iot-sql-functions.html#iot-sql-function-get-registry_data), [https://docs.aws.amazon.com//iot/latest/developerguide/iot-sql-functions.html#iot-sql-function-get-thing-shadow](https://docs.aws.amazon.com//iot/latest/developerguide/iot-sql-functions.html#iot-sql-function-get-thing-shadow), dan. [https://docs.aws.amazon.com//iot/latest/developerguide/iot-sql-functions.html#iot-sql-decode-base64](https://docs.aws.amazon.com//iot/latest/developerguide/iot-sql-functions.html#iot-sql-decode-base64) Jika tindakan kesalahan mengharuskan untuk memanggil fungsi eksternal, maka menjalankan tindakan kesalahan dapat mengakibatkan tagihan tambahan untuk fungsi eksternal.

Untuk informasi selengkapnya tentang aturan dan cara menentukan tindakan kesalahan, lihat [Membuat AWS IoT Aturan](https://docs.aws.amazon.com//iot/latest/developerguide/iot-create-rule.html).

Untuk informasi lebih lanjut tentang penggunaan CloudWatch untuk memantau keberhasilan atau kegagalan aturan, lihat[AWS IoT metrik dan dimensi](metrics_dimensions.md).