

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

# 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.