

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

# Alur kerja perintah tingkat tinggi
<a name="iot-remote-command-workflow"></a>

Alur kerja ini menunjukkan bagaimana perangkat berinteraksi dengan AWS IoT Device Management Perintah. Semua permintaan HTTP API menggunakan [kredensi Sigv4](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_sigv.html) untuk penandatanganan.

![\[Ikhtisar perintah AWS IoT Device Management perangkat alur kerja tingkat tinggi.\]](http://docs.aws.amazon.com/id_id/iot/latest/developerguide/images/device-command-workflow.png)


**Topics**
+ [Membuat dan mengelola perintah](#command-create-command)
+ [Pilih perangkat target untuk perintah Anda dan berlangganan topik MQTT](#command-choose-target)
+ [Memulai dan memantau eksekusi perintah untuk perangkat target Anda](#command-command-executions)
+ [(Opsional) Aktifkan pemberitahuan untuk acara perintah](#iot-remote-command-commands-notifications)

## Membuat dan mengelola perintah
<a name="command-create-command"></a>

Untuk membuat dan mengelola perintah untuk perangkat Anda, lakukan langkah-langkah berikut.

1. 

**Buat sumber daya perintah**

   Buat Command dari [Command Hub](https://console.aws.amazon.com/iot/home#/commandHub) atau menggunakan [https://docs.aws.amazon.com/iot/latest/apireference/API_CreateCommand.html](https://docs.aws.amazon.com/iot/latest/apireference/API_CreateCommand.html)API.

1. 

**Tentukan payload**

   Berikan Payload dalam format apa pun. Tentukan jenis konten untuk memastikan interpretasi perangkat yang benar.

   Untuk Perintah dinamis dengan templat payload, payload akhir dihasilkan saat runtime menggunakan parameter yang disediakan. Template hanya mendukung format JSON, tetapi Payload yang dihasilkan dapat dikirim sebagai JSON atau CBOR.

1. 

**(Opsional) Kelola perintah yang dibuat**

   Perbarui nama tampilan dan deskripsi setelah pembuatan. Tandai Perintah sebagai usang saat tidak lagi diperlukan, atau hapus secara permanen. Untuk memodifikasi informasi Payload, buat Command baru.

## Pilih perangkat target untuk perintah Anda dan berlangganan topik MQTT
<a name="command-choose-target"></a>

Pilih perangkat target Anda dan konfigurasikan topik MQTT untuk menerima Perintah dan tanggapan penerbitan.

1. 

**Pilih perangkat target untuk perintah Anda**

   Pilih perangkat target untuk menerima dan menjalankan Command. Gunakan nama Thing untuk perangkat terdaftar atau ID Klien untuk perangkat yang tidak terdaftar. Untuk informasi selengkapnya, lihat [Pertimbangan perangkat target](iot-remote-command-execution-start-monitor.md#iot-command-execution-target).

1. 

**Konfigurasikan kebijakan AWS IoT perangkat**

   Konfigurasikan kebijakan IAM yang memberikan izin untuk menerima Eksekusi dan mempublikasikan pembaruan. Lihat [Contoh kebijakan IAM](iot-remote-command-execution-start-monitor.md#iot-remote-command-execution-update-policy) contoh kebijakan.

1. 

**Buat koneksi MQTT**

   Hubungkan perangkat ke broker pesan dan berlangganan Topik permintaan dan respons. Perangkat membutuhkan `iot:Connect` izin. Temukan titik akhir bidang data Anda menggunakan perintah `DescribeEndpoint` API atau `describe-endpoint` CLI:

   ```
   aws iot describe-endpoint --endpoint-type iot:Data-ATS
   ```

   Menjalankan perintah ini mengembalikan titik akhir bidang data khusus akun seperti yang ditunjukkan di bawah ini.

   ```
   account-specific-prefix.iot.region.amazonaws.com
   ```

1. 

**Berlangganan topik perintah**

   Berlangganan Topik Permintaan Perintah. Ketika Anda memulai Eksekusi, broker pesan menerbitkan Payload ke Topik ini. Perangkat Anda menerima dan memproses Perintah.

   (Opsional) Berlangganan Topik respons (`accepted`atau`rejected`) untuk menerima konfirmasi apakah layanan cloud menerima atau menolak respons perangkat.

   Dalam contoh ini, ganti:
   + *`<device>`*dengan `thing` atau `client` tergantung pada apakah perangkat yang Anda targetkan telah terdaftar sebagai IoT, atau ditentukan sebagai klien MQTT.
   + *`<DeviceID>`*dengan pengenal unik perangkat target Anda. ID ini dapat berupa ID klien MQTT unik atau nama benda.
**catatan**  
Jika jenis payload bukan JSON atau CBOR, *<PayloadFormat>* bidang mungkin tidak ada dalam topik permintaan perintah. Untuk mendapatkan format payload, kami sarankan Anda menggunakan MQTT5 untuk mendapatkan informasi format dari header pesan MQTT. Untuk informasi selengkapnya, lihat [Topik perintah](reserved-topics.md#reserved-topics-commands).

   ```
   $aws/commands/<devices>/<DeviceID>/executions/+/request/<PayloadFormat>
   $aws/commands/<devices>/<DeviceID>/executions/+/response/accepted/<PayloadFormat>
   $aws/commands/<devices>/<DeviceID>/executions/+/response/rejected/<PayloadFormat>
   ```

## Memulai dan memantau eksekusi perintah untuk perangkat target Anda
<a name="command-command-executions"></a>

Setelah Anda membuat perintah dan menentukan target untuk perintah, Anda dapat memulai eksekusi pada perangkat target dengan melakukan langkah-langkah berikut.

1. 

**Mulai eksekusi perintah pada perangkat target**

   Mulai Eksekusi dari [Command Hub](https://console.aws.amazon.com/iot/home#/commandHub) atau gunakan `StartCommandExecution` API dengan titik akhir khusus akun Anda. Gunakan `iot:Data-ATS` untuk dual-stack (IPv4/IPv6) atau hanya `iot:Jobs` untuk IPv4 .

   API menerbitkan Payload ke Topik permintaan Perintah.
**catatan**  
Jika perangkat offline dan menggunakan sesi persisten MQTT, Perintah menunggu di broker pesan. Saat perangkat terhubung kembali sebelum batas waktu, perangkat dapat memproses Perintah dan mempublikasikan hasil. Jika batas waktu berakhir, waktu eksekusi habis dan muatan akan dibuang.

1. 

**Perbarui hasil eksekusi perintah**

   Perangkat menerima Payload, memproses Perintah, melakukan tindakan yang ditentukan, dan menerbitkan hasil ke Topik respons Perintah menggunakan API berbasis `UpdateCommandExecution` MQTT. Jika berlangganan Topik yang diterima dan ditolak, perangkat akan menerima konfirmasi apakah layanan cloud menerima atau menolak respons.

   Tergantung pada apa yang Anda tentukan dalam topik permintaan, *<devices>* dapat berupa benda atau klien, dan *<DeviceID>* dapat berupa nama AWS IoT barang Anda atau ID klien MQTT.
**catatan**  
Hanya *<PayloadFormat>* bisa JSON atau CBOR dalam topik respons perintah.

   ```
   $aws/commands/<devices>/<DeviceID>/executions/<ExecutionId>/response/<PayloadFormat>
   ```

1. 

**(Opsional) Ambil hasil eksekusi perintah**

   Ambil hasil Eksekusi dari AWS IoT konsol atau menggunakan`GetCommandExecution`. Perangkat harus mempublikasikan hasil ke Topik respons Perintah untuk informasi terbaru. Lihat detail tambahan termasuk waktu pembaruan terakhir, hasil, dan waktu penyelesaian.

## (Opsional) Aktifkan pemberitahuan untuk acara perintah
<a name="iot-remote-command-commands-notifications"></a>

Berlangganan acara Perintah untuk pemberitahuan saat status Eksekusi berubah. Untuk informasi rinci tentang peristiwa eksekusi perintah, termasuk format pesan acara dan atribut payload, lihat[Peristiwa eksekusi perintah](command-events.md).

1. 

**Buat aturan topik**

   Berlangganan Topik acara Perintah untuk pemberitahuan perubahan status. Buat aturan topik untuk merutekan data perangkat ke AWS IoT layanan lain seperti AWS Lambda, Amazon SQS, dan AWS Step Functions menggunakan AWS IoT konsol atau. [Membuat AWS IoT aturan](iot-create-rule.md)

   Dalam contoh ini, ganti `<CommandID>` dengan pengidentifikasi perintah yang ingin Anda terima notifikasi dan `<CommandExecutionStatus>` dengan status eksekusi perintah.

   ```
   $aws/events/commandExecution/<CommandID>/<CommandExecutionStatus>
   ```
**catatan**  
Untuk menerima pemberitahuan untuk semua perintah dan status eksekusi perintah, Anda dapat menggunakan karakter wildcard dan berlangganan topik berikut.

   ```
   $aws/events/commandExecution/+/#
   ```

1. 

**Menerima dan memproses peristiwa perintah**

   Kelola pemberitahuan push Command dan buat aplikasi menggunakan acara berlangganan.

Kode berikut menunjukkan payload sampel untuk pemberitahuan peristiwa perintah yang akan Anda terima.

```
{
    "executionId": "2bd65c51-4cfd-49e4-9310-d5cbfdbc8554",
    "status":"FAILED",
    "statusReason": {
         "reasonCode": "DEVICE_TOO_BUSY",
         "reasonDescription": ""
    },
    "eventType": "COMMAND_EXECUTION",
    "commandArn":"arn:aws:iot:us-east-1:123456789012:command/0b9d9ddf-e873-43a9-8e2c-9fe004a90086",
    "targetArn":"arn:aws:iot:us-east-1:123456789012:thing/5006c3fc-de96-4def-8427-7eee36c6f2bd",
    "timestamp":1717708862107
}
```