

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

# Membangun demo dengan AWS IoT Device Client
<a name="iot-tutorials-dc-intro"></a>

Tutorial di jalur pembelajaran ini memandu Anda melalui langkah-langkah untuk mengembangkan perangkat lunak demonstrasi dengan menggunakan AWS IoT Device Client. AWS IoT Device Client menyediakan perangkat lunak yang berjalan di perangkat IoT Anda untuk menguji dan mendemonstrasikan aspek solusi IoT yang dibangun. AWS IoT

Tujuan dari tutorial ini adalah untuk memfasilitasi eksplorasi dan eksperimen sehingga Anda dapat merasa yakin yang AWS IoT mendukung solusi Anda sebelum Anda mengembangkan perangkat lunak perangkat Anda.

**Apa yang akan Anda pelajari dalam tutorial ini:**
+ Cara menyiapkan Raspberry Pi untuk digunakan sebagai perangkat IoT dengan AWS IoT
+ Cara mendemonstrasikan AWS IoT fitur dengan menggunakan Klien AWS IoT Perangkat di perangkat Anda

Di jalur pembelajaran ini, Anda akan menginstal AWS IoT Device Client di Raspberry Pi Anda sendiri dan membuat AWS IoT sumber daya di cloud untuk mendemonstrasikan ide solusi IoT. Sementara tutorial di jalur pembelajaran ini menunjukkan fitur dengan menggunakan Raspberry Pi, mereka menjelaskan tujuan dan prosedur untuk membantu Anda menyesuaikannya dengan perangkat lain.

## Prasyarat untuk membangun demo dengan Klien Perangkat AWS IoT
<a name="iot-dc-tutorial-overview"></a>

Bagian ini menjelaskan apa yang perlu Anda miliki sebelum memulai tutorial di jalur pembelajaran ini.

**Untuk menyelesaikan tutorial di jalur pembelajaran ini, Anda memerlukan:**
+ 

**Sebuah Akun AWS**  
Anda dapat menggunakan yang sudah ada Akun AWS, jika Anda memilikinya, tetapi Anda mungkin perlu menambahkan peran atau izin tambahan untuk menggunakan AWS IoT fitur yang digunakan tutorial ini.

  Jika Anda perlu membuat yang baru Akun AWS, lihat[Mengatur Akun AWS](setting-up.md).
+ 

**Raspberry Pi atau perangkat IoT yang kompatibel**  
Tutorial menggunakan [Raspberry Pi](https://www.raspberrypi.org/) karena datang dalam berbagai faktor bentuk, itu ada di mana-mana, dan itu adalah perangkat demonstrasi yang relatif murah. Tutorial telah diuji pada [Raspberry Pi 3 Model B \$1](https://www.raspberrypi.com/products/raspberry-pi-3-model-b-plus/), [Raspberry Pi 4 Model B](https://www.raspberrypi.com/products/raspberry-pi-4-model-b/), dan pada instans Amazon EC2 yang menjalankan Ubuntu Server 20.04 LTS (HVM). Untuk menggunakan AWS CLI dan menjalankan perintah, Kami menyarankan Anda menggunakan versi terbaru dari Raspberry Pi OS ([Raspberry Pi OS (64-bit)](https://www.raspberrypi.com/software/operating-systems/) atau OS Lite). Versi OS sebelumnya mungkin berfungsi, tetapi kami belum mengujinya.
**catatan**  
Tutorial menjelaskan tujuan dari setiap langkah untuk membantu Anda menyesuaikannya dengan perangkat keras IoT yang belum kami coba; Namun, mereka tidak secara khusus menjelaskan cara menyesuaikannya dengan perangkat lain.
+ 

**Keakraban dengan sistem operasi perangkat IoT**  
Langkah-langkah dalam tutorial ini mengasumsikan bahwa Anda terbiasa menggunakan perintah Linux dasar dan operasi dari antarmuka baris perintah yang didukung oleh Raspberry Pi. Jika Anda tidak terbiasa dengan operasi ini, Anda mungkin ingin memberi diri Anda lebih banyak waktu untuk menyelesaikan tutorial.

  Untuk menyelesaikan tutorial ini, Anda harus sudah memahami cara:
  + Lakukan operasi perangkat dasar dengan aman seperti merakit dan menghubungkan komponen, menghubungkan perangkat ke sumber daya yang diperlukan, dan memasang dan melepas kartu memori.
  + Unggah dan unduh perangkat lunak dan file sistem ke perangkat. Jika perangkat Anda tidak menggunakan perangkat penyimpanan yang dapat dilepas, seperti kartu microSD, Anda harus tahu cara menyambungkan ke perangkat Anda dan mengunggah serta mengunduh perangkat lunak dan file sistem ke perangkat.
  + Hubungkan perangkat Anda ke jaringan yang Anda rencanakan untuk menggunakannya.
  + Connect ke perangkat Anda dari komputer lain menggunakan terminal SSH atau program serupa.
  + Gunakan antarmuka baris perintah untuk membuat, menyalin, memindahkan, mengganti nama, dan mengatur izin file dan direktori pada perangkat.
  + Instal program baru di perangkat.
  + Transfer file ke dan dari perangkat Anda menggunakan alat seperti FTP atau SCP.
+ 

**Lingkungan pengembangan dan pengujian untuk solusi IoT Anda**  
Tutorial menjelaskan perangkat lunak dan perangkat keras yang diperlukan; Namun, tutorial mengasumsikan bahwa Anda akan dapat melakukan operasi yang mungkin tidak dijelaskan secara eksplisit. Contoh perangkat keras dan operasi tersebut meliputi:
  + 

**Komputer host lokal untuk mengunduh dan menyimpan file**  
Untuk Raspberry Pi, ini biasanya komputer pribadi atau laptop yang dapat membaca dan menulis ke kartu memori microSD. Komputer host lokal harus:
    + Terhubung ke Internet.
    + Siapkan yang [AWS CLI](https://aws.amazon.com//cli/)diinstal dan dikonfigurasi.
    + Memiliki browser web yang mendukung AWS konsol.
  + 

**Cara untuk menghubungkan komputer host lokal Anda ke perangkat Anda untuk berkomunikasi dengannya, memasukkan perintah, dan mentransfer file**  
Pada Raspberry Pi, ini sering dilakukan dengan menggunakan SSH dan SCP dari komputer host lokal.
  + 

**Monitor dan keyboard untuk terhubung ke perangkat IoT Anda**  
Ini bisa membantu, tetapi tidak diperlukan untuk menyelesaikan tutorial.
  + 

**Cara untuk komputer host lokal Anda dan perangkat IoT Anda untuk terhubung ke internet**  
Ini bisa berupa kabel atau koneksi jaringan nirkabel ke router atau gateway yang terhubung ke internet. Host lokal juga harus dapat terhubung ke Raspberry Pi. Ini mungkin mengharuskan mereka berada di jaringan area lokal yang sama. Tutorial tidak dapat menunjukkan cara mengaturnya untuk konfigurasi perangkat atau perangkat tertentu, tetapi mereka menunjukkan bagaimana Anda dapat menguji konektivitas ini.
  + 

**Akses ke router jaringan area lokal Anda untuk melihat perangkat yang terhubung**  
Untuk menyelesaikan tutorial di jalur pembelajaran ini, Anda harus dapat menemukan alamat IP perangkat IoT Anda.

    Pada jaringan area lokal, ini dapat dilakukan dengan mengakses antarmuka admin router jaringan yang terhubung dengan perangkat Anda. Jika Anda dapat menetapkan alamat IP tetap untuk perangkat Anda di router, Anda dapat menyederhanakan koneksi ulang setelah setiap kali perangkat restart.

    Jika Anda memiliki keyboard dan monitor terpasang ke perangkat, **ifconfig** dapat menampilkan alamat IP perangkat.

    Jika tidak satu pun dari ini adalah pilihan, Anda harus menemukan cara untuk mengidentifikasi alamat IP perangkat setelah setiap kali restart. 

Setelah Anda memiliki semua materi Anda, lanjutkan[Tutorial: Mempersiapkan perangkat Anda untuk Klien AWS IoT Perangkat](iot-dc-prepare-device.md). 

**Topics**
+ [Prasyarat untuk membangun demo dengan Klien Perangkat AWS IoT](#iot-dc-tutorial-overview)
+ [Tutorial: Mempersiapkan perangkat Anda untuk Klien AWS IoT Perangkat](iot-dc-prepare-device.md)
+ [Tutorial: Menginstal dan mengkonfigurasi AWS IoT Device Client](iot-dc-install-dc.md)
+ [Tutorial: Menunjukkan komunikasi pesan MQTT dengan Device Client AWS IoT](iot-dc-testconn.md)
+ [Tutorial: Menunjukkan tindakan jarak jauh (pekerjaan) dengan AWS IoT Device Client](iot-dc-runjobs.md)
+ [Tutorial: Membersihkan setelah menjalankan tutorial AWS IoT Device Client](iot-dc-cleanup.md)

# Tutorial: Mempersiapkan perangkat Anda untuk Klien AWS IoT Perangkat
<a name="iot-dc-prepare-device"></a>

Tutorial ini memandu Anda melalui inisialisasi Raspberry Pi Anda untuk mempersiapkannya untuk tutorial berikutnya di jalur pembelajaran ini.

Tujuan dari tutorial ini adalah untuk menginstal versi sistem operasi perangkat saat ini dan memastikan bahwa Anda dapat berkomunikasi dengan perangkat Anda dalam konteks lingkungan pengembangan Anda.

**Prasyarat**  
Sebelum Anda memulai tutorial ini, pastikan bahwa Anda memiliki item yang tercantum dalam [Prasyarat untuk membangun demo dengan Klien Perangkat AWS IoT](iot-tutorials-dc-intro.md#iot-dc-tutorial-overview) tersedia dan siap digunakan.

Tutorial ini membutuhkan waktu sekitar 90 menit untuk menyelesaikannya.

**Dalam tutorial ini, Anda akan:**
+ Instal dan perbarui sistem operasi perangkat Anda.
+ Instal dan verifikasi perangkat lunak tambahan apa pun yang diperlukan untuk menjalankan tutorial.
+ Uji konektivitas perangkat Anda dan instal sertifikat yang diperlukan.

Setelah Anda menyelesaikan tutorial ini, tutorial berikutnya mempersiapkan perangkat Anda untuk demo yang menggunakan AWS IoT Device Client.

**Topics**
+ [Instal dan perbarui sistem operasi perangkat](iot-dc-prepare-device-sys.md)
+ [Instal dan verifikasi perangkat lunak yang diperlukan di perangkat Anda](iot-dc-prepare-device-sw.md)
+ [Uji perangkat Anda dan simpan sertifikat Amazon CA](iot-dc-prepare-device-test.md)

# Instal dan perbarui sistem operasi perangkat
<a name="iot-dc-prepare-device-sys"></a>

Prosedur di bagian ini menjelaskan cara menginisialisasi kartu microSD yang digunakan Raspberry Pi untuk drive sistemnya. Kartu microSD Raspberry Pi berisi perangkat lunak sistem operasi (OS) serta ruang untuk penyimpanan file aplikasinya. Jika Anda tidak menggunakan Raspberry Pi, ikuti petunjuk perangkat untuk menginstal dan memperbarui perangkat lunak sistem operasi perangkat.

Setelah Anda menyelesaikan bagian ini, Anda harus dapat memulai perangkat IoT Anda dan menghubungkannya dari program terminal di komputer host lokal Anda.

**Peralatan yang dibutuhkan:**
+ Lingkungan pengembangan dan pengujian lokal Anda
+ Raspberry Pi yang atau perangkat IoT Anda, yang dapat terhubung ke internet
+ Kartu memori microSD dengan kapasitas minimal 8 GB atau penyimpanan yang cukup untuk OS dan perangkat lunak yang diperlukan.
**catatan**  
Saat memilih kartu microSD untuk latihan ini, pilih yang sebesar yang diperlukan tetapi, sekecil mungkin.  
Kartu SD kecil akan lebih cepat untuk mencadangkan dan memperbarui. Pada Raspberry Pi, Anda tidak memerlukan lebih dari kartu microSD 8-GB untuk tutorial ini. Jika Anda membutuhkan lebih banyak ruang untuk aplikasi spesifik Anda, file gambar yang lebih kecil yang Anda simpan dalam tutorial ini dapat mengubah ukuran sistem file pada kartu yang lebih besar untuk menggunakan semua ruang yang didukung dari kartu yang Anda pilih.

**Peralatan opsional:**
+ Keyboard USB yang terhubung ke Raspberry Pi
+ Monitor dan kabel HDMI untuk menghubungkan monitor ke Raspberry Pi

**Topics**
+ [Muat sistem operasi perangkat ke kartu microSD](#iot-dc-prepare-device-sys-step1)
+ [Mulai perangkat IoT Anda dengan sistem operasi baru](#iot-dc-prepare-device-sys-step2)
+ [Connect komputer host lokal Anda ke perangkat](#iot-dc-prepare-device-sys-step3)

## Muat sistem operasi perangkat ke kartu microSD
<a name="iot-dc-prepare-device-sys-step1"></a>

Prosedur ini menggunakan komputer host lokal untuk memuat sistem operasi perangkat ke kartu microSD.

**catatan**  
Jika perangkat Anda tidak menggunakan media penyimpanan yang dapat dilepas untuk sistem operasinya, instal sistem operasi menggunakan prosedur untuk perangkat itu dan lanjutkan ke[Mulai perangkat IoT Anda dengan sistem operasi baru](#iot-dc-prepare-device-sys-step2).

**Untuk menginstal sistem operasi pada Raspberry Pi Anda**

1. Di komputer host lokal Anda, unduh dan unzip gambar sistem operasi Raspberry Pi yang ingin Anda gunakan. Versi terbaru tersedia dari [ https://www.raspberrypi.com/software/operating-systems/](https://www.raspberrypi.com/software/operating-systems/) 

**Memilih versi Raspberry Pi OS**  
Tutorial ini menggunakan versi **Raspberry Pi OS Lite** karena ini adalah versi terkecil yang mendukung tutorial ini di jalur pembelajaran ini. Versi Raspberry Pi OS ini hanya memiliki antarmuka baris perintah dan tidak memiliki antarmuka pengguna grafis. Versi OS Raspberry Pi terbaru dengan antarmuka pengguna grafis juga akan bekerja dengan tutorial ini; Namun, prosedur yang dijelaskan dalam jalur pembelajaran ini hanya menggunakan antarmuka baris perintah untuk melakukan operasi pada Raspberry Pi.

1. Masukkan kartu microSD Anda ke komputer host lokal.

1. Menggunakan alat pencitraan kartu SD, tulis file gambar OS yang tidak di-zip ke kartu microSD.

1. Setelah menulis gambar Raspberry Pi OS ke kartu microSD:

   1. Buka partisi BOOT pada kartu microSD di jendela baris perintah atau jendela file explorer. 

   1. Di partisi BOOT kartu microSD, di direktori root, buat file kosong bernama `ssh` tanpa ekstensi file dan tanpa konten. Ini memberitahu Raspberry Pi untuk mengaktifkan komunikasi SSH saat pertama kali dimulai.

1. Keluarkan kartu microSD dan lepaskan dengan aman dari komputer host lokal.

Kartu microSD Anda sudah siap. [Mulai perangkat IoT Anda dengan sistem operasi baru](#iot-dc-prepare-device-sys-step2)

## Mulai perangkat IoT Anda dengan sistem operasi baru
<a name="iot-dc-prepare-device-sys-step2"></a>

Prosedur ini menginstal kartu microSD dan memulai Raspberry Pi Anda untuk pertama kalinya menggunakan sistem operasi yang diunduh.

**Untuk memulai perangkat IoT Anda dengan sistem operasi baru**

1. Dengan daya terputus dari perangkat, masukkan kartu microSD dari langkah sebelumnya[Muat sistem operasi perangkat ke kartu microSD](#iot-dc-prepare-device-sys-step1),, ke Raspberry Pi.

1. Hubungkan perangkat ke jaringan kabel.

1. Tutorial ini akan berinteraksi dengan Raspberry Pi Anda dari komputer host lokal Anda menggunakan terminal SSH.

   Jika Anda juga ingin berinteraksi dengan perangkat secara langsung, Anda dapat:

   1. Hubungkan monitor HDMI ke sana untuk menonton pesan konsol Raspberry Pi sebelum Anda dapat menghubungkan jendela terminal di komputer host lokal Anda ke Raspberry Pi Anda.

   1. Hubungkan keyboard USB ke sana jika Anda ingin berinteraksi langsung dengan Raspberry Pi.

1. Hubungkan daya ke Raspberry Pi dan tunggu sekitar satu menit untuk menginisialisasi.

   Jika Anda memiliki monitor yang terhubung ke Raspberry Pi Anda, Anda dapat menonton proses start-up di atasnya.

1. 

   Cari tahu alamat IP perangkat Anda:
   + Jika Anda menghubungkan monitor HDMI ke Raspberry Pi, alamat IP muncul di pesan yang ditampilkan pada monitor 
   + Jika Anda memiliki akses ke router yang terhubung dengan Raspberry Pi Anda, Anda dapat melihat alamatnya di antarmuka admin router.

Setelah Anda memiliki alamat IP Raspberry Pi Anda, Anda siap melakukannya[Connect komputer host lokal Anda ke perangkat](#iot-dc-prepare-device-sys-step3).

## Connect komputer host lokal Anda ke perangkat
<a name="iot-dc-prepare-device-sys-step3"></a>

Prosedur ini menggunakan program terminal di komputer host lokal Anda untuk terhubung ke Raspberry Pi Anda dan mengubah kata sandi defaultnya.

**Untuk menghubungkan komputer host lokal Anda ke perangkat Anda**

1. 

   Di komputer host lokal Anda, buka program terminal SSH:
   + Windows: `PuTTY`
   + Linux/macOS: `Terminal`
**catatan**  
PuTTY tidak diinstal secara otomatis di Windows. Jika tidak ada di komputer Anda, Anda mungkin perlu mengunduh dan menginstalnya.

1. Hubungkan program terminal ke alamat IP Raspberry Pi Anda dan masuk menggunakan kredensi defaultnya.

   ```
   username: pi
   password: raspberry
   ```

1. Setelah Anda masuk ke Raspberry Pi Anda, ubah kata sandi untuk `pi` pengguna.

   ```
   passwd
   ```

   Ikuti petunjuk untuk mengubah kata sandi.

   ```
   Changing password for pi.
   Current password: raspberry
   New password: YourNewPassword
   Retype new password: YourNewPassword
   passwd: password updated successfully
   ```

Setelah Anda memiliki prompt baris perintah Raspberry Pi di jendela terminal dan mengubah kata sandi, Anda siap untuk melanjutkan[Instal dan verifikasi perangkat lunak yang diperlukan di perangkat Anda](iot-dc-prepare-device-sw.md).

# Instal dan verifikasi perangkat lunak yang diperlukan di perangkat Anda
<a name="iot-dc-prepare-device-sw"></a>

Prosedur di bagian ini berlanjut dari [bagian sebelumnya untuk memperbarui](iot-dc-prepare-device-sys.md) sistem operasi Raspberry Pi Anda dan menginstal perangkat lunak pada Raspberry Pi yang akan digunakan di bagian selanjutnya untuk membangun dan menginstal AWS IoT Device Client.

Setelah Anda menyelesaikan bagian ini, Raspberry Pi Anda akan memiliki sistem up-to-date operasi, perangkat lunak yang diperlukan oleh tutorial di jalur pembelajaran ini, dan itu akan dikonfigurasi untuk lokasi Anda.

**Peralatan yang dibutuhkan:**
+ Lingkungan pengembangan dan pengujian lokal Anda [dari bagian sebelumnya](iot-dc-prepare-device-sys.md)
+ Raspberry Pi yang Anda gunakan [di bagian sebelumnya](iot-dc-prepare-device-sys.md)
+ Kartu memori microSD dari [bagian sebelumnya](iot-dc-prepare-device-sys.md)

**catatan**  
Raspberry Pi Model 3\$1 dan Raspberry Pi Model 4 dapat melakukan semua perintah yang dijelaskan dalam jalur pembelajaran ini. Jika perangkat IoT Anda tidak dapat mengkompilasi perangkat lunak atau menjalankannya AWS Command Line Interface, Anda mungkin perlu menginstal kompiler yang diperlukan di komputer host lokal Anda untuk membangun perangkat lunak dan kemudian mentransfernya ke perangkat IoT Anda. Untuk informasi selengkapnya tentang cara menginstal dan membangun perangkat lunak untuk perangkat Anda, lihat dokumentasi perangkat lunak perangkat Anda.

**Topics**
+ [Perbarui perangkat lunak sistem operasi](#iot-dc-prepare-device-sw-step1)
+ [Instal aplikasi dan pustaka yang diperlukan](#iot-dc-prepare-device-sw-step2)
+ [(Opsional) Simpan gambar kartu microSD](#iot-dc-prepare-device-sw-step3)

## Perbarui perangkat lunak sistem operasi
<a name="iot-dc-prepare-device-sw-step1"></a>

Prosedur ini memperbarui perangkat lunak sistem operasi.

**Untuk memperbarui perangkat lunak sistem operasi pada Raspberry Pi**

Lakukan langkah-langkah ini di jendela terminal komputer host lokal Anda.

1. Masukkan perintah ini untuk memperbarui perangkat lunak sistem pada Raspberry Pi Anda.

   ```
   sudo apt-get -y update
   sudo apt-get -y upgrade
   sudo apt-get -y autoremove
   ```

1. Perbarui pengaturan lokal dan zona waktu Raspberry Pi (opsional).

   Masukkan perintah ini untuk memperbarui pengaturan lokal dan zona waktu perangkat.

   ```
   sudo raspi-config
   ```

   1. Untuk mengatur lokal perangkat:

      1. **Di layar **Raspberry Pi Software Configuration Tool (raspi-config)**, pilih opsi 5.**

         **`5 Localisation Options Configure language and regional settings`**

         Gunakan Tab tombol untuk pindah ke**,** <Select>dan kemudian tekan tombolspace bar.

      1. Di menu opsi pelokalan, pilih opsi **L1**.

         **`L1 Locale Configure language and regional settings`**

         Gunakan Tab tombol untuk pindah ke**,** <Select>dan kemudian tekan tombolspace bar.

      1. Dalam daftar opsi lokal, pilih lokal yang ingin Anda instal di Raspberry Pi Anda dengan menggunakan tombol panah untuk menggulir dan menandai yang Anda inginkan. space bar 

         Di Amerika Serikat **`en_US.UTF-8`**, adalah salah satu yang baik untuk dipilih.

      1. Setelah memilih lokal untuk perangkat Anda, gunakan Tab tombol untuk memilih****<OK>, lalu tekan tombol space bar untuk menampilkan halaman konfirmasi **Mengonfigurasi lokal**.

   1. Untuk mengatur zona waktu perangkat:

      1. **Di layar **raspi-config**, pilih opsi 5.**

         **`5 Localisation Options Configure language and regional settings`**

         Gunakan Tab tombol untuk pindah ke**,** <Select>dan kemudian tekan tombolspace bar.

      1. Di menu opsi pelokalan, gunakan tombol panah untuk memilih opsi **L2**:

         **`L2 time zone Configure time zone`**

         Gunakan Tab tombol untuk pindah ke**,** <Select>dan kemudian tekan tombolspace bar.

      1. Di menu **Configuring tzdata**, pilih area geografis Anda dari daftar. 

         Gunakan Tab tombol untuk pindah ke****<OK>, dan kemudian tekan tombolspace bar.

      1. Dalam daftar kota, gunakan tombol panah untuk memilih kota di zona waktu Anda.

         Untuk mengatur zona waktu, gunakan Tab tombol untuk pindah ke****<OK>, lalu tekan tombolspace bar.

   1. Setelah selesai memperbarui pengaturan, gunakan Tab tombol untuk pindah ke****<Finish>, lalu tekan tombol space bar untuk menutup aplikasi **raspi-config**.

1. Masukkan perintah ini untuk memulai ulang Raspberry Pi Anda.

   ```
   sudo shutdown -r 0
   ```

1. Tunggu hingga Raspberry Pi Anda dimulai ulang.

1. Setelah Raspberry Pi Anda restart, sambungkan kembali jendela terminal di komputer host lokal Anda ke Raspberry Pi Anda.

Perangkat lunak sistem Raspberry Pi Anda sekarang dikonfigurasi dan Anda siap untuk melanjutkan[Instal aplikasi dan pustaka yang diperlukan](#iot-dc-prepare-device-sw-step2).

## Instal aplikasi dan pustaka yang diperlukan
<a name="iot-dc-prepare-device-sw-step2"></a>

Prosedur ini menginstal perangkat lunak aplikasi dan pustaka yang digunakan tutorial berikutnya.

Jika Anda menggunakan Raspberry Pi, atau jika Anda dapat mengkompilasi perangkat lunak yang diperlukan pada perangkat IoT Anda, lakukan langkah-langkah ini di jendela terminal di komputer host lokal Anda. Jika Anda harus mengkompilasi perangkat lunak untuk perangkat IoT Anda di komputer host lokal Anda, tinjau dokumentasi perangkat lunak untuk perangkat IoT Anda untuk informasi tentang cara melakukan langkah-langkah ini di perangkat Anda.

**Untuk menginstal perangkat lunak aplikasi dan pustaka pada Raspberry Pi Anda**

1. Masukkan perintah ini untuk menginstal perangkat lunak aplikasi dan perpustakaan.

   ```
   sudo apt-get -y install build-essential libssl-dev cmake unzip git python3-pip
   ```

1. Masukkan perintah ini untuk mengonfirmasi bahwa versi perangkat lunak yang benar telah diinstal.

   ```
   gcc --version
   cmake --version
   openssl version
   git --version
   ```

1. 

   Konfirmasikan bahwa versi perangkat lunak aplikasi ini diinstal:
   + `gcc`: 9.3.0 atau yang lebih baru
   + `cmake`: 3.10.x atau yang lebih baru
   + `OpenSSL`: 1.1.1 atau yang lebih baru
   + `git`: 2.20.1 atau yang lebih baru

Jika Raspberry Pi Anda memiliki versi yang dapat diterima dari perangkat lunak aplikasi yang diperlukan, Anda siap untuk melanjutkan[(Opsional) Simpan gambar kartu microSD](#iot-dc-prepare-device-sw-step3).

## (Opsional) Simpan gambar kartu microSD
<a name="iot-dc-prepare-device-sw-step3"></a>

Sepanjang tutorial di jalur pembelajaran ini, Anda akan menemukan prosedur ini untuk menyimpan salinan gambar kartu microSD Raspberry Pi ke file di komputer host lokal Anda. Sementara didorong, mereka tidak diperlukan tugas. Dengan menyimpan gambar kartu microSD jika disarankan, Anda dapat melewati prosedur yang mendahului titik penyimpanan di jalur pembelajaran ini, yang dapat menghemat waktu jika Anda merasa perlu mencoba lagi sesuatu. Konsekuensi dari tidak menyimpan gambar kartu microSD secara berkala adalah Anda mungkin harus memulai ulang tutorial di jalur pembelajaran dari awal jika kartu microSD Anda rusak atau jika Anda tidak sengaja mengonfigurasi aplikasi atau pengaturannya secara tidak benar.

Pada titik ini, kartu microSD Raspberry Pi Anda memiliki OS yang diperbarui dan perangkat lunak aplikasi dasar dimuat. Anda dapat menghemat waktu yang dibutuhkan untuk menyelesaikan langkah-langkah sebelumnya dengan menyimpan konten kartu microSD ke file sekarang. Memiliki gambar gambar kartu microSD perangkat Anda saat ini memungkinkan Anda mulai dari titik ini untuk melanjutkan atau mencoba lagi tutorial atau prosedur tanpa perlu menginstal dan memperbarui perangkat lunak dari awal.

**Untuk menyimpan gambar kartu microSD ke file**

1. Masukkan perintah ini untuk mematikan Raspberry Pi.

   ```
   sudo shutdown -h 0
   ```

1. Setelah Raspberry Pi mati sepenuhnya, lepaskan kekuatannya.

1. Lepaskan kartu microSD dari Raspberry Pi.

1. Di komputer host lokal Anda: 

   1. Masukkan kartu microSD.

   1. Menggunakan alat pencitraan kartu SD Anda, simpan gambar kartu microSD ke file.

   1. Setelah gambar kartu microSD disimpan, keluarkan kartu dari komputer host lokal.

1. Dengan daya terputus dari Raspberry Pi, masukkan kartu microSD ke Raspberry Pi.

1. Terapkan daya ke Raspberry Pi.

1. Setelah menunggu sekitar satu menit, di komputer host lokal, sambungkan kembali jendela terminal di komputer host lokal Anda yang terhubung ke Raspberry Pi Anda., lalu masuk ke Raspberry Pi.

# Uji perangkat Anda dan simpan sertifikat Amazon CA
<a name="iot-dc-prepare-device-test"></a>

Prosedur di bagian ini berlanjut dari [bagian sebelumnya](iot-dc-prepare-device-sw.md) untuk menginstal AWS Command Line Interface dan sertifikat Otoritas Sertifikat yang digunakan untuk mengautentikasi koneksi Anda. AWS IoT Core

Setelah Anda menyelesaikan bagian ini, Anda akan tahu bahwa Raspberry Pi Anda memiliki perangkat lunak sistem yang diperlukan untuk menginstal AWS IoT Device Client dan memiliki koneksi yang berfungsi ke internet.

**Peralatan yang dibutuhkan:**
+ Lingkungan pengembangan dan pengujian lokal Anda [dari bagian sebelumnya](iot-dc-prepare-device-sw.md)
+ Raspberry Pi yang Anda gunakan [di bagian sebelumnya](iot-dc-prepare-device-sw.md)
+ Kartu memori microSD dari [bagian sebelumnya](iot-dc-prepare-device-sw.md)

**Topics**
+ [Instal AWS Command Line Interface](#iot-dc-prepare-device-test-step1)
+ [Konfigurasikan Akun AWS kredensional Anda](#iot-dc-prepare-device-test-step2)
+ [Unduh sertifikat Amazon Root CA](#iot-dc-prepare-device-test-step3)
+ [(Opsional) Simpan gambar kartu microSD](#iot-dc-prepare-device-test-step4)

## Instal AWS Command Line Interface
<a name="iot-dc-prepare-device-test-step1"></a>

Prosedur ini menginstal AWS CLI ke Raspberry Pi Anda.

Jika Anda menggunakan Raspberry Pi atau jika Anda dapat mengkompilasi perangkat lunak pada perangkat IoT Anda, lakukan langkah-langkah ini di jendela terminal di komputer host lokal Anda. Jika Anda harus mengkompilasi perangkat lunak untuk perangkat IoT Anda di komputer host lokal Anda, tinjau dokumentasi perangkat lunak untuk perangkat IoT Anda untuk informasi tentang pustaka yang dibutuhkannya.

**Untuk menginstal AWS CLI pada Raspberry Pi Anda**

1. Jalankan perintah ini untuk mengunduh dan menginstal file AWS CLI.

   ```
   export PATH=$PATH:~/.local/bin # configures the path to include the directory with the AWS CLI
   git clone https://github.com/aws/aws-cli.git # download the AWS CLI code from GitHub
   cd aws-cli && git checkout v2 # go to the directory with the repo and checkout version 2
   pip3 install -r requirements.txt # install the prerequisite software
   ```

1. Jalankan perintah ini untuk menginstal file AWS CLI. Perintah ini dapat memakan waktu hingga 15 menit untuk diselesaikan.

   ```
   pip3 install . # install the AWS CLI 
   ```

1. Jalankan perintah ini untuk mengonfirmasi bahwa versi yang benar AWS CLI telah diinstal.

   ```
   aws --version
   ```

   Versi AWS CLI harus 2.2 atau lebih baru.

Jika AWS CLI ditampilkan versi saat ini, Anda siap untuk melanjutkan[Konfigurasikan Akun AWS kredensional Anda](#iot-dc-prepare-device-test-step2).

## Konfigurasikan Akun AWS kredensional Anda
<a name="iot-dc-prepare-device-test-step2"></a>

Dalam prosedur ini, Anda akan mendapatkan Akun AWS kredensi dan menambahkannya untuk digunakan pada Raspberry Pi Anda.

**Untuk menambahkan Akun AWS kredensi ke perangkat**

1. Dapatkan **ID Kunci Akses dan Kunci** **Akses Rahasia** dari Anda Akun AWS untuk mengautentikasi AWS CLI pada perangkat Anda. 

   Jika Anda baru mengenal AWS IAM, [ https://aws.amazon.com/premiumsupport/knowledge-center/create-access-key/](https://aws.amazon.com/premiumsupport/knowledge-center/create-access-key/)menjelaskan proses yang akan dijalankan di AWS konsol untuk membuat kredensil AWS IAM untuk digunakan di perangkat Anda. 

1. Di jendela terminal di komputer host lokal Anda yang terhubung ke Raspberry Pi Anda. dan dengan **ID Kunci Akses Akses** dan kredenal **Kunci Akses Rahasia** untuk perangkat Anda:

   1. Jalankan aplikasi AWS konfigurasi dengan perintah ini:

      ```
      aws configure
      ```

   1. Masukkan informasi kredensional dan konfigurasi Anda saat diminta:

      ```
      AWS Access Key ID: your Access Key ID
      AWS Secret Access Key: your Secret Access Key
      Default region name: your Wilayah AWS code
      Default output format: json
      ```

1. Jalankan perintah ini untuk menguji akses perangkat Anda ke AWS IoT Core titik akhir Akun AWS dan titik akhir Anda.

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

   Ini harus mengembalikan titik akhir AWS IoT data Akun AWS-spesifik Anda, seperti contoh ini:

   ```
   {
       "endpointAddress": "a3EXAMPLEffp-ats.iot.us-west-2.amazonaws.com"
   }
   ```

Jika Anda melihat titik akhir AWS IoT data Akun AWS spesifik Anda, Raspberry Pi Anda memiliki konektivitas dan izin untuk melanjutkan. [Unduh sertifikat Amazon Root CA](#iot-dc-prepare-device-test-step3) 

**penting**  
 Akun AWS Kredensi Anda sekarang disimpan di kartu microSD di Raspberry Pi Anda. Meskipun ini membuat interaksi masa depan menjadi AWS mudah bagi Anda dan perangkat lunak yang akan Anda buat dalam tutorial ini, mereka juga akan disimpan dan diduplikasi dalam gambar kartu microSD apa pun yang Anda buat setelah langkah ini secara default.  
Untuk melindungi keamanan Akun AWS kredensialmu, sebelum menyimpan gambar kartu microSD lagi, pertimbangkan untuk menghapus kredensialnya dengan menjalankan `aws configure` lagi dan memasukkan karakter acak untuk **ID Kunci Akses dan Kunci Akses** **Rahasia** untuk mencegah kredensialmu disusupi. Akun AWS   
Jika Anda menemukan bahwa Anda telah menyimpan Akun AWS kredensil Anda secara tidak sengaja, Anda dapat menonaktifkannya di konsol IAM. AWS 

## Unduh sertifikat Amazon Root CA
<a name="iot-dc-prepare-device-test-step3"></a>

Prosedur ini mengunduh dan menyimpan salinan sertifikat Amazon Root Certificate Authority (CA). Mengunduh sertifikat ini menyimpannya untuk digunakan dalam tutorial berikutnya dan juga menguji konektivitas perangkat Anda dengan AWS layanan.

**Untuk mengunduh dan menyimpan sertifikat Amazon Root CA**

1. Jalankan perintah ini untuk membuat direktori untuk sertifikat.

   ```
   mkdir ~/certs
   ```

1. Jalankan perintah ini untuk mengunduh sertifikat Amazon Root CA.

   ```
   curl -o ~/certs/AmazonRootCA1.pem https://www.amazontrust.com/repository/AmazonRootCA1.pem
   ```

1. Jalankan perintah ini untuk mengatur akses ke direktori sertifikat dan file-nya.

   ```
   chmod 745 ~
   chmod 700 ~/certs
   chmod 644 ~/certs/AmazonRootCA1.pem
   ```

1. Jalankan perintah ini untuk melihat file sertifikat CA di direktori baru.

   ```
   ls -l ~/certs
   ```

   Anda harus melihat entri seperti ini. Tanggal dan waktu akan berbeda; Namun, ukuran file dan semua info lainnya harus sama seperti yang ditunjukkan di sini.

   ```
   -rw-r--r-- 1 pi pi 1188 Oct 28 13:02 AmazonRootCA1.pem
   ```

   Jika ukuran file tidak`1188`, periksa parameter **curl** perintah. Anda mungkin telah mengunduh file yang salah.

## (Opsional) Simpan gambar kartu microSD
<a name="iot-dc-prepare-device-test-step4"></a>

Pada titik ini, kartu microSD Raspberry Pi Anda memiliki OS yang diperbarui dan perangkat lunak aplikasi dasar dimuat. 

**Untuk menyimpan gambar kartu microSD ke file**

1. Di jendela terminal di komputer host lokal Anda, hapus AWS kredensialnya.

   1. Jalankan aplikasi AWS konfigurasi dengan perintah ini:

      ```
      aws configure
      ```

   1. Ganti kredenal Anda saat diminta. Anda dapat meninggalkan **nama wilayah Default** **dan format output default** sebagaimana adanya dengan menekan **Enter**.

      ```
      AWS Access Key ID [****************YT2H]: XYXYXYXYX
      AWS Secret Access Key [****************9plH]: XYXYXYXYX
      Default region name [us-west-2]: 
      Default output format [json]:
      ```

1. Masukkan perintah ini untuk mematikan Raspberry Pi.

   ```
   sudo shutdown -h 0
   ```

1. Setelah Raspberry Pi mati sepenuhnya, lepaskan konektor dayanya.

1. Lepaskan kartu microSD dari perangkat Anda.

1. Di komputer host lokal Anda: 

   1. Masukkan kartu microSD.

   1. Menggunakan alat pencitraan kartu SD Anda, simpan gambar kartu microSD ke file.

   1. Setelah gambar kartu microSD disimpan, keluarkan kartu dari komputer host lokal.

1. Dengan daya terputus dari Raspberry Pi, masukkan kartu microSD ke Raspberry Pi.

1. Terapkan daya ke perangkat.

1. Setelah sekitar satu menit, pada komputer host lokal, restart sesi jendela terminal dan masuk ke perangkat.

   **Jangan masukkan kembali Akun AWS kredensialmu.**

Setelah Anda memulai ulang dan masuk ke Raspberry Pi Anda, Anda siap untuk melanjutkan. [Tutorial: Menginstal dan mengkonfigurasi AWS IoT Device Client](iot-dc-install-dc.md)

# Tutorial: Menginstal dan mengkonfigurasi AWS IoT Device Client
<a name="iot-dc-install-dc"></a>

Tutorial ini memandu Anda melalui instalasi dan konfigurasi AWS IoT Device Client dan pembuatan AWS IoT sumber daya yang akan Anda gunakan dalam demo ini dan lainnya.

**Untuk memulai tutorial ini:**
+ Siapkan komputer host lokal Anda dan Raspberry Pi dari [tutorial sebelumnya](iot-dc-prepare-device.md).

Tutorial ini bisa memakan waktu hingga 90 menit untuk menyelesaikannya.

**Setelah Anda selesai dengan topik ini:**
+ Perangkat IoT Anda akan siap digunakan dalam demo Klien AWS IoT Perangkat lainnya.
+ Anda akan menyediakan perangkat IoT Anda di. AWS IoT Core
+ Anda akan mengunduh dan menginstal AWS IoT Device Client di perangkat Anda.
+ Anda akan menyimpan gambar kartu microSD perangkat Anda yang dapat digunakan dalam tutorial berikutnya.

**Peralatan yang dibutuhkan:**
+ Lingkungan pengembangan dan pengujian lokal Anda [dari bagian sebelumnya](iot-dc-prepare-device-test.md)
+ Raspberry Pi yang Anda gunakan [di bagian sebelumnya](iot-dc-prepare-device-test.md)
+ Kartu memori microSD dari Raspberry Pi yang Anda gunakan di [bagian sebelumnya](iot-dc-prepare-device-test.md)

**Topics**
+ [Unduh dan simpan AWS IoT Device Client](iot-dc-install-download.md)
+ [Menyediakan Raspberry Pi Anda di AWS IoT](iot-dc-install-provision.md)
+ [Konfigurasikan AWS IoT Device Client untuk menguji konektivitas](iot-dc-install-configure.md)

# Unduh dan simpan AWS IoT Device Client
<a name="iot-dc-install-download"></a>

Prosedur di bagian ini mengunduh AWS IoT Device Client, mengompilasinya, dan menginstalnya di Raspberry Pi Anda. Setelah Anda menguji instalasi, Anda dapat menyimpan gambar kartu microSD Raspberry Pi untuk digunakan nanti ketika Anda ingin mencoba tutorial lagi.

**Topics**
+ [Unduh dan buat Klien AWS IoT Perangkat](#iot-dc-install-dc-download)
+ [Buat direktori yang digunakan oleh tutorial](#iot-dc-install-dc-files)
+ [(Opsional) Simpan gambar kartu microSD](#iot-dc-install-dc-save)

## Unduh dan buat Klien AWS IoT Perangkat
<a name="iot-dc-install-dc-download"></a>

Prosedur ini menginstal AWS IoT Device Client pada Raspberry Pi Anda.

Lakukan perintah ini di jendela terminal di komputer host lokal Anda yang terhubung ke Raspberry Pi Anda.

**Untuk menginstal AWS IoT Device Client pada Raspberry Pi Anda**

1. Masukkan perintah ini untuk mengunduh dan membangun AWS IoT Device Client di Raspberry Pi Anda.

   ```
   cd ~
   git clone https://github.com/awslabs/aws-iot-device-client aws-iot-device-client
   mkdir ~/aws-iot-device-client/build && cd ~/aws-iot-device-client/build
   cmake ../
   ```

1. Jalankan perintah ini untuk membangun AWS IoT Device Client. Perintah ini dapat memakan waktu hingga 15 menit untuk diselesaikan.

   ```
   cmake --build . --target aws-iot-device-client
   ```

   Pesan peringatan yang ditampilkan sebagai kompilasi AWS IoT Device Client dapat diabaikan.

   Tutorial ini telah diuji dengan AWS IoT Device Client bawaan**gcc**, versi (Raspbian 10.2.1-6\$1rpi1) 10.2.1 20210110 pada versi 30 Oktober 2021 dari Raspberry Pi OS (bullseye) aktif, versi (Raspbian 8.3.0-6\$1rpi1) 8.3.0 pada **gcc** versi 7 Mei 2021 dari Raspberry Pi OS (buster).

1. Setelah AWS IoT Device Client selesai membangun, uji dengan menjalankan perintah ini.

   ```
   ./aws-iot-device-client --help
   ```

Jika Anda melihat bantuan baris perintah untuk Klien AWS IoT AWS IoT Perangkat, Klien Perangkat telah berhasil dibangun dan siap untuk Anda gunakan.

## Buat direktori yang digunakan oleh tutorial
<a name="iot-dc-install-dc-files"></a>

Prosedur ini membuat direktori pada Raspberry Pi yang akan digunakan untuk menyimpan file yang digunakan oleh tutorial di jalur pembelajaran ini.

**Untuk membuat direktori yang digunakan oleh tutorial di jalur pembelajaran ini:**

1. Jalankan perintah ini untuk membuat direktori yang diperlukan.

   ```
   mkdir ~/dc-configs
   mkdir ~/policies
   mkdir ~/messages
   mkdir ~/certs/testconn
   mkdir ~/certs/pubsub
   mkdir ~/certs/jobs
   ```

1. Jalankan perintah ini untuk mengatur izin pada direktori baru.

   ```
   chmod 745 ~
   chmod 700 ~/certs/testconn
   chmod 700 ~/certs/pubsub
   chmod 700 ~/certs/jobs
   ```

Setelah Anda membuat direktori ini dan menetapkan izin mereka, lanjutkan ke[(Opsional) Simpan gambar kartu microSD](#iot-dc-install-dc-save).

## (Opsional) Simpan gambar kartu microSD
<a name="iot-dc-install-dc-save"></a>

Pada titik ini, kartu microSD Raspberry Pi Anda memiliki OS yang diperbarui, perangkat lunak aplikasi dasar, dan Klien AWS IoT Perangkat. 

Jika Anda ingin kembali untuk mencoba latihan dan tutorial ini lagi, Anda dapat melewati prosedur sebelumnya dengan menulis gambar kartu microSD yang Anda simpan dengan prosedur ini ke kartu microSD baru dan melanjutkan tutorial dari. [Menyediakan Raspberry Pi Anda di AWS IoT](iot-dc-install-provision.md)

**Untuk menyimpan gambar kartu microSD ke file:**

Di jendela terminal di komputer host lokal Anda yang terhubung ke Raspberry Pi Anda:

1. Konfirmasikan bahwa Akun AWS kredensional Anda belum disimpan.

   1. Jalankan aplikasi AWS konfigurasi dengan perintah ini:

      ```
      aws configure
      ```

   1. Jika kredensil Anda telah disimpan (jika ditampilkan dalam prompt), masukkan **XYXYXYXYX** string saat diminta seperti yang ditunjukkan di sini. Biarkan **nama wilayah Default** **dan format output default** kosong.

      ```
      AWS Access Key ID [****************YXYX]: XYXYXYXYX
      AWS Secret Access Key [****************YXYX]: XYXYXYXYX
      Default region name: 
      Default output format:
      ```

1. Masukkan perintah ini untuk mematikan Raspberry Pi.

   ```
   sudo shutdown -h 0
   ```

1. Setelah Raspberry Pi mati sepenuhnya, lepaskan konektor dayanya.

1. Lepaskan kartu microSD dari perangkat Anda.

1. Di komputer host lokal Anda: 

   1. Masukkan kartu microSD.

   1. Menggunakan alat pencitraan kartu SD Anda, simpan gambar kartu microSD ke file.

   1. Setelah gambar kartu microSD disimpan, keluarkan kartu dari komputer host lokal.

Anda dapat melanjutkan dengan kartu microSD ini. [Menyediakan Raspberry Pi Anda di AWS IoT](iot-dc-install-provision.md)

# Menyediakan Raspberry Pi Anda di AWS IoT
<a name="iot-dc-install-provision"></a>

Prosedur di bagian ini dimulai dengan gambar microSD tersimpan yang memiliki dan AWS IoT Device Client diinstal AWS CLI dan membuat AWS IoT sumber daya dan sertifikat perangkat yang menyediakan Raspberry Pi Anda. AWS IoT

## Pasang kartu microSD di Raspberry Pi Anda
<a name="iot-dc-install-dc-restore"></a>

Prosedur ini menginstal kartu microSD dengan perangkat lunak yang diperlukan dimuat dan dikonfigurasi ke dalam Raspberry Pi dan mengonfigurasi kartu Akun AWS Anda sehingga Anda dapat melanjutkan tutorial di jalur pembelajaran ini.

Gunakan kartu microSD dari [(Opsional) Simpan gambar kartu microSD](iot-dc-install-download.md#iot-dc-install-dc-save) yang memiliki perangkat lunak yang diperlukan untuk latihan dan tutorial di jalur pembelajaran ini.

**Untuk memasang kartu microSD di Raspberry Pi Anda**

1. Dengan daya terputus dari Raspberry Pi, masukkan kartu microSD ke Raspberry Pi.

1. Terapkan daya ke Raspberry Pi.

1. Setelah sekitar satu menit, di komputer host lokal, restart sesi jendela terminal dan masuk ke Raspberry Pi.

1. Di komputer host lokal Anda, di jendela terminal, dan dengan **ID Kunci Akses Akses dan kredenal Kunci** **Akses Rahasia** untuk Raspberry Pi Anda:

   1. Jalankan aplikasi AWS konfigurasi dengan perintah ini:

      ```
      aws configure
      ```

   1. Masukkan Akun AWS kredensi dan informasi konfigurasi Anda saat diminta:

      ```
      AWS Access Key ID [****************YXYX]: your Access Key ID
      AWS Secret Access Key [****************YXYX]: your Secret Access Key
      Default region name [us-west-2]: your Wilayah AWS code
      Default output format [json]: json
      ```

Setelah Anda memulihkan Akun AWS kredensialnya, Anda siap untuk melanjutkan. [Menyediakan perangkat Anda di AWS IoT Core](#iot-dc-install-dc-provision)

## Menyediakan perangkat Anda di AWS IoT Core
<a name="iot-dc-install-dc-provision"></a>

Prosedur di bagian ini membuat AWS IoT sumber daya yang menyediakan Raspberry Pi Anda AWS IoT. Saat Anda membuat sumber daya ini, Anda akan diminta untuk merekam berbagai informasi. Informasi ini digunakan oleh konfigurasi AWS IoT Device Client dalam prosedur berikutnya.

Agar Raspberry Pi Anda berfungsi AWS IoT, itu harus disediakan. Penyediaan adalah proses membuat dan mengonfigurasi AWS IoT sumber daya yang diperlukan untuk mendukung Raspberry Pi Anda sebagai perangkat IoT.

Dengan Raspberry Pi Anda dinyalakan dan dimulai ulang, sambungkan jendela terminal di komputer host lokal Anda ke Raspberry Pi dan selesaikan prosedur ini.

**Topics**
+ [Membuat dan mengunduh file sertifikat perangkat](#iot-dc-install-dc-provision-certs)
+ [Buat AWS IoT sumber daya](#iot-dc-install-dc-provision-resources)

### Membuat dan mengunduh file sertifikat perangkat
<a name="iot-dc-install-dc-provision-certs"></a>

Prosedur ini membuat file sertifikat perangkat untuk demo ini.

**Untuk membuat dan mengunduh file sertifikat perangkat untuk Raspberry Pi Anda**

1. Di jendela terminal di komputer host lokal Anda, masukkan perintah ini untuk membuat file sertifikat perangkat untuk perangkat Anda.

   ```
   mkdir ~/certs/testconn
   aws iot create-keys-and-certificate \
   --set-as-active \
   --certificate-pem-outfile "~/certs/testconn/device.pem.crt" \
   --public-key-outfile "~/certs/testconn/public.pem.key" \
   --private-key-outfile "~/certs/testconn/private.pem.key"
   ```

   Perintah mengembalikan respon seperti berikut ini. Catat `certificateArn` nilai untuk digunakan nanti.

   ```
   {
       "certificateArn": "arn:aws:iot:us-west-2:57EXAMPLE833:cert/76e7e4edb3e52f52334be2f387a06145b2aa4c7fcd810f3aea2d92abc227d269",
       "certificateId": "76e7e4edb3e52f5233EXAMPLE7a06145b2aa4c7fcd810f3aea2d92abc227d269",
       "certificatePem": "-----BEGIN CERTIFICATE-----\nMIIDWTCCAkGgAwIBAgI_SHORTENED_FOR_EXAMPLE_Lgn4jfgtS\n-----END CERTIFICATE-----\n",
       "keyPair": {
           "PublicKey": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BA_SHORTENED_FOR_EXAMPLE_ImwIDAQAB\n-----END PUBLIC KEY-----\n",
           "PrivateKey": "-----BEGIN RSA PRIVATE KEY-----\nMIIEowIBAAKCAQE_SHORTENED_FOR_EXAMPLE_T9RoDiukY\n-----END RSA PRIVATE KEY-----\n"
       }
   }
   ```

1. Masukkan perintah berikut untuk mengatur izin pada direktori sertifikat dan file-file-nya.

   ```
   chmod 745 ~
   chmod 700 ~/certs/testconn
   chmod 644 ~/certs/testconn/*
   chmod 600 ~/certs/testconn/private.pem.key
   ```

1. Jalankan perintah ini untuk meninjau izin pada direktori dan file sertifikat Anda.

   ```
   ls -l ~/certs/testconn
   ```

   Output dari perintah harus sama dengan apa yang Anda lihat di sini, kecuali tanggal dan waktu file akan berbeda.

   ```
   -rw-r--r-- 1 pi pi 1220 Oct 28 13:02 device.pem.crt
   -rw------- 1 pi pi 1675 Oct 28 13:02 private.pem.key
   -rw-r--r-- 1 pi pi  451 Oct 28 13:02 public.pem.key
   ```

Pada titik ini, Anda memiliki file sertifikat perangkat yang diinstal pada Raspberry Pi Anda dan Anda dapat melanjutkan[Buat AWS IoT sumber daya](#iot-dc-install-dc-provision-resources).

### Buat AWS IoT sumber daya
<a name="iot-dc-install-dc-provision-resources"></a>

Prosedur ini menyediakan perangkat Anda AWS IoT dengan membuat sumber daya yang dibutuhkan perangkat Anda untuk mengakses AWS IoT fitur dan layanan.

**Untuk menyediakan perangkat Anda di AWS IoT**

1. Di jendela terminal di komputer host lokal Anda, masukkan perintah berikut untuk mendapatkan alamat titik akhir data perangkat untuk Anda Akun AWS.

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

   Perintah dari langkah sebelumnya mengembalikan respons seperti berikut ini. Catat `endpointAddress` nilai untuk digunakan nanti.

   ```
   {
       "endpointAddress": "a3qjEXAMPLEffp-ats.iot.us-west-2.amazonaws.com"
   }
   ```

1. Masukkan perintah ini untuk membuat sumber daya AWS IoT untuk Raspberry Pi Anda.

   ```
   aws iot create-thing --thing-name "DevCliTestThing"
   ```

   Jika AWS IoT sumber daya Anda dibuat, perintah mengembalikan respons seperti ini.

   ```
   {
       "thingName": "DevCliTestThing",
       "thingArn": "arn:aws:iot:us-west-2:57EXAMPLE833:thing/DevCliTestThing",
       "thingId": "8ea78707-32c3-4f8a-9232-14bEXAMPLEfd"
   }
   ```

1. Di jendela terminal:

   1. Buka editor teks, seperti`nano`.

   1. Salin dokumen kebijakan JSON ini dan tempelkan ke editor teks terbuka Anda.  
****  

      ```
      {
          "Version":"2012-10-17",		 	 	 
          "Statement": [
              {
                  "Effect": "Allow",
                  "Action": [
                      "iot:Publish",
                      "iot:Subscribe",
                      "iot:Receive",
                      "iot:Connect"
                  ],
                  "Resource": [
                      "*"
                  ]
              }
          ]
      }
      ```
**catatan**  
Dokumen kebijakan ini dengan murah hati memberikan izin kepada setiap sumber daya untuk terhubung, menerima, menerbitkan, dan berlangganan. Biasanya kebijakan hanya memberikan izin kepada sumber daya tertentu untuk melakukan tindakan tertentu. Namun, untuk uji konektivitas perangkat awal, kebijakan yang terlalu umum dan permisif ini digunakan untuk meminimalkan kemungkinan masalah akses selama pengujian ini. Dalam tutorial berikutnya, dokumen kebijakan yang lebih sempit akan digunakan untuk menunjukkan praktik yang lebih baik dalam desain kebijakan.

   1. Simpan file di editor teks Anda sebagai**\$1/policies/dev\$1cli\$1test\$1thing\$1policy.json**. 

1. Jalankan perintah ini untuk menggunakan dokumen kebijakan dari langkah sebelumnya untuk membuat AWS IoT kebijakan.

   ```
   aws iot create-policy \
   --policy-name "DevCliTestThingPolicy" \
   --policy-document "file://~/policies/dev_cli_test_thing_policy.json"
   ```

   Jika kebijakan dibuat, perintah akan menampilkan respons seperti ini.

   ```
   {
       "policyName": "DevCliTestThingPolicy",
       "policyArn": "arn:aws:iot:us-west-2:57EXAMPLE833:policy/DevCliTestThingPolicy",
       "policyDocument": "{\n    \"Version\": \"2012-10-17\",		 	 	 \n    \"Statement\": [\n        {\n            \"Effect\": \"Allow\",\n            \"Action\": [\n                \"iot:Publish\",\n                \"iot:Subscribe\",\n                \"iot:Receive\",\n                \"iot:Connect\"\n            ],\n            \"Resource\": [\n                \"*\"\n            ]\n        }\n    ]\n}\n",
       "policyVersionId": "1"
   }
   ```

1. Jalankan perintah ini untuk melampirkan kebijakan ke sertifikat perangkat. Ganti `certificateArn` dengan `certificateArn` nilai yang Anda simpan sebelumnya.

   ```
   aws iot attach-policy \
   --policy-name "DevCliTestThingPolicy" \
   --target "certificateArn"
   ```

   Jika berhasil, perintah ini tidak mengembalikan apa pun.

1. Jalankan perintah ini untuk melampirkan sertifikat perangkat ke sumber daya AWS IoT benda. Ganti `certificateArn` dengan `certificateArn` nilai yang Anda simpan sebelumnya.

   ```
   aws iot attach-thing-principal \
   --thing-name "DevCliTestThing" \
   --principal "certificateArn"
   ```

   Jika berhasil, perintah ini tidak mengembalikan apa pun.

Setelah berhasil menyediakan perangkat AWS IoT, Anda siap untuk melanjutkan. [Konfigurasikan AWS IoT Device Client untuk menguji konektivitas](iot-dc-install-configure.md)

# Konfigurasikan AWS IoT Device Client untuk menguji konektivitas
<a name="iot-dc-install-configure"></a>

Prosedur di bagian ini mengkonfigurasi AWS IoT Device Client untuk mempublikasikan pesan MQTT dari Raspberry Pi Anda.

**Topics**
+ [Buat file konfigurasi](#iot-dc-install-dc-configure-step1)
+ [Buka klien uji MQTT](#iot-dc-install-dc-configure-step2)
+ [Jalankan Klien AWS IoT Perangkat](#iot-dc-install-dc-configure-step3)

## Buat file konfigurasi
<a name="iot-dc-install-dc-configure-step1"></a>

Prosedur ini membuat file konfigurasi untuk menguji AWS IoT Device Client.

**Untuk membuat file konfigurasi untuk menguji AWS IoT Device Client**
+ Di jendela terminal di komputer host lokal Anda yang terhubung ke Raspberry Pi Anda:

  1. Masukkan perintah ini untuk membuat direktori untuk file konfigurasi dan mengatur izin pada direktori:

     ```
     mkdir ~/dc-configs
     chmod 745 ~/dc-configs
     ```

  1. Buka editor teks, seperti`nano`.

  1. Salin dokumen JSON ini dan tempelkan ke editor teks terbuka Anda.

     ```
     {
       "endpoint": "a3qEXAMPLEaffp-ats.iot.us-west-2.amazonaws.com",
       "cert": "~/certs/testconn/device.pem.crt",
       "key": "~/certs/testconn/private.pem.key",
       "root-ca": "~/certs/AmazonRootCA1.pem",
       "thing-name": "DevCliTestThing",
       "logging": {
         "enable-sdk-logging": true,
         "level": "DEBUG",
         "type": "STDOUT",
         "file": ""
       },
       "jobs": {
         "enabled": false,
         "handler-directory": ""
       },
       "tunneling": {
         "enabled": false
       },
       "device-defender": {
         "enabled": false,
         "interval": 300
       },
       "fleet-provisioning": {
         "enabled": false,
         "template-name": "",
         "template-parameters": "",
         "csr-file": "",
         "device-key": ""
       },
       "samples": {
         "pub-sub": {
           "enabled": true,
           "publish-topic": "test/dc/pubtopic",
           "publish-file": "",
           "subscribe-topic": "test/dc/subtopic",
           "subscribe-file": ""
         }
       },
       "config-shadow": {
         "enabled": false
       },
       "sample-shadow": {
         "enabled": false,
         "shadow-name": "",
         "shadow-input-file": "",
         "shadow-output-file": ""
       }
     }
     ```

  1. Ganti *endpoint* nilai dengan titik akhir data perangkat untuk Akun AWS yang Anda temukan. [Menyediakan perangkat Anda di AWS IoT Core](iot-dc-install-provision.md#iot-dc-install-dc-provision)

  1. Simpan file di editor teks Anda sebagai**\$1/dc-configs/dc-testconn-config.json**.

  1. Jalankan perintah ini untuk mengatur izin pada file konfigurasi baru.

     ```
     chmod 644 ~/dc-configs/dc-testconn-config.json
     ```

Setelah Anda menyimpan file, Anda siap untuk melanjutkan[Buka klien uji MQTT](#iot-dc-install-dc-configure-step2).

## Buka klien uji MQTT
<a name="iot-dc-install-dc-configure-step2"></a>

Prosedur ini mempersiapkan **klien pengujian MQTT** di AWS IoT konsol untuk berlangganan pesan MQTT yang diterbitkan Klien Perangkat saat AWS IoT dijalankan.

**Untuk mempersiapkan **klien uji MQTT** untuk berlangganan semua pesan MQTT**

1. Di komputer host lokal Anda, di [AWS IoT konsol](https://console.aws.amazon.com//iot/home#/test), pilih klien pengujian **MQTT**.

1. Di tab **Berlangganan topik**, di **Filter topik**, masukkan **\$1** (satu tanda pound), dan pilih **Berlangganan untuk berlangganan** setiap topik MQTT.

1. Di bawah label **Langganan**, konfirmasikan bahwa Anda melihat **\$1** (satu tanda pound).

Biarkan jendela dengan **klien pengujian MQTT** terbuka saat Anda melanjutkan. [Jalankan Klien AWS IoT Perangkat](#iot-dc-install-dc-configure-step3)

## Jalankan Klien AWS IoT Perangkat
<a name="iot-dc-install-dc-configure-step3"></a>

Prosedur ini menjalankan AWS IoT Device Client sehingga menerbitkan pesan MQTT tunggal yang diterima dan ditampilkan oleh klien pengujian **MQTT**.

**Untuk mengirim pesan MQTT dari Device Client AWS IoT**

1. Pastikan bahwa kedua jendela terminal yang terhubung ke Raspberry Pi Anda dan jendela dengan **klien pengujian MQTT** terlihat saat Anda melakukan prosedur ini.

1. Di jendela terminal, masukkan perintah ini untuk menjalankan AWS IoT Device Client menggunakan file konfigurasi yang dibuat di[Buat file konfigurasi](#iot-dc-install-dc-configure-step1).

   ```
   cd ~/aws-iot-device-client/build
   ./aws-iot-device-client --config-file ~/dc-configs/dc-testconn-config.json
   ```

   Di jendela terminal, Klien AWS IoT Perangkat menampilkan pesan informasi dan kesalahan apa pun yang terjadi saat dijalankan.

   Jika tidak ada kesalahan yang ditampilkan di jendela terminal, tinjau klien **pengujian MQTT**.

1. *Di **klien pengujian MQTT**, di jendela Langganan, lihat Hello World\$1* pesan dikirim ke topik `test/dc/pubtopic` pesan.

1. Jika Klien AWS IoT Perangkat tidak menampilkan kesalahan dan Anda melihat *Hello World\$1* dikirim ke `test/dc/pubtopic` pesan di **klien pengujian MQTT**, Anda telah menunjukkan koneksi yang berhasil.

1. Di jendela terminal, masukkan **^C** (Ctrl-C) untuk menghentikan Device Client. AWS IoT 

Setelah Anda menunjukkan bahwa AWS IoT Device Client berjalan dengan benar pada Raspberry Pi Anda dan dapat berkomunikasi dengan AWS IoT, Anda dapat melanjutkan ke file[Tutorial: Menunjukkan komunikasi pesan MQTT dengan Device Client AWS IoT](iot-dc-testconn.md).

# Tutorial: Menunjukkan komunikasi pesan MQTT dengan Device Client AWS IoT
<a name="iot-dc-testconn"></a>

Tutorial ini menunjukkan bagaimana Klien AWS IoT Perangkat dapat berlangganan dan menerbitkan pesan MQTT, yang biasanya digunakan dalam solusi IoT.

**Untuk memulai tutorial ini:**
+ Minta komputer host lokal Anda dan Raspberry Pi dikonfigurasi seperti yang digunakan [di bagian sebelumnya](iot-dc-install-dc.md).

  Jika Anda menyimpan gambar kartu microSD setelah menginstal AWS IoT Device Client, Anda dapat menggunakan kartu microSD dengan gambar itu dengan Raspberry Pi Anda.
+ Jika Anda telah menjalankan demo ini sebelumnya, tinjau [Langkah 2: Membersihkan demo Akun AWS setelah membangun Anda dengan AWS IoT Device Client](iot-dc-cleanup.md#iot-dc-cleanup-cloud) untuk menghapus semua AWS IoT sumber daya yang Anda buat di proses sebelumnya untuk menghindari kesalahan sumber daya duplikat.

Tutorial ini membutuhkan waktu sekitar 45 menit untuk menyelesaikannya.

**Setelah Anda selesai dengan topik ini:**
+ Anda akan menunjukkan berbagai cara agar perangkat IoT Anda dapat berlangganan pesan MQTT AWS IoT dan memublikasikan pesan MQTT. AWS IoT

**Peralatan yang dibutuhkan:**
+ Lingkungan pengembangan dan pengujian lokal Anda [dari bagian sebelumnya](iot-dc-install-dc.md)
+ Raspberry Pi yang Anda gunakan [di bagian sebelumnya](iot-dc-install-dc.md)
+ Kartu memori microSD dari Raspberry Pi yang Anda gunakan di [bagian sebelumnya](iot-dc-install-dc.md)

**Topics**
+ [Siapkan Raspberry Pi untuk mendemonstrasikan komunikasi pesan MQTT](iot-dc-testconn-provision.md)
+ [Menunjukkan pesan penerbitan dengan Klien AWS IoT Perangkat](iot-dc-testconn-publish.md)
+ [Menunjukkan berlangganan pesan dengan Klien AWS IoT Perangkat](iot-dc-testconn-subscribe.md)

# Siapkan Raspberry Pi untuk mendemonstrasikan komunikasi pesan MQTT
<a name="iot-dc-testconn-provision"></a>

Prosedur ini menciptakan sumber daya di dalam AWS IoT dan di Raspberry Pi untuk menunjukkan komunikasi pesan MQTT menggunakan Device Client. AWS IoT 

**Topics**
+ [Buat file sertifikat untuk menunjukkan komunikasi MQTT](#iot-dc-testconn-provision-certs)
+ [Menyediakan perangkat Anda untuk mendemonstrasikan komunikasi MQTT](#iot-dc-testconn-provision-aws)
+ [Konfigurasikan file konfigurasi AWS IoT Device Client dan klien pengujian MQTT untuk mendemonstrasikan komunikasi MQTT](#iot-dc-testconn-provision-dc-config)

## Buat file sertifikat untuk menunjukkan komunikasi MQTT
<a name="iot-dc-testconn-provision-certs"></a>

Prosedur ini membuat file sertifikat perangkat untuk demo ini.

**Untuk membuat dan mengunduh file sertifikat perangkat untuk Raspberry Pi Anda**



1. Di jendela terminal di komputer host lokal Anda, masukkan perintah berikut untuk membuat file sertifikat perangkat untuk perangkat Anda.

   ```
   mkdir ~/certs/pubsub
   aws iot create-keys-and-certificate \
   --set-as-active \
   --certificate-pem-outfile "~/certs/pubsub/device.pem.crt" \
   --public-key-outfile "~/certs/pubsub/public.pem.key" \
   --private-key-outfile "~/certs/pubsub/private.pem.key"
   ```

   Perintah mengembalikan respon seperti berikut ini. Simpan `certificateArn` nilai untuk digunakan nanti.

   ```
   {
   "certificateArn": "arn:aws:iot:us-west-2:57EXAMPLE833:cert/76e7e4edb3e52f52334be2f387a06145b2aa4c7fcd810f3aea2d92abc227d269",
   "certificateId": "76e7e4edb3e52f5233EXAMPLE7a06145b2aa4c7fcd810f3aea2d92abc227d269",
   "certificatePem": "-----BEGIN CERTIFICATE-----\nMIIDWTCCAkGgAwIBAgI_SHORTENED_FOR_EXAMPLE_Lgn4jfgtS\n-----END CERTIFICATE-----\n",
   "keyPair": {
       "PublicKey": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BA_SHORTENED_FOR_EXAMPLE_ImwIDAQAB\n-----END PUBLIC KEY-----\n",
       "PrivateKey": "-----BEGIN RSA PRIVATE KEY-----\nMIIEowIBAAKCAQE_SHORTENED_FOR_EXAMPLE_T9RoDiukY\n-----END RSA PRIVATE KEY-----\n"
   }
   }
   ```

1. Masukkan perintah berikut untuk mengatur izin pada direktori sertifikat dan file-file-nya.

   ```
   chmod 700 ~/certs/pubsub
   chmod 644 ~/certs/pubsub/*
   chmod 600 ~/certs/pubsub/private.pem.key
   ```

1. Jalankan perintah ini untuk meninjau izin pada direktori dan file sertifikat Anda.

   ```
   ls -l ~/certs/pubsub
   ```

   Output dari perintah harus sama dengan apa yang Anda lihat di sini, kecuali tanggal dan waktu file akan berbeda.

   ```
   -rw-r--r-- 1 pi pi 1220 Oct 28 13:02 device.pem.crt
   -rw------- 1 pi pi 1675 Oct 28 13:02 private.pem.key
   -rw-r--r-- 1 pi pi  451 Oct 28 13:02 public.pem.key
   ```

1. Masukkan perintah ini untuk membuat direktori untuk file log.

   ```
   mkdir ~/.aws-iot-device-client
   mkdir ~/.aws-iot-device-client/log
   chmod 745 ~/.aws-iot-device-client/log
   echo " " > ~/.aws-iot-device-client/log/aws-iot-device-client.log
   echo " " > ~/.aws-iot-device-client/log/pubsub_rx_msgs.log
   chmod 600 ~/.aws-iot-device-client/log/*
   ```

## Menyediakan perangkat Anda untuk mendemonstrasikan komunikasi MQTT
<a name="iot-dc-testconn-provision-aws"></a>

Bagian ini membuat AWS IoT sumber daya yang menyediakan Raspberry Pi Anda AWS IoT. 

**Untuk menyediakan perangkat Anda di AWS IoT:**

1. Di jendela terminal di komputer host lokal Anda, masukkan perintah berikut untuk mendapatkan alamat titik akhir data perangkat untuk Anda Akun AWS.

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

   Nilai endpoint tidak berubah sejak saat Anda menjalankan perintah ini untuk tutorial sebelumnya. Menjalankan perintah lagi di sini dilakukan untuk memudahkan menemukan dan menempelkan nilai endpoint data ke dalam file konfigurasi yang digunakan dalam tutorial ini.

   Perintah dari langkah sebelumnya mengembalikan respons seperti berikut ini. Catat `endpointAddress` nilai untuk digunakan nanti.

   ```
   {
   "endpointAddress": "a3qjEXAMPLEffp-ats.iot.us-west-2.amazonaws.com"
   }
   ```

1. Masukkan perintah ini untuk membuat sumber daya AWS IoT hal baru untuk Raspberry Pi Anda.

   ```
   aws iot create-thing --thing-name "PubSubTestThing"
   ```

   Karena sumber daya AWS IoT benda adalah representasi *virtual* perangkat Anda di cloud, kami dapat membuat beberapa sumber daya AWS IoT untuk digunakan untuk tujuan yang berbeda. Mereka semua dapat digunakan oleh perangkat IoT fisik yang sama untuk mewakili berbagai aspek perangkat.

   Tutorial ini hanya akan menggunakan sumber daya satu hal pada satu waktu untuk mewakili Raspberry Pi. Dengan cara ini, dalam tutorial ini, mereka mewakili demo yang berbeda sehingga setelah Anda membuat AWS IoT sumber daya untuk demo, Anda dapat kembali dan mengulangi demo menggunakan sumber daya yang Anda buat khusus untuk masing-masing.

   Jika AWS IoT sumber daya Anda dibuat, perintah mengembalikan respons seperti ini.

   ```
   {
   "thingName": "PubSubTestThing",
   "thingArn": "arn:aws:iot:us-west-2:57EXAMPLE833:thing/PubSubTestThing",
   "thingId": "8ea78707-32c3-4f8a-9232-14bEXAMPLEfd"
   }
   ```

1. Di jendela terminal:

   1. Buka editor teks, seperti`nano`.

   1. Salin dokumen JSON ini dan tempelkan ke editor teks terbuka Anda.  
****  

      ```
      {
          "Version":"2012-10-17",		 	 	 
          "Statement": [
              {
                  "Effect": "Allow",
                  "Action": [
                      "iot:Connect"
                  ],
                  "Resource": [
                      "arn:aws:iot:us-west-2:123456789012:client/PubSubTestThing"
                  ]
              },
              {
                  "Effect": "Allow",
                  "Action": [
                      "iot:Publish"
                  ],
                  "Resource": [
                      "arn:aws:iot:us-west-2:123456789012:topic/test/dc/pubtopic"
                  ]
              },
              {
                  "Effect": "Allow",
                  "Action": [
                      "iot:Subscribe"
                  ],
                  "Resource": [
                      "arn:aws:iot:us-west-2:123456789012:topicfilter/test/dc/subtopic"
                  ]
              },
              {
                  "Effect": "Allow",
                  "Action": [
                      "iot:Receive"
                  ],
                  "Resource": [
                      "arn:aws:iot:us-west-2:123456789012:topic/test/dc/subtopic"
                  ]
              }
          ]
      }
      ```

   1. Di editor, di setiap `Resource` bagian dokumen kebijakan, ganti *us-west-2:57EXAMPLE833* dengan Anda Wilayah AWS, karakter titik dua (:), dan Akun AWS nomor 12 digit Anda.

   1. Simpan file di editor teks Anda sebagai**\$1/policies/pubsub\$1test\$1thing\$1policy.json**. 

1. Jalankan perintah ini untuk menggunakan dokumen kebijakan dari langkah sebelumnya untuk membuat AWS IoT kebijakan.

   ```
   aws iot create-policy \
   --policy-name "PubSubTestThingPolicy" \
   --policy-document "file://~/policies/pubsub_test_thing_policy.json"
   ```

   Jika kebijakan dibuat, perintah akan menampilkan respons seperti ini.

   ```
   {
                                       "policyName": "PubSubTestThingPolicy",
                                       "policyArn": "arn:aws:iot:us-west-2:57EXAMPLE833:policy/PubSubTestThingPolicy",
                                       "policyDocument": "{\n\"Version\": \"2012-10-17\",		 	 	 \n\"Statement\": [\n{\n\"Effect\": \"Allow\",\n\"Action\": [\n\"iot:Connect\"\n],\n\"Resource\": [\n\"arn:aws:iot:us-west-2:57EXAMPLE833:client/PubSubTestThing\"\n]\n},\n{\n\"Effect\": \"Allow\",\n\"Action\": [\n\"iot:Publish\"\n],\n\"Resource\": [\n\"arn:aws:iot:us-west-2:57EXAMPLE833:topic/test/dc/pubtopic\"\n]\n},\n{\n\"Effect\": \"Allow\",\n\"Action\": [\n\"iot:Subscribe\"\n],\n\"Resource\": [\n\"arn:aws:iot:us-west-2:57EXAMPLE833:topicfilter/test/dc/subtopic\"\n]\n},\n{\n\"Effect\": \"Allow\",\n\"Action\": [\n\"iot:Receive\"\n],\n\"Resource\": [\n\"arn:aws:iot:us-west-2:57EXAMPLE833:topic/test/dc/*\"\n]\n}\n]\n}\n",
                                       "policyVersionId": "1"
                                       }
   ```

1. Jalankan perintah ini untuk melampirkan kebijakan ke sertifikat perangkat. Ganti `certificateArn` dengan `certificateArn` nilai yang Anda simpan sebelumnya di bagian ini.

   ```
   aws iot attach-policy \
   --policy-name "PubSubTestThingPolicy" \
   --target "certificateArn"
   ```

   Jika berhasil, perintah ini tidak mengembalikan apa pun.

1. Jalankan perintah ini untuk melampirkan sertifikat perangkat ke sumber daya AWS IoT benda. Ganti `certificateArn` dengan `certificateArn` nilai yang Anda simpan sebelumnya di bagian ini.

   ```
   aws iot attach-thing-principal \
   --thing-name "PubSubTestThing" \
   --principal "certificateArn"
   ```

   Jika berhasil, perintah ini tidak mengembalikan apa pun.

Setelah berhasil menyediakan perangkat AWS IoT, Anda siap untuk melanjutkan[Konfigurasikan file konfigurasi AWS IoT Device Client dan klien pengujian MQTT untuk mendemonstrasikan komunikasi MQTT](#iot-dc-testconn-provision-dc-config).

## Konfigurasikan file konfigurasi AWS IoT Device Client dan klien pengujian MQTT untuk mendemonstrasikan komunikasi MQTT
<a name="iot-dc-testconn-provision-dc-config"></a>

Prosedur ini membuat file konfigurasi untuk menguji AWS IoT Device Client.

**Untuk membuat file konfigurasi untuk menguji AWS IoT Device Client**

1. Di jendela terminal di komputer host lokal Anda yang terhubung ke Raspberry Pi Anda:

   1. Buka editor teks, seperti`nano`.

   1. Salin dokumen JSON ini dan tempelkan ke editor teks terbuka Anda.

      ```
      {
        "endpoint": "a3qEXAMPLEaffp-ats.iot.us-west-2.amazonaws.com",
        "cert": "~/certs/pubsub/device.pem.crt",
        "key": "~/certs/pubsub/private.pem.key",
        "root-ca": "~/certs/AmazonRootCA1.pem",
        "thing-name": "PubSubTestThing",
        "logging": {
          "enable-sdk-logging": true,
          "level": "DEBUG",
          "type": "STDOUT",
          "file": ""
        },
        "jobs": {
          "enabled": false,
          "handler-directory": ""
        },
        "tunneling": {
          "enabled": false
        },
        "device-defender": {
          "enabled": false,
          "interval": 300
        },
        "fleet-provisioning": {
          "enabled": false,
          "template-name": "",
          "template-parameters": "",
          "csr-file": "",
          "device-key": ""
        },
        "samples": {
          "pub-sub": {
            "enabled": true,
            "publish-topic": "test/dc/pubtopic",
            "publish-file": "",
            "subscribe-topic": "test/dc/subtopic",
            "subscribe-file": "~/.aws-iot-device-client/log/pubsub_rx_msgs.log"
          }
        },
        "config-shadow": {
          "enabled": false
        },
        "sample-shadow": {
          "enabled": false,
          "shadow-name": "",
          "shadow-input-file": "",
          "shadow-output-file": ""
        }
      }
      ```

   1. Ganti *endpoint* nilai dengan titik akhir data perangkat untuk Akun AWS yang Anda temukan. [Menyediakan perangkat Anda di AWS IoT Core](iot-dc-install-provision.md#iot-dc-install-dc-provision)

   1. Simpan file di editor teks Anda sebagai**\$1/dc-configs/dc-pubsub-config.json**.

   1. Jalankan perintah ini untuk mengatur izin pada file konfigurasi baru.

      ```
      chmod 644 ~/dc-configs/dc-pubsub-config.json
      ```

1. Untuk mempersiapkan **klien uji MQTT** untuk berlangganan semua pesan MQTT:

   1. Di komputer host lokal Anda, di [AWS IoT konsol](https://console.aws.amazon.com//iot/home#/test), pilih klien pengujian **MQTT**.

   1. Di tab **Berlangganan topik**, di **Filter topik**, masukkan **\$1** (satu tanda pound), dan pilih **Berlangganan**.

   1. Di bawah label **Langganan**, konfirmasikan bahwa Anda melihat **\$1** (satu tanda pound).

   Biarkan jendela dengan **klien pengujian MQTT** terbuka saat Anda melanjutkan tutorial ini.

Setelah Anda menyimpan file dan mengkonfigurasi **klien pengujian MQTT**, Anda siap untuk melanjutkan. [Menunjukkan pesan penerbitan dengan Klien AWS IoT Perangkat](iot-dc-testconn-publish.md)

# Menunjukkan pesan penerbitan dengan Klien AWS IoT Perangkat
<a name="iot-dc-testconn-publish"></a>

Prosedur di bagian ini menunjukkan bagaimana Klien AWS IoT Perangkat dapat mengirim pesan MQTT default dan kustom.

Pernyataan kebijakan ini dalam kebijakan yang Anda buat pada langkah sebelumnya untuk latihan ini memberikan izin kepada Raspberry Pi untuk melakukan tindakan ini:
+ 

**`iot:Connect`**  
Memberikan klien bernama`PubSubTestThing`, Raspberry Pi Anda menjalankan AWS IoT Device Client, untuk terhubung.

  ```
      {
        "Effect": "Allow",
        "Action": [
          "iot:Connect"
        ],
        "Resource": [
          "arn:aws:iot:us-west-2:57EXAMPLE833:client/PubSubTestThing"
        ]
      }
  ```
+ 

**`iot:Publish`**  
Memberikan izin Raspberry Pi untuk mempublikasikan pesan dengan topik MQTT. `test/dc/pubtopic`

  ```
      {
        "Effect": "Allow",
        "Action": [
          "iot:Publish"
        ],
        "Resource": [
          "arn:aws:iot:us-west-2:57EXAMPLE833:topic/test/dc/pubtopic"
        ]
      }
  ```

  `iot:Publish`Tindakan memberikan izin untuk mempublikasikan ke topik MQTT yang tercantum dalam larik Sumber Daya. *Isi* pesan tersebut tidak dikontrol oleh pernyataan kebijakan.

## Publikasikan pesan default menggunakan AWS IoT Device Client
<a name="iot-dc-testconn-publish-default"></a>

Prosedur ini menjalankan AWS IoT Device Client sehingga menerbitkan pesan MQTT default tunggal yang diterima dan ditampilkan oleh klien pengujian **MQTT**.

**Untuk mengirim pesan MQTT default dari Device Client AWS IoT**

1. Pastikan bahwa kedua jendela terminal pada komputer host lokal Anda yang terhubung ke Raspberry Pi Anda dan jendela dengan **klien pengujian MQTT** terlihat saat Anda melakukan prosedur ini.

1. Di jendela terminal, masukkan perintah ini untuk menjalankan AWS IoT Device Client menggunakan file konfigurasi yang dibuat di[Buat file konfigurasi](iot-dc-install-configure.md#iot-dc-install-dc-configure-step1).

   ```
   cd ~/aws-iot-device-client/build
   ./aws-iot-device-client --config-file ~/dc-configs/dc-pubsub-config.json
   ```

   Di jendela terminal, Klien AWS IoT Perangkat menampilkan pesan informasi dan kesalahan apa pun yang terjadi saat dijalankan.

   Jika tidak ada kesalahan yang ditampilkan di jendela terminal, tinjau klien **pengujian MQTT**.

1. *Di **klien pengujian MQTT**, di jendela **Langganan**, lihat Hello World\$1* pesan dikirim ke topik `test/dc/pubtopic` pesan.

1. Jika Klien AWS IoT Perangkat tidak menampilkan kesalahan dan Anda melihat *Hello World\$1* dikirim ke `test/dc/pubtopic` pesan di **klien pengujian MQTT**, Anda telah menunjukkan koneksi yang berhasil.

1. Di jendela terminal, masukkan **^C** (Ctrl-C) untuk menghentikan Device Client. AWS IoT 

Setelah mendemonstrasikan bahwa AWS IoT Device Client menerbitkan pesan MQTT default, Anda dapat melanjutkan ke pesan MQTT default. [Mempublikasikan pesan kustom menggunakan AWS IoT Device Client](#iot-dc-testconn-publish-custom)

## Mempublikasikan pesan kustom menggunakan AWS IoT Device Client
<a name="iot-dc-testconn-publish-custom"></a>

**Prosedur di bagian ini membuat pesan MQTT kustom dan kemudian menjalankan AWS IoT Device Client sehingga menerbitkan pesan MQTT kustom satu kali untuk klien pengujian MQTT untuk menerima dan menampilkan.**

### Buat pesan MQTT khusus untuk Klien Perangkat AWS IoT
<a name="iot-dc-testconn-publish-custom-create"></a>

Lakukan langkah-langkah ini di jendela terminal pada komputer host lokal yang terhubung ke Raspberry Pi Anda.

**Untuk membuat pesan kustom untuk Klien AWS IoT Perangkat untuk memublikasikan**

1. Di jendela terminal, buka editor teks, seperti`nano`.

1. Ke editor teks, salin dan tempel dokumen JSON berikut. Ini akan menjadi payload pesan MQTT yang diterbitkan oleh Device Client. AWS IoT 

   ```
   {
     "temperature": 28,
     "humidity": 80,
     "barometer": 1013,
     "wind": {
       "velocity": 22,
       "bearing": 255
     }
   }
   ```

1. Simpan konten editor teks sebagai**\$1/messages/sample-ws-message.json**. 

1. Masukkan perintah berikut untuk mengatur izin file pesan yang baru saja Anda buat.

   ```
   chmod 600 ~/messages/*
   ```

**Untuk membuat file konfigurasi untuk Klien AWS IoT Perangkat yang akan digunakan untuk mengirim pesan kustom**

1. Di jendela terminal, di editor teks seperti`nano`, buka file konfigurasi AWS IoT Device Client yang ada:**\$1/dc-configs/dc-pubsub-config.json**. 

1. Edit `samples` objek agar terlihat seperti ini. Tidak ada bagian lain dari file ini yang perlu diubah.

   ```
     "samples": {
       "pub-sub": {
         "enabled": true,
         "publish-topic": "test/dc/pubtopic",
         "publish-file": "~/messages/sample-ws-message.json",
         "subscribe-topic": "test/dc/subtopic",
         "subscribe-file": "~/.aws-iot-device-client/log/pubsub_rx_msgs.log"
   ```

1. Simpan konten editor teks sebagai**\$1/dc-configs/dc-pubsub-custom-config.json**. 

1. Jalankan perintah ini untuk mengatur izin pada file konfigurasi baru.

   ```
   chmod 644 ~/dc-configs/dc-pubsub-custom-config.json
   ```

### Publikasikan pesan MQTT kustom dengan menggunakan Device Client AWS IoT
<a name="iot-dc-testconn-publish-custom-publish"></a>

Perubahan ini hanya memengaruhi *isi* muatan pesan MQTT, sehingga kebijakan saat ini akan terus berfungsi. Namun, jika *topik MQTT* (seperti yang didefinisikan oleh `publish-topic` nilai dalam`~/dc-configs/dc-pubsub-custom-config.json`) diubah, pernyataan `iot::Publish` kebijakan juga perlu dimodifikasi untuk memungkinkan Raspberry Pi mempublikasikan ke topik MQTT baru.

**Untuk mengirim pesan MQTT dari Device Client AWS IoT**

1. Pastikan jendela terminal dan jendela dengan **klien pengujian MQTT** terlihat saat Anda melakukan prosedur ini. **Selain itu, pastikan **klien pengujian MQTT** Anda masih berlangganan filter topik \$1.** Jika tidak, berlangganan filter **\$1** topik lagi.

1. Di jendela terminal, masukkan perintah ini untuk menjalankan AWS IoT Device Client menggunakan file konfigurasi yang dibuat di[Buat file konfigurasi](iot-dc-install-configure.md#iot-dc-install-dc-configure-step1).

   ```
   cd ~/aws-iot-device-client/build
   ./aws-iot-device-client --config-file ~/dc-configs/dc-pubsub-custom-config.json
   ```

   Di jendela terminal, Klien AWS IoT Perangkat menampilkan pesan informasi dan kesalahan apa pun yang terjadi saat dijalankan.

   Jika tidak ada kesalahan yang ditampilkan di jendela terminal, tinjau klien pengujian MQTT.

1. Di **klien pengujian MQTT**, di jendela **Langganan**, lihat payload pesan kustom yang dikirim ke topik pesan. `test/dc/pubtopic`

1. Jika Klien AWS IoT Perangkat tidak menampilkan kesalahan dan Anda melihat payload pesan kustom yang dipublikasikan ke `test/dc/pubtopic` pesan di **klien pengujian MQTT**, Anda telah berhasil menerbitkan pesan kustom.

1. Di jendela terminal, masukkan **^C** (Ctrl-C) untuk menghentikan Device Client. AWS IoT 

Setelah mendemonstrasikan bahwa Klien AWS IoT Perangkat menerbitkan payload pesan khusus, Anda dapat melanjutkan[Menunjukkan berlangganan pesan dengan Klien AWS IoT Perangkat](iot-dc-testconn-subscribe.md).

# Menunjukkan berlangganan pesan dengan Klien AWS IoT Perangkat
<a name="iot-dc-testconn-subscribe"></a>

Di bagian ini, Anda akan mendemonstrasikan dua jenis langganan pesan:
+ Langganan topik tunggal
+ Langganan topik Wild-card

Pernyataan kebijakan ini dalam kebijakan yang dibuat untuk latihan ini memberikan izin kepada Raspberry Pi untuk melakukan tindakan ini:
+ 

**`iot:Receive`**  
Memberikan izin kepada Klien AWS IoT Perangkat untuk menerima topik MQTT yang cocok dengan topik yang disebutkan dalam objek. `Resource`

  ```
      {
        "Effect": "Allow",
        "Action": [
          "iot:Receive"
        ],
        "Resource": [
          "arn:aws:iot:us-west-2:57EXAMPLE833:topic/test/dc/subtopic"
        ]
      }
  ```
+ 

**`iot:Subscribe`**  
Memberikan izin Klien AWS IoT Perangkat untuk berlangganan filter topik MQTT yang cocok dengan yang disebutkan dalam objek. `Resource`

  ```
      {
        "Effect": "Allow",
        "Action": [
          "iot:Subscribe"
        ],
        "Resource": [
          "arn:aws:iot:us-west-2:57EXAMPLE833:topicfilter/test/dc/subtopic"
        ]
      }
  ```

## Berlangganan satu topik pesan MQTT
<a name="iot-dc-testconn-subscribe-simple-topic"></a>

Prosedur ini menunjukkan bagaimana Klien AWS IoT Perangkat dapat berlangganan dan mencatat pesan MQTT.

Di jendela terminal di komputer host lokal Anda yang terhubung ke Raspberry Pi Anda, daftar konten **\$1/dc-configs/dc-pubsub-custom-config.json** atau buka file di editor teks untuk meninjau isinya. Temukan `samples` objek, yang seharusnya terlihat seperti ini.

```
  "samples": {
    "pub-sub": {
      "enabled": true,
      "publish-topic": "test/dc/pubtopic",
      "publish-file": "~/messages/sample-ws-message.json",
      "subscribe-topic": "test/dc/subtopic",
      "subscribe-file": "~/.aws-iot-device-client/log/pubsub_rx_msgs.log"
```

Perhatikan `subscribe-topic` nilainya adalah topik MQTT tempat Klien AWS IoT Perangkat akan berlangganan saat dijalankan. Klien AWS IoT Perangkat menulis muatan pesan yang diterimanya dari langganan ini ke file yang diberi nama dalam `subscribe-file` nilai.

**Untuk berlangganan topik pesan MQTT dari Device Client AWS IoT**

1. Pastikan jendela terminal dan jendela dengan klien pengujian MQTT terlihat saat Anda melakukan prosedur ini. **Selain itu, pastikan **klien pengujian MQTT** Anda masih berlangganan filter topik \$1.** Jika tidak, berlangganan filter **\$1** topik lagi.

1. Di jendela terminal, masukkan perintah ini untuk menjalankan AWS IoT Device Client menggunakan file konfigurasi yang dibuat di[Buat file konfigurasi](iot-dc-install-configure.md#iot-dc-install-dc-configure-step1).

   ```
   cd ~/aws-iot-device-client/build
   ./aws-iot-device-client --config-file ~/dc-configs/dc-pubsub-custom-config.json
   ```

   Di jendela terminal, Klien AWS IoT Perangkat menampilkan pesan informasi dan kesalahan apa pun yang terjadi saat dijalankan.

   Jika tidak ada kesalahan yang ditampilkan di jendela terminal, lanjutkan di AWS IoT konsol.

1. Di AWS IoT konsol, di **klien pengujian MQTT**, pilih tab **Publikasikan ke topik**.

1. Dalam **nama Topik**, masukkan **test/dc/subtopic**

1. Di **Payload pesan**, tinjau isi pesan.

1. Pilih **Publikasikan** untuk mempublikasikan pesan MQTT.

1. Di jendela terminal, perhatikan entri *pesan yang diterima* dari AWS IoT Device Client yang terlihat seperti ini.

   ```
   2021-11-10T16:02:20.890Z [DEBUG] {samples/PubSubFeature.cpp}: Message received on subscribe topic, size: 45 bytes
   ```

1. Setelah Anda melihat entri *pesan yang diterima* yang menunjukkan pesan diterima, masukkan **^C** (Ctrl-C) untuk menghentikan Klien Perangkat AWS IoT .

1. Masukkan perintah ini untuk melihat akhir file log pesan dan melihat pesan yang Anda terbitkan dari klien pengujian **MQTT**.

   ```
   tail ~/.aws-iot-device-client/log/pubsub_rx_msgs.log
   ```

Dengan melihat pesan di file log, Anda telah menunjukkan bahwa Klien AWS IoT Perangkat menerima pesan yang Anda terbitkan dari klien pengujian MQTT.

## Berlangganan beberapa topik pesan MQTT menggunakan karakter wildcard
<a name="iot-dc-testconn-subscribe-wild-topic"></a>

Prosedur ini menunjukkan bagaimana Klien AWS IoT Perangkat dapat berlangganan dan mencatat pesan MQTT menggunakan karakter wildcard. Untuk melakukan ini, Anda akan:

1. Perbarui filter topik yang digunakan Klien AWS IoT Perangkat untuk berlangganan topik MQTT.

1. Perbarui kebijakan yang digunakan oleh perangkat untuk mengizinkan langganan baru.

1. Jalankan AWS IoT Device Client dan publikasikan pesan dari konsol uji MQTT.

**Untuk membuat file konfigurasi untuk berlangganan beberapa topik pesan MQTT dengan menggunakan filter topik MQTT wildcard**

1. Di jendela terminal di komputer host lokal Anda yang terhubung ke Raspberry Pi Anda, buka **\$1/dc-configs/dc-pubsub-custom-config.json** untuk mengedit dan menemukan `samples` objek.

1. Di editor teks, cari `samples` objek dan perbarui `subscribe-topic` nilainya agar terlihat seperti ini. 

   ```
     "samples": {
       "pub-sub": {
         "enabled": true,
         "publish-topic": "test/dc/pubtopic",
         "publish-file": "~/messages/sample-ws-message.json",
         "subscribe-topic": "test/dc/#",
         "subscribe-file": "~/.aws-iot-device-client/log/pubsub_rx_msgs.log"
   ```

   `subscribe-topic`Nilai baru adalah [filter topik MQTT](topics.md#topicfilters) dengan karakter wild card MQTT di bagian akhir. Ini menjelaskan langganan ke semua topik MQTT yang dimulai dengan. `test/dc/` Klien AWS IoT Perangkat menulis muatan pesan yang diterimanya dari langganan ini ke file yang diberi nama. `subscribe-file`

1. Simpan file konfigurasi yang dimodifikasi sebagai**\$1/dc-configs/dc-pubsub-wild-config.json**, dan keluar dari editor.

**Untuk mengubah kebijakan yang digunakan oleh Raspberry Pi Anda untuk mengizinkan berlangganan dan menerima beberapa topik pesan MQTT**

1. Di jendela terminal di komputer host lokal Anda yang terhubung ke Raspberry Pi Anda, di editor teks favorit Anda, buka **\$1/policies/pubsub\$1test\$1thing\$1policy.json** untuk diedit, `iot::Subscribe` dan kemudian temukan pernyataan dan `iot::Receive` kebijakan dalam file.

1. Dalam pernyataan `iot::Subscribe` kebijakan, perbarui string di objek Resource untuk diganti `subtopic``*`, sehingga terlihat seperti ini.

   ```
       {
         "Effect": "Allow",
         "Action": [
           "iot:Subscribe"
         ],
         "Resource": [
           "arn:aws:iot:us-west-2:57EXAMPLE833:topicfilter/test/dc/*"
         ]
       }
   ```
**catatan**  
[Karakter wild card filter topik MQTT](topics.md#topicfilters) adalah `+` (tanda plus) dan `#` (tanda pound). Permintaan berlangganan dengan `#` di akhir berlangganan semua topik yang dimulai dengan string yang mendahului `#` karakter (misalnya, `test/dc/` dalam hal ini).   
Nilai sumber daya dalam pernyataan kebijakan yang mengotorisasi langganan ini, bagaimanapun, harus menggunakan `*` (tanda bintang) sebagai pengganti `#` (tanda pound) di filter topik ARN. Ini karena prosesor kebijakan menggunakan karakter wild card yang berbeda dari yang digunakan MQTT.  
Untuk informasi selengkapnya tentang penggunaan karakter wild card untuk topik dan filter topik dalam kebijakan, lihat[Menggunakan karakter wildcard di MQTT dan kebijakan AWS IoT Core](pub-sub-policy.md#pub-sub-policy-cert).

1. Dalam pernyataan `iot::Receive` kebijakan, perbarui string di objek Resource untuk diganti `subtopic``*`, sehingga terlihat seperti ini.

   ```
       {
         "Effect": "Allow",
         "Action": [
           "iot:Receive"
         ],
         "Resource": [
           "arn:aws:iot:us-west-2:57EXAMPLE833:topic/test/dc/*"
         ]
       }
   ```

1. Simpan dokumen kebijakan yang diperbarui sebagai**\$1/policies/pubsub\$1wild\$1test\$1thing\$1policy.json**, dan keluar dari editor.

1. Masukkan perintah ini untuk memperbarui kebijakan tutorial ini untuk menggunakan definisi sumber daya baru.

   ```
   aws iot create-policy-version \
   --set-as-default \
   --policy-name "PubSubTestThingPolicy" \
   --policy-document "file://~/policies/pubsub_wild_test_thing_policy.json"
   ```

   Jika perintah berhasil, ia mengembalikan respons seperti ini. Perhatikan bahwa `policyVersionId` sekarang`2`, menunjukkan ini adalah versi kedua dari kebijakan ini. 

   Jika Anda berhasil memperbarui kebijakan, Anda dapat melanjutkan ke prosedur berikutnya.

   ```
   {
       "policyArn": "arn:aws:iot:us-west-2:57EXAMPLE833:policy/PubSubTestThingPolicy",
       "policyDocument": "{\n  \"Version\": \"2012-10-17\",		 	 	 \n  \"Statement\": [\n    {\n      \"Effect\": \"Allow\",\n      \"Action\": [\n        \"iot:Connect\"\n      ],\n      \"Resource\": [\n        \"arn:aws:iot:us-west-2:57EXAMPLE833:client/PubSubTestThing\"\n      ]\n    },\n    {\n      \"Effect\": \"Allow\",\n      \"Action\": [\n        \"iot:Publish\"\n      ],\n      \"Resource\": [\n        \"arn:aws:iot:us-west-2:57EXAMPLE833:topic/test/dc/pubtopic\"\n      ]\n    },\n    {\n      \"Effect\": \"Allow\",\n      \"Action\": [\n        \"iot:Subscribe\"\n      ],\n      \"Resource\": [\n        \"arn:aws:iot:us-west-2:57EXAMPLE833:topicfilter/test/dc/*\"\n      ]\n    },\n    {\n      \"Effect\": \"Allow\",\n      \"Action\": [\n        \"iot:Receive\"\n      ],\n      \"Resource\": [\n        \"arn:aws:iot:us-west-2:57EXAMPLE833:topic/test/dc/*\"\n      ]\n    }\n  ]\n}\n",
       "policyVersionId": "2",
       "isDefaultVersion": true
   }
   ```

   Jika Anda mendapatkan kesalahan bahwa ada terlalu banyak versi kebijakan untuk menyimpan yang baru, masukkan perintah ini untuk mencantumkan versi kebijakan saat ini. Tinjau daftar yang dikembalikan perintah ini untuk menemukan versi kebijakan yang dapat Anda hapus.

   ```
   aws iot list-policy-versions --policy-name "PubSubTestThingPolicy"
   ```

   Masukkan perintah ini untuk menghapus versi yang tidak lagi Anda butuhkan. Perhatikan bahwa Anda tidak dapat menghapus versi kebijakan default. Versi kebijakan default adalah versi dengan `isDefaultVersion` nilai`true`.

   ```
   aws iot delete-policy-version \
   --policy-name "PubSubTestThingPolicy" \
   --policy-version-id policyId
   ```

   Setelah menghapus versi kebijakan, coba lagi langkah ini.

Dengan file konfigurasi dan kebijakan yang diperbarui, Anda siap mendemonstrasikan langganan wild card dengan AWS IoT Device Client.

**Untuk mendemonstrasikan bagaimana Klien AWS IoT Perangkat berlangganan dan menerima beberapa topik pesan MQTT**

1. Di **klien uji MQTT**, periksa langganan. Jika **klien pengujian MQTT** berlangganan ke dalam filter **\$1** topik, lanjutkan ke langkah berikutnya. Jika tidak, di **klien pengujian MQTT**, di **Berlangganan ke tab topik**, di **Filter topik**, masukkan **\$1** (karakter tanda pound), lalu pilih **Berlangganan untuk berlangganan**.

1. Di jendela terminal di komputer host lokal Anda yang terhubung ke Raspberry Pi Anda, masukkan perintah ini untuk memulai AWS IoT Device Client.

   ```
   cd ~/aws-iot-device-client/build
   ./aws-iot-device-client --config-file ~/dc-configs/dc-pubsub-wild-config.json
   ```

1. Saat menonton output AWS IoT Device Client di jendela terminal di komputer host lokal, kembali ke klien pengujian **MQTT**. Di tab **Publikasikan ke topik**, di **Nama topik**, masukkan**test/dc/subtopic**, lalu pilih **Publikasikan**. 

1. Di jendela terminal, konfirmasikan bahwa pesan diterima dengan mencari pesan seperti:

   ```
   2021-11-10T16:34:20.101Z [DEBUG] {samples/PubSubFeature.cpp}: Message received on subscribe topic, size: 76 bytes
   ```

1. Saat menonton output AWS IoT Device Client di jendela terminal komputer host lokal, kembali ke klien pengujian **MQTT**. Di tab **Publikasikan ke topik**, di **Nama topik**, masukkan**test/dc/subtopic2**, lalu pilih **Publikasikan**. 

1. Di jendela terminal, konfirmasikan bahwa pesan diterima dengan mencari pesan seperti:

   ```
   2021-11-10T16:34:32.078Z [DEBUG] {samples/PubSubFeature.cpp}: Message received on subscribe topic, size: 77 bytes
   ```

1. Setelah Anda melihat pesan yang mengonfirmasi kedua pesan diterima, masukkan **^C** (Ctrl-C) untuk menghentikan Klien Perangkat AWS IoT .

1. Masukkan perintah ini untuk melihat akhir file log pesan dan melihat pesan yang Anda terbitkan dari klien pengujian **MQTT**.

   ```
   tail -n 20 ~/.aws-iot-device-client/log/pubsub_rx_msgs.log
   ```
**catatan**  
File log hanya berisi muatan pesan. Topik pesan tidak direkam dalam file log pesan yang diterima.  
Anda mungkin juga melihat pesan yang diterbitkan oleh Klien AWS IoT Perangkat di log yang diterima. Ini karena filter topik wild card mencakup topik pesan itu dan, terkadang, permintaan berlangganan dapat diproses oleh broker pesan sebelum pesan yang dipublikasikan dikirim ke pelanggan.

Entri dalam file log menunjukkan bahwa pesan diterima. Anda dapat mengulangi prosedur ini menggunakan nama topik lain. Semua pesan yang memiliki nama topik yang dimulai dengan `test/dc/` harus diterima dan dicatat. Pesan dengan nama topik yang dimulai dengan teks lain diabaikan.

Setelah mendemonstrasikan bagaimana Klien AWS IoT Perangkat dapat mempublikasikan dan berlangganan pesan MQTT, lanjutkan ke. [Tutorial: Menunjukkan tindakan jarak jauh (pekerjaan) dengan AWS IoT Device Client](iot-dc-runjobs.md)

# Tutorial: Menunjukkan tindakan jarak jauh (pekerjaan) dengan AWS IoT Device Client
<a name="iot-dc-runjobs"></a>

Dalam tutorial ini, Anda akan mengonfigurasi dan menerapkan pekerjaan ke Raspberry Pi Anda untuk menunjukkan bagaimana Anda dapat mengirim operasi jarak jauh ke perangkat IoT Anda.

**Untuk memulai tutorial ini:**
+ Minta komputer host lokal Anda memiliki Raspberry Pi yang dikonfigurasi seperti yang digunakan [di bagian sebelumnya](iot-dc-testconn.md). 
+ Jika Anda belum menyelesaikan tutorial di bagian sebelumnya, Anda dapat mencoba tutorial ini dengan menggunakan Raspberry Pi dengan kartu microSD yang memiliki gambar yang Anda simpan setelah Anda menginstal AWS IoT Device Client. [(Opsional) Simpan gambar kartu microSD](iot-dc-install-download.md#iot-dc-install-dc-save)
+ Jika Anda telah menjalankan demo ini sebelumnya, tinjau [Langkah 2: Membersihkan demo Akun AWS setelah membangun Anda dengan AWS IoT Device Client](iot-dc-cleanup.md#iot-dc-cleanup-cloud) untuk menghapus semua AWS IoT sumber daya yang Anda buat di proses sebelumnya untuk menghindari kesalahan sumber daya duplikat.

Tutorial ini membutuhkan waktu sekitar 45 menit untuk menyelesaikannya.

**Setelah Anda selesai dengan topik ini:**
+ Anda akan mendemonstrasikan berbagai cara yang dapat digunakan perangkat IoT Anda AWS IoT Core untuk menjalankan operasi jarak jauh yang dikelola oleh perangkat IoT Anda. AWS IoT 

**Peralatan yang dibutuhkan:**
+ Lingkungan pengembangan dan pengujian lokal Anda yang Anda uji [di bagian sebelumnya](iot-dc-install-dc.md)
+ Raspberry Pi yang Anda uji [di bagian sebelumnya](iot-dc-install-dc.md)
+ Kartu memori microSD dari Raspberry Pi yang Anda uji di bagian [sebelumnya](iot-dc-install-dc.md)

**Topics**
+ [Siapkan Raspberry Pi untuk menjalankan pekerjaan](iot-dc-runjobs-prepare.md)
+ [Buat dan jalankan pekerjaan AWS IoT dengan AWS IoT Device Client](iot-dc-runjobs-prepare-define.md)

# Siapkan Raspberry Pi untuk menjalankan pekerjaan
<a name="iot-dc-runjobs-prepare"></a>

Prosedur di bagian ini menjelaskan bagaimana mempersiapkan Raspberry Pi Anda untuk menjalankan pekerjaan dengan menggunakan AWS IoT Device Client.

**catatan**  
Prosedur ini khusus perangkat. Jika Anda ingin melakukan prosedur di bagian ini dengan lebih dari satu perangkat secara bersamaan, setiap perangkat akan memerlukan kebijakannya sendiri dan sertifikat khusus perangkat dan nama benda yang unik. Untuk memberikan setiap perangkat sumber daya yang unik, lakukan prosedur ini satu kali untuk setiap perangkat sambil mengubah elemen khusus perangkat seperti yang dijelaskan dalam prosedur.

**Topics**
+ [Berikan Raspberry Pi Anda untuk mendemonstrasikan pekerjaan](#iot-dc-runjobs-prepare-provision)
+ [Konfigurasikan Klien AWS IoT Perangkat untuk menjalankan agen pekerjaan](#iot-dc-runjobs-prepare-config)

## Berikan Raspberry Pi Anda untuk mendemonstrasikan pekerjaan
<a name="iot-dc-runjobs-prepare-provision"></a>

Prosedur di bagian ini menyediakan Raspberry Pi Anda AWS IoT dengan membuat AWS IoT sumber daya dan sertifikat perangkat untuknya. 

**Topics**
+ [Membuat dan mengunduh file sertifikat perangkat untuk mendemonstrasikan AWS IoT pekerjaan](#iot-dc-runjobs-prepare-cert)
+ [Buat AWS IoT sumber daya untuk menunjukkan AWS IoT pekerjaan](#iot-dc-runjobs-prepare-iot)

### Membuat dan mengunduh file sertifikat perangkat untuk mendemonstrasikan AWS IoT pekerjaan
<a name="iot-dc-runjobs-prepare-cert"></a>

Prosedur ini membuat file sertifikat perangkat untuk demo ini.

Jika Anda menyiapkan lebih dari satu perangkat, prosedur ini harus dilakukan pada setiap perangkat.

**Untuk membuat dan mengunduh file sertifikat perangkat untuk Raspberry Pi Anda:**

Di jendela terminal di komputer host lokal Anda yang terhubung ke Raspberry Pi Anda, masukkan perintah ini.

1. Masukkan perintah berikut untuk membuat file sertifikat perangkat untuk perangkat Anda.

   ```
   aws iot create-keys-and-certificate \
   --set-as-active \
   --certificate-pem-outfile "~/certs/jobs/device.pem.crt" \
   --public-key-outfile "~/certs/jobs/public.pem.key" \
   --private-key-outfile "~/certs/jobs/private.pem.key"
   ```

   Perintah mengembalikan respon seperti berikut ini. Simpan `certificateArn` nilai untuk digunakan nanti.

   ```
   {
   "certificateArn": "arn:aws:iot:us-west-2:57EXAMPLE833:cert/76e7e4edb3e52f52334be2f387a06145b2aa4c7fcd810f3aea2d92abc227d269",
   "certificateId": "76e7e4edb3e52f5233EXAMPLE7a06145b2aa4c7fcd810f3aea2d92abc227d269",
   "certificatePem": "-----BEGIN CERTIFICATE-----\nMIIDWTCCAkGgAwIBAgI_SHORTENED_FOR_EXAMPLE_Lgn4jfgtS\n-----END CERTIFICATE-----\n",
   "keyPair": {
       "PublicKey": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BA_SHORTENED_FOR_EXAMPLE_ImwIDAQAB\n-----END PUBLIC KEY-----\n",
       "PrivateKey": "-----BEGIN RSA PRIVATE KEY-----\nMIIEowIBAAKCAQE_SHORTENED_FOR_EXAMPLE_T9RoDiukY\n-----END RSA PRIVATE KEY-----\n"
   }
   }
   ```

1. Masukkan perintah berikut untuk mengatur izin pada direktori sertifikat dan file-file-nya.

   ```
   chmod 700 ~/certs/jobs
   chmod 644 ~/certs/jobs/*
   chmod 600 ~/certs/jobs/private.pem.key
   ```

1. Jalankan perintah ini untuk meninjau izin pada direktori dan file sertifikat Anda.

   ```
   ls -l ~/certs/jobs
   ```

   Output dari perintah harus sama dengan apa yang Anda lihat di sini, kecuali tanggal dan waktu file akan berbeda.

   ```
   -rw-r--r-- 1 pi pi 1220 Oct 28 13:02 device.pem.crt
   -rw------- 1 pi pi 1675 Oct 28 13:02 private.pem.key
   -rw-r--r-- 1 pi pi  451 Oct 28 13:02 public.pem.key
   ```

Setelah Anda mengunduh file sertifikat perangkat ke Raspberry Pi Anda, Anda siap untuk melanjutkan[Berikan Raspberry Pi Anda untuk mendemonstrasikan pekerjaan](#iot-dc-runjobs-prepare-provision).

### Buat AWS IoT sumber daya untuk menunjukkan AWS IoT pekerjaan
<a name="iot-dc-runjobs-prepare-iot"></a>

Buat AWS IoT sumber daya untuk perangkat ini.

Jika Anda menyiapkan lebih dari satu perangkat, prosedur ini harus dilakukan untuk setiap perangkat.



**Untuk menyediakan perangkat Anda di AWS IoT:**

Di jendela terminal di komputer host lokal Anda yang terhubung ke Raspberry Pi Anda:

1. Masukkan perintah berikut untuk mendapatkan alamat titik akhir data perangkat untuk Anda Akun AWS.

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

   Nilai endpoint tidak berubah sejak terakhir kali Anda menjalankan perintah ini. Menjalankan perintah lagi di sini memudahkan untuk menemukan dan menempelkan nilai endpoint data ke dalam file konfigurasi yang digunakan dalam tutorial ini.

   **describe-endpoint**Perintah mengembalikan respon seperti berikut ini. Catat `endpointAddress` nilai untuk digunakan nanti.

   ```
   {
   "endpointAddress": "a3qjEXAMPLEffp-ats.iot.us-west-2.amazonaws.com"
   }
   ```

1. Ganti *uniqueThingName* dengan nama unik untuk perangkat Anda. Jika Anda ingin melakukan tutorial ini dengan beberapa perangkat, berikan nama masing-masing perangkat. Misalnya,**TestDevice01**,**TestDevice02**, dan sebagainya.

   Masukkan perintah ini untuk membuat sumber daya AWS IoT hal baru untuk Raspberry Pi Anda.

   ```
   aws iot create-thing --thing-name "uniqueThingName"
   ```

   Karena sumber daya AWS IoT benda adalah representasi *virtual* perangkat Anda di cloud, kami dapat membuat beberapa sumber daya AWS IoT untuk digunakan untuk tujuan yang berbeda. Mereka semua dapat digunakan oleh perangkat IoT fisik yang sama untuk mewakili berbagai aspek perangkat.
**catatan**  
Jika Anda ingin mengamankan kebijakan untuk beberapa perangkat, Anda dapat menggunakan `${iot:Thing.ThingName}` alih-alih nama benda statis`uniqueThingName`.

   Tutorial ini hanya akan menggunakan sumber daya satu hal pada satu waktu per perangkat. Dengan cara ini, dalam tutorial ini, mereka mewakili demo yang berbeda sehingga setelah Anda membuat AWS IoT sumber daya untuk demo, Anda dapat kembali dan mengulangi demo menggunakan sumber daya yang Anda buat khusus untuk masing-masing.

   Jika AWS IoT sumber daya Anda dibuat, perintah mengembalikan respons seperti ini. Catat `thingArn` nilai untuk digunakan nanti saat Anda membuat pekerjaan untuk dijalankan di perangkat ini.

   ```
   {
   "thingName": "uniqueThingName",
   "thingArn": "arn:aws:iot:us-west-2:57EXAMPLE833:thing/uniqueThingName",
   "thingId": "8ea78707-32c3-4f8a-9232-14bEXAMPLEfd"
   }
   ```

1. Di jendela terminal:

   1. Buka editor teks, seperti`nano`.

   1. Salin dokumen JSON ini dan tempelkan ke editor teks terbuka Anda.  
****  

      ```
      {
          "Version":"2012-10-17",		 	 	 
          "Statement": [
              {
                  "Effect": "Allow",
                  "Action": [
                      "iot:Connect"
                  ],
                  "Resource": [
                      "arn:aws:iot:us-west-2:123456789012:client/uniqueThingName"
                  ]
              },
              {
                  "Effect": "Allow",
                  "Action": [
                      "iot:Publish"
                  ],
                  "Resource": [
                      "arn:aws:iot:us-west-2:123456789012:topic/test/dc/pubtopic",
                      "arn:aws:iot:us-west-2:123456789012:topic/$aws/events/job/*",
                      "arn:aws:iot:us-west-2:123456789012:topic/$aws/events/jobExecution/*",
                      "arn:aws:iot:us-west-2:123456789012:topic/$aws/things/uniqueThingName/jobs/*"
                  ]
              },
              {
                  "Effect": "Allow",
                  "Action": [
                      "iot:Subscribe"
                  ],
                  "Resource": [
                      "arn:aws:iot:us-west-2:123456789012:topicfilter/test/dc/subtopic",
                      "arn:aws:iot:us-west-2:123456789012:topic/$aws/events/jobExecution/*",
                      "arn:aws:iot:us-west-2:123456789012:topicfilter/$aws/things/uniqueThingName/jobs/*"
                  ]
              },
              {
                  "Effect": "Allow",
                  "Action": [
                      "iot:Receive"
                  ],
                  "Resource": [
                      "arn:aws:iot:us-west-2:123456789012:topic/test/dc/subtopic",
                      "arn:aws:iot:us-west-2:123456789012:topic/$aws/things/uniqueThingName/jobs/*"
                  ]
              },
              {
                  "Effect": "Allow",
                  "Action": [
                      "iot:DescribeJobExecution",
                      "iot:GetPendingJobExecutions",
                      "iot:StartNextPendingJobExecution",
                      "iot:UpdateJobExecution"
                  ],
                  "Resource": [
                      "arn:aws:iot:us-west-2:123456789012:topic/$aws/things/uniqueThingName"
                  ]
              }
          ]
      }
      ```

   1. Di editor, di `Resource` bagian setiap pernyataan kebijakan, ganti *us-west-2:57EXAMPLE833* dengan Anda Wilayah AWS, karakter titik dua (:), dan Akun AWS nomor 12 digit Anda.

   1. Di editor, di setiap pernyataan kebijakan, ganti *uniqueThingName* dengan nama benda yang Anda berikan sumber daya ini.

   1. Simpan file di editor teks Anda sebagai**\$1/policies/jobs\$1test\$1thing\$1policy.json**.

      Jika Anda menjalankan prosedur ini untuk beberapa perangkat, simpan file ke nama file ini di setiap perangkat.

1. Ganti *uniqueThingName* dengan nama benda untuk perangkat, lalu jalankan perintah ini untuk membuat AWS IoT kebijakan yang disesuaikan untuk perangkat tersebut.

   ```
   aws iot create-policy \
   --policy-name "JobTestPolicyForuniqueThingName" \
   --policy-document "file://~/policies/jobs_test_thing_policy.json"
   ```

   Jika kebijakan dibuat, perintah akan menampilkan respons seperti ini.  
****  

   ```
   {
       "policyName": "JobTestPolicyForuniqueThingName",
       "policyArn": "arn:aws:iot:us-west-2:57EXAMPLE833:policy/JobTestPolicyForuniqueThingName",
       "policyDocument": "{\n\"Version\": \"2012-10-17\",\n\"Statement\": [\n{\n\"Effect\": \"Allow\",\n\"Action\": [\n\"iot:Connect\"\n],\n\"Resource\": [\n\"arn:aws:iot:us-west-2:57EXAMPLE833:client/PubSubTestThing\"\n]\n},\n{\n\"Effect\": \"Allow\",\n\"Action\": [\n\"iot:Publish\"\n],\n\"Resource\": [\n\"arn:aws:iot:us-west-2:57EXAMPLE833:topic/test/dc/pubtopic\"\n]\n},\n{\n\"Effect\": \"Allow\",\n\"Action\": [\n\"iot:Subscribe\"\n],\n\"Resource\": [\n\"arn:aws:iot:us-west-2:57EXAMPLE833:topicfilter/test/dc/subtopic\"\n]\n},\n{\n\"Effect\": \"Allow\",\n\"Action\": [\n\"iot:Receive\"\n],\n\"Resource\": [\n\"arn:aws:iot:us-west-2:57EXAMPLE833:topic/test/dc/*\"\n]\n}\n]\n}\n",
       "policyVersionId": "1"
   }
   ```

1. Ganti *uniqueThingName* dengan nama benda untuk perangkat dan `certificateArn` dengan `certificateArn` nilai yang Anda simpan sebelumnya di bagian ini untuk perangkat ini, lalu jalankan perintah ini untuk melampirkan kebijakan ke sertifikat perangkat. 

   ```
   aws iot attach-policy \
   --policy-name "JobTestPolicyForuniqueThingName" \
   --target "certificateArn"
   ```

   Jika berhasil, perintah ini tidak mengembalikan apa pun.

1.  Ganti *uniqueThingName* dengan nama benda untuk perangkat, ganti `certificateArn` dengan `certificateArn` nilai yang Anda simpan sebelumnya di bagian ini, lalu jalankan perintah ini untuk melampirkan sertifikat perangkat ke sumber daya AWS IoT benda.

   ```
   aws iot attach-thing-principal \
   --thing-name "uniqueThingName" \
   --principal "certificateArn"
   ```

   Jika berhasil, perintah ini tidak mengembalikan apa pun.

Setelah Anda berhasil menyediakan Raspberry Pi Anda, Anda siap untuk mengulangi bagian ini untuk Raspberry Pi lain dalam pengujian Anda atau, jika semua perangkat telah disediakan, lanjutkan ke. [Konfigurasikan Klien AWS IoT Perangkat untuk menjalankan agen pekerjaan](#iot-dc-runjobs-prepare-config)

## Konfigurasikan Klien AWS IoT Perangkat untuk menjalankan agen pekerjaan
<a name="iot-dc-runjobs-prepare-config"></a>

Prosedur ini membuat file konfigurasi untuk AWS IoT Device Client untuk menjalankan agen jobs:.

Catatan: jika Anda menyiapkan lebih dari satu perangkat, prosedur ini harus dilakukan pada setiap perangkat.

**Untuk membuat file konfigurasi untuk menguji AWS IoT Device Client:**

1. Di jendela terminal di komputer host lokal Anda yang terhubung ke Raspberry Pi Anda:

   1. Buka editor teks, seperti`nano`.

   1. Salin dokumen JSON ini dan tempelkan ke editor teks terbuka Anda.

      ```
      {
        "endpoint": "a3qEXAMPLEaffp-ats.iot.us-west-2.amazonaws.com",
        "cert": "~/certs/jobs/device.pem.crt",
        "key": "~/certs/jobs/private.pem.key",
        "root-ca": "~/certs/AmazonRootCA1.pem",
        "thing-name": "uniqueThingName",
        "logging": {
          "enable-sdk-logging": true,
          "level": "DEBUG",
          "type": "STDOUT",
          "file": ""
        },
        "jobs": {
          "enabled": true,
          "handler-directory": ""
        },
        "tunneling": {
          "enabled": false
        },
        "device-defender": {
          "enabled": false,
          "interval": 300
        },
        "fleet-provisioning": {
          "enabled": false,
          "template-name": "",
          "template-parameters": "",
          "csr-file": "",
          "device-key": ""
        },
        "samples": {
          "pub-sub": {
            "enabled": false,
            "publish-topic": "",
            "publish-file": "",
            "subscribe-topic": "",
            "subscribe-file": ""
          }
        },
        "config-shadow": {
          "enabled": false
        },
        "sample-shadow": {
          "enabled": false,
          "shadow-name": "",
          "shadow-input-file": "",
          "shadow-output-file": ""
        }
      }
      ```

   1. Ganti *endpoint* nilai dengan nilai titik akhir data perangkat untuk Akun AWS yang Anda temukan. [Menyediakan perangkat Anda di AWS IoT Core](iot-dc-install-provision.md#iot-dc-install-dc-provision)

   1. Ganti *uniqueThingName* dengan nama benda yang Anda gunakan untuk perangkat ini.

   1. Simpan file di editor teks Anda sebagai**\$1/dc-configs/dc-jobs-config.json**.

1. Jalankan perintah ini untuk mengatur izin file dari file konfigurasi baru.

   ```
   chmod 644 ~/dc-configs/dc-jobs-config.json
   ```

Anda tidak akan menggunakan **klien pengujian MQTT untuk tes** ini. Meskipun perangkat akan bertukar pesan MQTT terkait pekerjaan dengan AWS IoT, pesan kemajuan pekerjaan hanya dipertukarkan dengan perangkat yang menjalankan pekerjaan. Karena pesan kemajuan pekerjaan hanya dipertukarkan dengan perangkat yang menjalankan pekerjaan, Anda tidak dapat berlangganan pesan tersebut dari perangkat lain, seperti AWS IoT konsol.

Setelah Anda menyimpan file konfigurasi, Anda siap untuk [Buat dan jalankan pekerjaan AWS IoT dengan AWS IoT Device Client](iot-dc-runjobs-prepare-define.md) melanjutkan.

# Buat dan jalankan pekerjaan AWS IoT dengan AWS IoT Device Client
<a name="iot-dc-runjobs-prepare-define"></a>

Prosedur di bagian ini membuat dokumen pekerjaan dan sumber daya AWS IoT pekerjaan. Setelah Anda membuat sumber daya pekerjaan, AWS IoT kirimkan dokumen pekerjaan ke target pekerjaan yang ditentukan di mana agen pekerjaan menerapkan dokumen pekerjaan ke perangkat atau klien.

**Topics**
+ [Membuat dan menyimpan dokumen pekerjaan untuk pekerjaan IoT](#iot-dc-runjobs-prepare-define-jobdoc)
+ [Jalankan pekerjaan AWS IoT untuk satu perangkat IoT](#iot-dc-runjobs-prepare-define-job)

## Membuat dan menyimpan dokumen pekerjaan untuk pekerjaan IoT
<a name="iot-dc-runjobs-prepare-define-jobdoc"></a>

Prosedur ini membuat dokumen pekerjaan sederhana untuk disertakan dalam sumber daya AWS IoT pekerjaan. Dokumen pekerjaan ini menampilkan “Hello world\$1” pada target pekerjaan.

**Untuk membuat dan menyimpan dokumen pekerjaan:**

1. Pilih bucket Amazon S3 tempat Anda akan menyimpan dokumen pekerjaan Anda. Jika Anda tidak memiliki bucket Amazon S3 yang ada untuk digunakan untuk ini, Anda harus membuatnya. Untuk informasi tentang cara membuat bucket Amazon S3, lihat topik di [Memulai Amazon S3](https://docs.aws.amazon.com//AmazonS3/latest/userguide/GetStartedWithS3.html).

1. Buat dan simpan dokumen pekerjaan untuk pekerjaan ini

   1. Di komputer host lokal Anda, buka editor teks.

   1. Salin dan tempel teks ini ke editor.

      ```
      {
          "operation": "echo",
          "args": ["Hello world!"]
      }
      ```

   1. Di komputer host lokal, simpan konten editor ke file bernama**hello-world-job.json**.

   1. Konfirmasikan file telah disimpan dengan benar. Beberapa editor teks secara otomatis menambahkan `.txt` ke nama file ketika mereka menyimpan file teks. Jika editor Anda ditambahkan `.txt` ke nama file, perbaiki nama file sebelum melanjutkan.

1. Ganti *path\$1to\$1file* dengan path ke**hello-world-job.json**, jika tidak ada di direktori Anda saat ini, ganti *s3\$1bucket\$1name* dengan jalur bucket Amazon S3 ke bucket yang Anda pilih, lalu jalankan perintah ini untuk memasukkan dokumen pekerjaan Anda ke dalam bucket Amazon S3.

   ```
   aws s3api put-object \
   --key hello-world-job.json \
   --body path_to_file/hello-world-job.json --bucket s3_bucket_name
   ```

   URL dokumen pekerjaan yang mengidentifikasi dokumen pekerjaan yang Anda simpan di Amazon S3 ditentukan dengan mengganti *AWS\$1region* dan *s3\$1bucket\$1name* di URL berikut. Rekam URL yang dihasilkan untuk digunakan nanti sebagai *job\$1document\$1path*

   ```
   https://s3_bucket_name.s3.AWS_Region.amazonaws.com/hello-world-job.json
   ```
**catatan**  
AWS keamanan mencegah Anda untuk dapat membuka URL ini di luar Anda Akun AWS, misalnya dengan menggunakan browser. URL digunakan oleh mesin AWS IoT pekerjaan, yang memiliki akses ke file, secara default. Dalam lingkungan produksi, Anda harus memastikan bahwa AWS IoT layanan Anda memiliki izin untuk mengakses dokumen pekerjaan yang disimpan di Amazon S3.

Setelah Anda menyimpan URL dokumen pekerjaan, lanjutkan ke[Jalankan pekerjaan AWS IoT untuk satu perangkat IoT](#iot-dc-runjobs-prepare-define-job).

## Jalankan pekerjaan AWS IoT untuk satu perangkat IoT
<a name="iot-dc-runjobs-prepare-define-job"></a>

Prosedur di bagian ini memulai AWS IoT Device Client di Raspberry Pi Anda untuk menjalankan agen pekerjaan di perangkat untuk menunggu pekerjaan berjalan. Ini juga menciptakan sumber daya pekerjaan di AWS IoT, yang akan mengirim pekerjaan ke dan berjalan di perangkat IoT Anda.

**catatan**  
Prosedur ini menjalankan pekerjaan hanya pada satu perangkat.

**Untuk memulai agen pekerjaan di Raspberry Pi Anda:**

1. Di jendela terminal di komputer host lokal Anda yang terhubung ke Raspberry Pi Anda, jalankan perintah ini untuk memulai AWS IoT Device Client.

   ```
   cd ~/aws-iot-device-client/build
   ./aws-iot-device-client --config-file ~/dc-configs/dc-jobs-config.json
   ```

1. Di jendela terminal, konfirmasikan bahwa AWS IoT Device Client dan menampilkan pesan-pesan ini

   ```
   2021-11-15T18:45:56.708Z [INFO]  {Main.cpp}: Jobs is enabled
                         .
                         .
                         .
   2021-11-15T18:45:56.708Z [INFO]  {Main.cpp}: Client base has been notified that Jobs has started
   2021-11-15T18:45:56.708Z [INFO]  {JobsFeature.cpp}: Running Jobs!
   2021-11-15T18:45:56.708Z [DEBUG] {JobsFeature.cpp}: Attempting to subscribe to startNextPendingJobExecution accepted and rejected
   2021-11-15T18:45:56.708Z [DEBUG] {JobsFeature.cpp}: Attempting to subscribe to nextJobChanged events
   2021-11-15T18:45:56.708Z [DEBUG] {JobsFeature.cpp}: Attempting to subscribe to updateJobExecutionStatusAccepted for jobId +
   2021-11-15T18:45:56.738Z [DEBUG] {JobsFeature.cpp}: Ack received for SubscribeToUpdateJobExecutionAccepted with code {0}
   2021-11-15T18:45:56.739Z [DEBUG] {JobsFeature.cpp}: Attempting to subscribe to updateJobExecutionStatusRejected for jobId +
   2021-11-15T18:45:56.753Z [DEBUG] {JobsFeature.cpp}: Ack received for SubscribeToNextJobChanged with code {0}
   2021-11-15T18:45:56.760Z [DEBUG] {JobsFeature.cpp}: Ack received for SubscribeToStartNextJobRejected with code {0}
   2021-11-15T18:45:56.776Z [DEBUG] {JobsFeature.cpp}: Ack received for SubscribeToStartNextJobAccepted with code {0}
   2021-11-15T18:45:56.776Z [DEBUG] {JobsFeature.cpp}: Ack received for SubscribeToUpdateJobExecutionRejected with code {0}
   2021-11-15T18:45:56.777Z [DEBUG] {JobsFeature.cpp}: Publishing startNextPendingJobExecutionRequest
   2021-11-15T18:45:56.785Z [DEBUG] {JobsFeature.cpp}: Ack received for StartNextPendingJobPub with code {0}
   2021-11-15T18:45:56.785Z [INFO]  {JobsFeature.cpp}: No pending jobs are scheduled, waiting for the next incoming job
   ```

1. Di jendela terminal, setelah Anda melihat pesan ini, lanjutkan ke prosedur berikutnya dan buat sumber daya pekerjaan. Perhatikan bahwa itu mungkin bukan entri terakhir dalam daftar.

   ```
   2021-11-15T18:45:56.785Z [INFO]  {JobsFeature.cpp}: No pending jobs are scheduled, waiting for the next incoming job
   ```

**Untuk membuat sumber daya AWS IoT pekerjaan**

1. Di komputer host lokal Anda:

   1. Ganti *job\$1document\$1url* dengan URL dokumen pekerjaan dari[Membuat dan menyimpan dokumen pekerjaan untuk pekerjaan IoT](#iot-dc-runjobs-prepare-define-jobdoc).

   1. Ganti *thing\$1arn* dengan ARN dari sumber daya benda yang Anda buat untuk perangkat Anda dan kemudian jalankan perintah ini.

      ```
      aws iot create-job \
      --job-id hello-world-job-1 \
      --document-source "job_document_url" \
      --targets "thing_arn" \
      --target-selection SNAPSHOT
      ```

      Jika berhasil, perintah mengembalikan hasil seperti ini.

      ```
      {
        "jobArn": "arn:aws:iot:us-west-2:57EXAMPLE833:job/hello-world-job-1",
        "jobId": "hello-world-job-1"
      }
      ```

1. Di jendela terminal, Anda akan melihat output dari AWS IoT Device Client seperti ini.

   ```
   2021-11-15T18:02:26.688Z [INFO]  {JobsFeature.cpp}: No pending jobs are scheduled, waiting for the next incoming job
   2021-11-15T18:10:24.890Z [DEBUG] {JobsFeature.cpp}: Job ids differ
   2021-11-15T18:10:24.890Z [INFO]  {JobsFeature.cpp}: Executing job: hello-world-job-1
   2021-11-15T18:10:24.890Z [DEBUG] {JobsFeature.cpp}: Attempting to update job execution status!
   2021-11-15T18:10:24.890Z [DEBUG] {JobsFeature.cpp}: Not including stdout with the status details
   2021-11-15T18:10:24.890Z [DEBUG] {JobsFeature.cpp}: Not including stderr with the status details
   2021-11-15T18:10:24.890Z [DEBUG] {JobsFeature.cpp}: Assuming executable is in PATH
   2021-11-15T18:10:24.890Z [INFO]  {JobsFeature.cpp}: About to execute: echo Hello world!
   2021-11-15T18:10:24.890Z [DEBUG] {Retry.cpp}: Retryable function starting, it will retry until success
   2021-11-15T18:10:24.890Z [DEBUG] {JobsFeature.cpp}: Created EphermalPromise for ClientToken 3TEWba9Xj6 in the updateJobExecution promises map
   2021-11-15T18:10:24.890Z [DEBUG] {JobEngine.cpp}: Child process now running
   2021-11-15T18:10:24.890Z [DEBUG] {JobEngine.cpp}: Child process about to call execvp
   2021-11-15T18:10:24.890Z [DEBUG] {JobEngine.cpp}: Parent process now running, child PID is 16737
   2021-11-15T18:10:24.891Z [DEBUG] {16737}: Hello world!
   2021-11-15T18:10:24.891Z [DEBUG] {JobEngine.cpp}: JobEngine finished waiting for child process, returning 0
   2021-11-15T18:10:24.891Z [INFO]  {JobsFeature.cpp}: Job exited with status: 0
   2021-11-15T18:10:24.891Z [INFO]  {JobsFeature.cpp}: Job executed successfully!
   2021-11-15T18:10:24.891Z [DEBUG] {JobsFeature.cpp}: Attempting to update job execution status!
   2021-11-15T18:10:24.891Z [DEBUG] {JobsFeature.cpp}: Not including stdout with the status details
   2021-11-15T18:10:24.891Z [DEBUG] {JobsFeature.cpp}: Not including stderr with the status details
   2021-11-15T18:10:24.892Z [DEBUG] {Retry.cpp}: Retryable function starting, it will retry until success
   2021-11-15T18:10:24.892Z [DEBUG] {JobsFeature.cpp}: Created EphermalPromise for ClientToken GmQ0HTzWGg in the updateJobExecution promises map
   2021-11-15T18:10:24.905Z [DEBUG] {JobsFeature.cpp}: Ack received for PublishUpdateJobExecutionStatus with code {0}
   2021-11-15T18:10:24.905Z [DEBUG] {JobsFeature.cpp}: Removing ClientToken 3TEWba9Xj6 from the updateJobExecution promises map
   2021-11-15T18:10:24.905Z [DEBUG] {JobsFeature.cpp}: Success response after UpdateJobExecution for job hello-world-job-1
   2021-11-15T18:10:24.917Z [DEBUG] {JobsFeature.cpp}: Ack received for PublishUpdateJobExecutionStatus with code {0}
   2021-11-15T18:10:24.918Z [DEBUG] {JobsFeature.cpp}: Removing ClientToken GmQ0HTzWGg from the updateJobExecution promises map
   2021-11-15T18:10:24.918Z [DEBUG] {JobsFeature.cpp}: Success response after UpdateJobExecution for job hello-world-job-1
   2021-11-15T18:10:25.861Z [INFO]  {JobsFeature.cpp}: No pending jobs are scheduled, waiting for the next incoming job
   ```

1. Saat Klien AWS IoT Perangkat sedang berjalan dan menunggu pekerjaan, Anda dapat mengirimkan pekerjaan lain dengan mengubah `job-id` nilai dan menjalankan kembali **create-job** dari Langkah 1.

Ketika Anda selesai menjalankan pekerjaan, di jendela terminal, masukkan ^C (Control-c) untuk menghentikan AWS IoT Device Client.

# Tutorial: Membersihkan setelah menjalankan tutorial AWS IoT Device Client
<a name="iot-dc-cleanup"></a>

Prosedur dalam tutorial ini memandu Anda menghapus file dan sumber daya yang Anda buat saat menyelesaikan tutorial di jalur pembelajaran ini.

**Topics**
+ [Langkah 1: Membersihkan perangkat Anda setelah membangun demo dengan AWS IoT Device Client](#iot-dc-cleanup-devices)
+ [Langkah 2: Membersihkan demo Akun AWS setelah membangun Anda dengan AWS IoT Device Client](#iot-dc-cleanup-cloud)

## Langkah 1: Membersihkan perangkat Anda setelah membangun demo dengan AWS IoT Device Client
<a name="iot-dc-cleanup-devices"></a>

Tutorial ini menjelaskan dua opsi untuk cara membersihkan kartu microSD setelah Anda membuat demo di jalur pembelajaran ini. Pilih opsi yang menyediakan tingkat keamanan yang Anda butuhkan.

Perhatikan bahwa membersihkan kartu microSD perangkat tidak menghilangkan AWS IoT sumber daya apa pun yang Anda buat. Untuk membersihkan AWS IoT sumber daya setelah Anda membersihkan kartu microSD perangkat, Anda harus meninjau tutorialnya. [Langkah 2: Membersihkan demo Akun AWS setelah membangun Anda dengan AWS IoT Device Client](#iot-dc-cleanup-cloud)

### Opsi 1: Membersihkan dengan menulis ulang kartu microSD
<a name="iot-dc-cleanup-devices-flash"></a>

Cara termudah dan paling menyeluruh untuk membersihkan kartu microSD setelah menyelesaikan tutorial di jalur pembelajaran ini adalah dengan menimpa kartu microSD dengan file gambar tersimpan yang Anda buat saat menyiapkan perangkat Anda pertama kali.

Prosedur ini menggunakan komputer host lokal untuk menulis gambar kartu microSD yang disimpan ke kartu microSD.

**catatan**  
Jika perangkat Anda tidak menggunakan media penyimpanan yang dapat dilepas untuk sistem operasinya, lihat prosedur untuk perangkat tersebut.

**Untuk menulis gambar baru ke kartu microSD**

1. Di komputer host lokal Anda, cari gambar kartu microSD yang disimpan yang ingin Anda tulis ke kartu microSD Anda. 

1. Masukkan kartu microSD Anda ke komputer host lokal.

1. Menggunakan alat pencitraan kartu SD, tulis file gambar yang dipilih ke kartu microSD.

1. Setelah menulis gambar Raspberry Pi OS ke kartu microSD, keluarkan kartu microSD dan lepaskan dengan aman dari komputer host lokal.

Kartu microSD Anda siap digunakan.

### Opsi 2: Membersihkan dengan menghapus direktori pengguna
<a name="iot-dc-cleanup-devices-dirs"></a>

Untuk membersihkan kartu microSD setelah menyelesaikan tutorial tanpa menulis ulang gambar kartu microSD, Anda dapat menghapus direktori pengguna satu per satu. Ini tidak selengkap menulis ulang kartu microSD dari gambar yang disimpan karena tidak menghapus file sistem apa pun yang mungkin telah diinstal.

Jika menghapus direktori pengguna cukup menyeluruh untuk kebutuhan Anda, Anda dapat mengikuti prosedur ini.

**Untuk menghapus direktori pengguna jalur pembelajaran ini dari perangkat Anda**

1. Jalankan perintah ini untuk menghapus direktori pengguna, subdirektori, dan semua file mereka yang dibuat di jalur pembelajaran ini, di jendela terminal yang terhubung ke perangkat Anda.
**catatan**  
Setelah Anda menghapus direktori dan file ini, Anda tidak akan dapat menjalankan demo tanpa menyelesaikan tutorial lagi.

   ```
   rm -Rf ~/dc-configs
   rm -Rf ~/policies
   rm -Rf ~/messages
   rm -Rf ~/certs
   rm -Rf ~/.aws-iot-device-client
   ```

1. Jalankan perintah ini untuk menghapus direktori dan file sumber aplikasi, di jendela terminal yang terhubung ke perangkat Anda.
**catatan**  
Perintah ini tidak menghapus program apa pun. Mereka hanya menghapus file sumber yang digunakan untuk membangun dan menginstalnya. Setelah Anda menghapus file-file ini, AWS CLI dan Klien AWS IoT Perangkat mungkin tidak berfungsi.

   ```
   rm -Rf ~/aws-cli
   rm -Rf ~/aws
   rm -Rf ~/aws-iot-device-client
   ```

## Langkah 2: Membersihkan demo Akun AWS setelah membangun Anda dengan AWS IoT Device Client
<a name="iot-dc-cleanup-cloud"></a>

Prosedur ini membantu Anda mengidentifikasi dan menghapus AWS sumber daya yang Anda buat saat menyelesaikan tutorial di jalur pembelajaran ini.

### Bersihkan AWS IoT sumber daya
<a name="iot-dc-cleanup-cloud-iot"></a>

Prosedur ini membantu Anda mengidentifikasi dan menghapus AWS IoT sumber daya yang Anda buat saat menyelesaikan tutorial di jalur pembelajaran ini.


**AWS IoT sumber daya yang dibuat di jalur pembelajaran ini**  

| Tutorial | Sumber daya benda | Sumber daya kebijakan | 
| --- | --- | --- | 
|  [Tutorial: Menginstal dan mengkonfigurasi AWS IoT Device Client](iot-dc-install-dc.md)  |  **DevCliTestThing**  | DevCliTestThingPolicy | 
|  [Tutorial: Menunjukkan komunikasi pesan MQTT dengan Device Client AWS IoT](iot-dc-testconn.md)  |  **PubSubTestThing**  | PubSubTestThingPolicy | 
|  [Tutorial: Menunjukkan tindakan jarak jauh (pekerjaan) dengan AWS IoT Device Client](iot-dc-runjobs.md)  | ditentukan pengguna (mungkin ada lebih dari satu) |  *ditentukan pengguna* (mungkin ada lebih dari satu)  | 

**Untuk menghapus AWS IoT sumber daya, ikuti prosedur ini untuk setiap sumber daya yang Anda buat**

1. Ganti `thing_name` dengan nama sumber daya benda yang ingin Anda hapus, lalu jalankan perintah ini untuk mencantumkan sertifikat yang dilampirkan ke sumber daya benda, dari komputer host lokal.

   ```
   aws iot list-thing-principals --thing-name thing_name
   ```

   Perintah ini mengembalikan respons seperti ini yang mencantumkan sertifikat yang dilampirkan`thing_name`. Dalam kebanyakan kasus, hanya akan ada satu sertifikat dalam daftar.

   ```
   {
       "principals": [
           "arn:aws:iot:us-west-2:57EXAMPLE833:cert/23853eea3cf0edc7f8a69c74abeafa27b2b52823cab5b3e156295e94b26ae8ac"
       ]
   }
   ```

1. Untuk setiap sertifikat yang tercantum oleh perintah sebelumnya:

   1. Ganti `certificate_ID` dengan ID sertifikat dari perintah sebelumnya. ID sertifikat adalah karakter alfanumerik yang mengikuti ARN `cert/` yang dikembalikan oleh perintah sebelumnya. Kemudian jalankan perintah ini untuk menonaktifkan sertifikat.

      ```
      aws iot update-certificate --new-status INACTIVE --certificate-id certificate_ID
      ```

      Jika berhasil, perintah ini tidak mengembalikan apa pun.

   1. Ganti `certificate_ARN` dengan sertifikat ARN dari daftar sertifikat yang dikembalikan sebelumnya, lalu jalankan perintah ini untuk mencantumkan kebijakan yang dilampirkan pada sertifikat ini.

      ```
      aws iot list-attached-policies --target certificate_ARN
      ```

      Perintah ini mengembalikan respons seperti ini yang mencantumkan kebijakan yang dilampirkan pada sertifikat. Dalam kebanyakan kasus, hanya akan ada satu kebijakan dalam daftar.

      ```
      {
          "policies": [
              {
                  "policyName": "DevCliTestThingPolicy",
                  "policyArn": "arn:aws:iot:us-west-2:57EXAMPLE833:policy/DevCliTestThingPolicy"
              }
          ]
      }
      ```

   1. Untuk setiap kebijakan yang dilampirkan pada sertifikat:

      1. Ganti `policy_name` dengan `policyName` nilai dari perintah sebelumnya, ganti `certificate_ARN` dengan ARN sertifikat, lalu jalankan perintah ini untuk melepaskan kebijakan dari sertifikat.

         ```
         aws iot detach-policy --policy-name policy_name --target certificate_ARN
         ```

         Jika berhasil, perintah ini tidak mengembalikan apa pun.

      1. Ganti `policy_name` dengan `policyName` nilainya, lalu jalankan perintah ini untuk melihat apakah kebijakan dilampirkan ke sertifikat lainnya.

         ```
         aws iot list-targets-for-policy --policy-name policy_name
         ```

         Jika perintah menampilkan daftar kosong seperti ini, kebijakan tidak dilampirkan ke sertifikat apa pun dan Anda akan terus mencantumkan versi kebijakan. Jika masih ada sertifikat yang dilampirkan pada kebijakan, lanjutkan dengan **detach-thing-principal** langkahnya.

         ```
         {
             "targets": []
         }
         ```

      1. Ganti `policy_name` dengan `policyName` nilainya, lalu jalankan perintah ini untuk memeriksa versi kebijakan. Untuk menghapus kebijakan, itu harus hanya memiliki satu versi.

         ```
         aws iot list-policy-versions --policy-name policy_name
         ```

         Jika kebijakan hanya memiliki satu versi, seperti contoh ini, Anda dapat melompat ke **delete-policy** langkah dan menghapus kebijakan sekarang.

         ```
         {
             "policyVersions": [
                 {
                     "versionId": "1",
                     "isDefaultVersion": true,
                     "createDate": "2021-11-18T01:02:46.778000+00:00"
                 }
             ]
         }
         ```

         Jika kebijakan memiliki lebih dari satu versi, seperti contoh ini, versi kebijakan dengan `isDefaultVersion` nilai `false` harus dihapus sebelum kebijakan dapat dihapus.

         ```
         {
             "policyVersions": [
                 {
                     "versionId": "2",
                     "isDefaultVersion": true,
                     "createDate": "2021-11-18T01:52:04.423000+00:00"
                 },
                 {
                     "versionId": "1",
                     "isDefaultVersion": false,
                     "createDate": "2021-11-18T01:30:18.083000+00:00"
                 }
             ]
         }
         ```

         Jika Anda perlu menghapus versi kebijakan, ganti `policy_name` dengan `policyName` nilai, ganti `version_ID` dengan `versionId` nilai dari perintah sebelumnya, lalu jalankan perintah ini untuk menghapus versi kebijakan.

         ```
         aws iot delete-policy-version --policy-name policy_name --policy-version-id version_ID
         ```

         Jika berhasil, perintah ini tidak mengembalikan apa pun.

         Setelah Anda menghapus versi kebijakan, ulangi langkah ini hingga kebijakan hanya memiliki satu versi kebijakan.

      1. Ganti `policy_name` dengan `policyName` nilai, lalu jalankan perintah ini untuk menghapus kebijakan.

         ```
         aws iot delete-policy --policy-name policy_name
         ```

   1. Ganti `thing_name` dengan nama benda, ganti `certificate_ARN` dengan ARN sertifikat, lalu jalankan perintah ini untuk melepaskan sertifikat dari sumber daya benda.

      ```
      aws iot detach-thing-principal --thing-name thing_name --principal certificate_ARN
      ```

      Jika berhasil, perintah ini tidak mengembalikan apa pun.

   1. Ganti `certificate_ID` dengan ID sertifikat dari perintah sebelumnya. ID sertifikat adalah karakter alfanumerik yang mengikuti ARN `cert/` yang dikembalikan oleh perintah sebelumnya. Kemudian jalankan perintah ini untuk menghapus sumber daya sertifikat.

      ```
      aws iot delete-certificate --certificate-id certificate_ID
      ```

      Jika berhasil, perintah ini tidak mengembalikan apa pun.

1. Ganti `thing_name` dengan nama benda itu, lalu jalankan perintah ini untuk menghapusnya.

   ```
   aws iot delete-thing --thing-name thing_name
   ```

   Jika berhasil, perintah ini tidak mengembalikan apa pun. 

### Bersihkan AWS sumber daya
<a name="iot-dc-cleanup-cloud-aws"></a>

Prosedur ini membantu Anda mengidentifikasi dan menghapus AWS sumber daya lain yang Anda buat saat menyelesaikan tutorial di jalur pembelajaran ini.


**AWS Sumber daya lain yang dibuat di jalur pembelajaran ini**  

| Tutorial | Tipe sumber daya | Nama sumber daya atau ID | 
| --- | --- | --- | 
|  [Tutorial: Menunjukkan tindakan jarak jauh (pekerjaan) dengan AWS IoT Device Client](iot-dc-runjobs.md)  | Objek Amazon S3 | hello-world-job.json | 
|  [Tutorial: Menunjukkan tindakan jarak jauh (pekerjaan) dengan AWS IoT Device Client](iot-dc-runjobs.md)  |  AWS IoT sumber daya pekerjaan  | pengguna didefinisikan | 

**Untuk menghapus AWS sumber daya yang dibuat di jalur pembelajaran ini**

1. Untuk menghapus pekerjaan yang dibuat di jalur pembelajaran ini

   1. Jalankan perintah ini untuk daftar pekerjaan di Anda Akun AWS.

      ```
      aws iot list-jobs
      ```

      Perintah mengembalikan daftar AWS IoT pekerjaan di Anda Akun AWS dan Wilayah AWS yang terlihat seperti ini.

      ```
      {
          "jobs": [
              {
                  "jobArn": "arn:aws:iot:us-west-2:57EXAMPLE833:job/hello-world-job-2",
                  "jobId": "hello-world-job-2",
                  "targetSelection": "SNAPSHOT",
                  "status": "COMPLETED",
                  "createdAt": "2021-11-16T23:40:36.825000+00:00",
                  "lastUpdatedAt": "2021-11-16T23:40:41.375000+00:00",
                  "completedAt": "2021-11-16T23:40:41.375000+00:00"
              },
              {
                  "jobArn": "arn:aws:iot:us-west-2:57EXAMPLE833:job/hello-world-job-1",
                  "jobId": "hello-world-job-1",
                  "targetSelection": "SNAPSHOT",
                  "status": "COMPLETED",
                  "createdAt": "2021-11-16T23:35:26.381000+00:00",
                  "lastUpdatedAt": "2021-11-16T23:35:29.239000+00:00",
                  "completedAt": "2021-11-16T23:35:29.239000+00:00"
              }
          ]
      }
      ```

   1. Untuk setiap pekerjaan yang Anda kenali dari daftar sebagai pekerjaan yang Anda buat di jalur pembelajaran ini, ganti `jobId` dengan `jobId` nilai pekerjaan yang akan dihapus, lalu jalankan perintah ini untuk menghapus AWS IoT pekerjaan.

      ```
      aws iot delete-job --job-id jobId
      ```

      Jika perintah berhasil, ia tidak mengembalikan apa pun.

1. Untuk menghapus dokumen pekerjaan yang Anda simpan di bucket Amazon S3 di jalur pembelajaran ini.

   1. Ganti `bucket` dengan nama bucket yang Anda gunakan, lalu jalankan perintah ini untuk mencantumkan objek di bucket Amazon S3 yang Anda gunakan.

      ```
      aws s3api list-objects --bucket bucket
      ```

      Perintah mengembalikan daftar objek Amazon S3 di bucket yang terlihat seperti ini.

      ```
      {
          "Contents": [
              {
                  "Key": "hello-world-job.json",
                  "LastModified": "2021-11-18T03:02:12+00:00",
                  "ETag": "\"868c8bc3f56b5787964764d4b18ed5ef\"",
                  "Size": 54,
                  "StorageClass": "STANDARD",
                  "Owner": {
                      "DisplayName": "EXAMPLE",
                      "ID": "e9e3d6ec1EXAMPLEf5bfb5e6bd0a2b6ed03884d1ed392a82ad011c144736a4ee"
                  }
              },
              {
                  "Key": "iot_job_firmware_update.json",
                  "LastModified": "2021-04-13T21:57:07+00:00",
                  "ETag": "\"7c68c591949391791ecf625253658c61\"",
                  "Size": 66,
                  "StorageClass": "STANDARD",
                  "Owner": {
                      "DisplayName": "EXAMPLE",
                      "ID": "e9e3d6ec1EXAMPLEf5bfb5e6bd0a2b6ed03884d1ed392a82ad011c144736a4ee"
                  }
              },
              {
                  "Key": "order66.json",
                  "LastModified": "2021-04-13T21:57:07+00:00",
                  "ETag": "\"bca60d5380b88e1a70cc27d321caba72\"",
                  "Size": 29,
                  "StorageClass": "STANDARD",
                  "Owner": {
                      "DisplayName": "EXAMPLE",
                      "ID": "e9e3d6ec1EXAMPLEf5bfb5e6bd0a2b6ed03884d1ed392a82ad011c144736a4ee"
                  }
              }
          ]
      }
      ```

   1. Untuk setiap objek yang Anda kenali dari daftar sebagai objek yang Anda buat di jalur pembelajaran ini, ganti `bucket` dengan nama bucket dan `key` dengan nilai kunci objek yang akan dihapus, lalu jalankan perintah ini untuk menghapus objek Amazon S3.

      ```
       aws s3api delete-object --bucket bucket --key key
      ```

      Jika perintah berhasil, ia tidak mengembalikan apa pun.

Setelah Anda menghapus semua AWS sumber daya dan objek yang Anda buat saat menyelesaikan jalur pembelajaran ini, Anda dapat memulai dari awal dan mengulangi tutorial.