

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

# AWS IoT Pemecahan Masalah Perintah
<a name="commands-troubleshooting"></a>

Ini adalah bagian pemecahan masalah untuk AWS IoT Device Management Perintah.

## Masalah eksekusi perintah
<a name="commands-execution-troubleshooting"></a>

**Eksekusi perintah tetap dalam status CREATED**  
Ketika eksekusi perintah tetap dalam `CREATED` status dan tidak melanjutkan ke `IN_PROGRESS` atau status lain, pertimbangkan hal berikut:  
+ Verifikasi perangkat terhubung ke AWS IoT Core dan telah berlangganan topik permintaan perintah.
+ Periksa apakah kebijakan perangkat mengizinkan `iot:Subscribe` dan `iot:Receive` pada topik permintaan perintah, dan `iot:Publish` pada topik respons perintah.
+ Jika perangkat sedang offline dan menggunakan sesi persisten MQTT, perintah menunggu di Core. AWS IoT Saat perangkat terhubung kembali sebelum batas waktu sesi persisten dan batas waktu eksekusi, perangkat dapat memproses perintah. Jika batas waktu eksekusi berakhir, eksekusi bertransisi ke. `TIMED_OUT`

**DataConflict kesalahan pada UpdateCommandExecution**  
`DataConflict`Kesalahan terjadi ketika beberapa `UpdateCommandExecution` permintaan dibuat ke layanan secara paralel atau dalam jangka waktu yang singkat (misalnya, segera `IN_PROGRESS` diikuti oleh`SUCCEEDED`).  
Untuk menyelesaikan masalah ini:  
+ Berlangganan topik `/accepted` dan `/rejected` respons untuk mengonfirmasi setiap pembaruan status telah diproses sebelum mengirim yang berikutnya.
+ Terapkan logika coba lagi dengan backoff eksponensial saat menerima kesalahan. `DataConflict`

**Eksekusi perintah pindah ke status terminal TIMED\_OUT secara tak terduga**  
Ketika eksekusi perintah bertransisi ke `TIMED_OUT` sebelum perangkat dapat memprosesnya:  
+ Tinjau nilai batas waktu yang dikonfigurasi untuk eksekusi perintah. Batas waktu default mungkin terlalu singkat untuk kasus penggunaan Anda.
+ Jika perangkat sedang offline saat perintah dikirim, verifikasi bahwa perangkat terhubung kembali dan menerima permintaan eksekusi sebelum batas waktu berakhir.
+ Sebuah cloud-initiated `TIMED_OUT` adalah non-terminal. Perangkat masih dapat memperbarui eksekusi ke status terminal (`SUCCEEDED`,, `FAILED``REJECTED`, atau`TIMED_OUT`).
Device-initiated `TIMED_OUT` adalah status terminal dan tidak ada pembaruan lebih lanjut yang dapat dilakukan untuk eksekusi perintah ini.

**Bagaimana cara melihat kesalahan dalam CloudWatch log?**  
Kesalahan dari permintaan `UpdateCommandExecution` MQTT dicatat di grup `AWSIoTLogsV2` log di Amazon. CloudWatch Untuk mengaktifkan logging dan melihat log, lihat[Konfigurasi AWS IoT pencatatan log](configure-logging.md).

## UpdateCommandExecution kode kesalahan
<a name="commands-error-codes"></a>

Ketika permintaan `UpdateCommandExecution` MQTT gagal, layanan akan menerbitkan respons kesalahan terhadap topik tersebut. `/rejected` Respons kesalahan berisi kode kesalahan dan pesan. Tabel berikut mencantumkan kode kesalahan yang dapat dikembalikan.


| Kode kesalahan | Dicoba ulang | Deskripsi | 
| --- | --- | --- | 
| InvalidStateTransition | Tidak | Transisi status yang diminta tidak diperbolehkan. Misalnya, transisi dari SUCCEEDED keIN\_PROGRESS, memperbarui eksekusi yang dimulai perangkatTIMED\_OUT. | 
| TerminalStateReached | Tidak | Eksekusi perintah telah mencapai status terminal dan tidak dapat diperbarui. | 
| ResourceNotFound | Tidak | Eksekusi perintah yang ditentukan tidak ada. | 
| DataConflict | Ya | Eksekusi perintah dimodifikasi secara bersamaan. Ini dapat terjadi ketika pembaruan status dikirim secara berurutan. Berlangganan topik /accepted dan /rejected respons untuk mengonfirmasi setiap pembaruan status telah diproses sebelum mengirim yang berikutnya. Untuk detail selengkapnya, lihat [DataConflict kesalahan pada UpdateCommandExecution](#commands-execution-troubleshooting). | 
| InternalError | Ya | Terjadi kesalahan server internal. Coba lagi permintaan dengan backoff eksponensial. | 

Berikut ini adalah contoh respons kesalahan yang dipublikasikan ke `/rejected` topik:

```
{
    "clientToken": "client-token-1",
    "executionId": "2bd65c51-4cfd-49e4-9310-d5cbfdbc8554",
    "error": "DataConflict",
    "errorMessage": "The command execution was modified concurrently"
}
```