

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

# Mengelola tugas
<a name="create-manage-jobs"></a>

Gunakan pekerjaan untuk memberi tahu perangkat tentang pembaruan perangkat lunak atau firmware. Anda dapat menggunakan [AWS IoT konsol](https://console.aws.amazon.com/iot/), [Manajemen pekerjaan dan pengendalian operasi API](jobs-management-control-api.md#jobs-http-api) [AWS Command Line Interface](https://docs.aws.amazon.com/cli/latest/reference/iot/index.html), atau [AWS SDKs](https://aws.amazon.com/tools/#sdk)untuk membuat dan mengelola pekerjaan.

## Penandatanganan kode untuk pekerjaan
<a name="create-manage-jobs-code-signing"></a>

 Saat mengirim kode ke perangkat, agar perangkat dapat mendeteksi apakah kode telah dimodifikasi saat transit, kami sarankan Anda menandatangani file kode dengan menggunakan kode AWS CLI. Untuk petunjuk, lihat [Membuat dan mengelola lowongan dengan menggunakan AWS CLI](manage-job-cli.md).

Untuk informasi selengkapnya, lihat [Untuk apa Penandatanganan Kode AWS IoT?](https://docs.aws.amazon.com/signer/latest/developerguide/Welcome.html) .

## Dokumen tugas
<a name="create-manage-jobs-job-doc"></a>

Sebelum Anda membuat pekerjaan, Anda harus membuat dokumen pekerjaan. Jika menggunakan penandatanganan kode AWS IoT, Anda harus mengunggah dokumen pekerjaan ke bucket Amazon S3 berversi. Untuk informasi selengkapnya tentang membuat bucket Amazon S3 dan mengunggah file ke dalamnya, lihat [Memulai Layanan Penyimpanan Sederhana Amazon](https://docs.aws.amazon.com/AmazonS3/latest/userguide/GetStartedWithS3.html) di Panduan Memulai *Amazon S3*.

**Tip**  
Untuk contoh dokumen pekerjaan, lihat contoh [jobs-agent.js](https://www.npmjs.com/package/aws-iot-device-sdk#jobs-agentjs) di AWS IoT SDK untuk JavaScript.

## Ditandatangani URLs
<a name="create-manage-jobs-presigned-URLs"></a>

Dokumen pekerjaan Anda dapat berisi URL Amazon S3 yang telah ditetapkan sebelumnya yang mengarah ke file kode Anda (atau file lain). Amazon URLs S3 yang telah ditetapkan sebelumnya hanya berlaku untuk jangka waktu terbatas dan dihasilkan saat perangkat meminta dokumen pekerjaan. Karena URL presigned tidak dibuat saat Anda membuat dokumen pekerjaan, gunakan URL placeholder di dokumen pekerjaan Anda sebagai gantinya. URL placeholder terlihat seperti berikut:

`${aws:iot:s3-presigned-url-v2:https://s3.region.amazonaws.com/<bucket>/<code file>}`

di mana:
+ *bucket*adalah bucket Amazon S3 yang berisi file kode.
+ *code file*adalah kunci Amazon S3 dari file kode.

Saat perangkat meminta dokumen pekerjaan, AWS IoT buat URL yang telah ditetapkan sebelumnya dan ganti URL placeholder dengan URL yang telah ditetapkan sebelumnya. Dokumen pekerjaan Anda kemudian dikirim ke perangkat.

**Peran IAM untuk memberikan izin untuk mengunduh file dari S3**  
Saat Anda membuat pekerjaan yang menggunakan Amazon URLs S3 yang telah ditetapkan sebelumnya, Anda harus memberikan peran IAM. Peran harus memberikan izin untuk mengunduh file dari bucket Amazon S3 tempat data atau pembaruan disimpan. Peran tersebut juga harus memberikan izin AWS IoT untuk mengambil peran tersebut.

Anda dapat menentukan batas waktu opsional untuk URL yang telah ditetapkan sebelumnya. Untuk informasi selengkapnya, lihat [CreateJob](https://docs.aws.amazon.com/iot/latest/apireference/API_CreateJob.html).

**Berikan izin kepada AWS IoT Jobs untuk mengambil peran Anda**

1. Buka [hub Peran konsol IAM](https://console.aws.amazon.com/iamv2/home#/roles) dan pilih peran Anda.

1. Pada tab **Trust Relationships**, pilih **Edit Trust Relationship** dan ganti dokumen kebijakan dengan JSON berikut. Pilih **Perbarui Kebijakan Kepercayaan**.  
****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Sid": "",
         "Effect": "Allow",
         "Principal": {
           "Service": [
             "iot.amazonaws.com"
           ]
         },
         "Action": "sts:AssumeRole"
       }
     ]
   }
   ```

1. Untuk melindungi dari masalah wakil yang membingungkan, tambahkan kunci konteks kondisi global [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn)dan [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount)ke kebijakan.
**penting**  
Anda `aws:SourceArn` harus mematuhi format:`arn:aws:iot:region:account-id:*`. Pastikan itu *region* cocok dengan AWS IoT Wilayah Anda dan *account-id* cocok dengan ID akun pelanggan Anda. Untuk informasi lebih lanjut, lihat [Pencegahan Deputi Bingung Lintas Layanan](cross-service-confused-deputy-prevention.md). 

   ```
   {
     "Effect": "Allow",
     "Statement": [
       {
         "Effect": "Allow",
         "Principal": {
           "Service": 
             "iot.amazonaws.com"        
          },
         "Action": "sts:AssumeRole",
         "Condition": {
            "StringEquals": {
               "aws:SourceAccount": "123456789012"
            },
            "ArnLike": {
                 "aws:SourceArn": "arn:aws:iot:*:123456789012:job/*"
            }
          }
        }
      ]
   }
   ```

1. Jika pekerjaan Anda menggunakan dokumen pekerjaan yang merupakan objek Amazon S3, pilih **Izin** dan gunakan JSON berikut. Ini menambahkan kebijakan yang memberikan izin untuk mengunduh file dari bucket Amazon S3 Anda:  
****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": "s3:GetObject",
               "Resource": "arn:aws:s3:::your_S3_bucket/*"
           }
       ]
   }
   ```

## URL yang telah ditetapkan sebelumnya untuk mengunggah file
<a name="create-manage-jobs-presigned-URLs-upload"></a>

Jika perangkat Anda perlu mengunggah file ke bucket Amazon S3 selama penerapan pekerjaan, Anda dapat menyertakan placeholder URL yang telah ditetapkan sebelumnya di dokumen pekerjaan Anda: 

```
${aws:iot:s3-presigned-url-upload:https://s3.region.amazonaws.com/<bucket>/<key>} 
```

Anda dapat menggunakan maksimal dua dari masing-masing`${thingName}`,`${jobId}`, dan `${executionNumber}` sebagai kata kunci yang dicadangkan dalam `key` atribut di URL placeholder unggahan file yang terletak di dokumen pekerjaan Anda. Placeholder lokal yang mewakili kata kunci yang dicadangkan dalam `key` atribut akan diurai dan diganti saat eksekusi pekerjaan dibuat. Menggunakan placeholder lokal dengan kata kunci cadangan khusus untuk setiap perangkat memastikan setiap file yang diunggah dari perangkat khusus untuk perangkat tersebut dan tidak ditimpa oleh file yang diunggah serupa dari perangkat lain yang ditargetkan oleh penerapan pekerjaan yang sama. Untuk informasi tentang pemecahan masalah placeholder lokal dalam placeholder URL yang telah ditetapkan sebelumnya untuk mengunggah file selama penerapan pekerjaan, lihat. [Pesan Kesalahan Pemecahan Masalah Umum](software-package-catalog-troubleshooting.md#spc-general-troubleshooting)

**catatan**  
Nama bucket Amazon S3 tidak dapat berisi placeholder lokal yang mewakili kata kunci yang dicadangkan untuk file yang diunggah. Placeholder lokal harus terletak di atribut. `key`

Placeholder URL yang telah ditetapkan sebelumnya ini akan dikonversi ke URL unggahan yang telah ditetapkan sebelumnya Amazon S3 di dokumen pekerjaan Anda saat perangkat menerimanya. Perangkat Anda akan menggunakan ini untuk mengunggah file ke bucket Amazon S3 tujuan.

**catatan**  
Jika bucket dan kunci Amazon S3 tidak disediakan di URL placeholder di atas, AWS IoT Jobs akan secara otomatis menghasilkan kunci untuk setiap perangkat menggunakan maksimal dua dari `${thingName}` masing-masing,, dan. `${jobId}` `${executionNumber}`

## URL yang telah ditetapkan sebelumnya menggunakan versi Amazon S3
<a name="create-manage-jobs-presigned-URLs-versioning"></a>

Menjaga integritas file yang disimpan dalam bucket Amazon S3 sangat penting untuk memastikan penerapan pekerjaan yang aman menggunakan file tersebut ke armada perangkat Anda. Dengan menggunakan versi Amazon S3, Anda dapat menambahkan pengenal versi untuk setiap varian file yang disimpan di bucket Amazon S3 untuk melacak setiap versi file. Ini memberikan wawasan tentang versi file apa yang digunakan ke armada perangkat Anda menggunakan AWS IoT Jobs. Untuk informasi selengkapnya tentang bucket Amazon S3 menggunakan pembuatan versi, lihat Menggunakan pembuatan versi di bucket Amazon [S3.](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Versioning.html)

Jika file disimpan di Amazon S3 dan dokumen pekerjaan berisi placeholder URL yang telah ditetapkan sebelumnya, AWS IoT Jobs akan menghasilkan URL yang telah ditetapkan sebelumnya dalam dokumen pekerjaan menggunakan bucket Amazon S3, kunci bucket, dan versi file yang disimpan di bucket Amazon S3. URL presigned yang dihasilkan dalam dokumen pekerjaan ini akan menggantikan placeholder URL presigned awalnya dalam dokumen pekerjaan. Jika Anda memperbarui file yang disimpan di bucket Amazon S3 Anda, versi baru file dan selanjutnya `versionId` akan dibuat untuk memberi sinyal pembaruan yang dibuat dan memberikan kemampuan untuk menargetkan file tertentu dalam penerapan pekerjaan di masa mendatang.

Lihat contoh berikut untuk tampilan Amazon S3 sebelum dan selama yang ditetapkan URLs dalam dokumen pekerjaan Anda menggunakan: `versionId`

**Placeholder URL Presigned Amazon S3 (Sebelum Penerapan Job)**

```
//Virtual-hosted style URL
${aws:iot:s3-presigned-url-v2:https://bucket-name.s3.region-code.amazonaws.com/key-name%3FversionId%3Dversion-id}

//Path-style URL
${aws:iot:s3-presigned-url-v2:https://s3.region-code.amazonaws.com/bucket-name/key-name%3FversionId%3Dversion-id}
```

**URL Presigned Amazon S3 (Selama Penerapan Job)**

```
//Virtual-hosted style URL
${aws:iot:s3-presigned-url-v2:https://sample-bucket-name.s3.us-west-2.amazonaws.com/sample-code-file.png%3FversionId%3Dversion1}

//Path-style
${aws:iot:s3-presigned-url-v2:https://s3.us-west-2.amazonaws.com/sample-bucket-name/sample-code-file.png%3FversionId%3Dversion1}
```

[https://docs.aws.amazon.com/AmazonS3/latest/userguide/VirtualHosting.html#virtual-hosted-style-access](https://docs.aws.amazon.com/AmazonS3/latest/userguide/VirtualHosting.html#virtual-hosted-style-access)

**catatan**  
Jika Anda ingin menambahkan `versionId` ke URL presigned Amazon S3, itu harus sesuai dengan dukungan pengkodean URL. AWS SDK for Java 2.x Untuk informasi selengkapnya, lihat [Perubahan dalam mengurai Amazon URIs S3 dari versi 1 ke versi 2](https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/migration-s3-uri-parser.html#migration-3-uri-parser-api-changes).

**Perbedaan versi placeholder URL Presigned Amazon S3**

Daftar berikut menguraikan perbedaan antara `${aws:iot:s3-presigned-url-v1` placeholder URL presigned Amazon S3 (versi 1) dan (versi 2)`${aws:iot:s3-presigned-url-v2`:
+  `${aws:iot:s3-presigned-url-v1`Placeholder URL presigned Amazon S3 tidak mendukung. `version-id`
+ Placeholder URL presigned Amazon S3 menerima URL `${aws:iot:s3-presigned-url-v1` Amazon S3 sebagai tidak dikodekan. Placeholder URL Presigned Amazon S3 mengharuskan URL `${aws:iot:s3-presigned-url-v2` Amazon S3 dikodekan agar sesuai dengan standar SDK Amazon S3.

**Topics**
+ [Penandatanganan kode untuk pekerjaan](#create-manage-jobs-code-signing)
+ [Dokumen tugas](#create-manage-jobs-job-doc)
+ [Ditandatangani URLs](#create-manage-jobs-presigned-URLs)
+ [URL yang telah ditetapkan sebelumnya untuk mengunggah file](#create-manage-jobs-presigned-URLs-upload)
+ [URL yang telah ditetapkan sebelumnya menggunakan versi Amazon S3](#create-manage-jobs-presigned-URLs-versioning)
+ [Membuat dan mengelola pekerjaan dengan menggunakan Konsol Manajemen AWS](manage-job-console.md)
+ [Membuat dan mengelola pekerjaan dengan menggunakan AWS CLI](manage-job-cli.md)

# Membuat dan mengelola pekerjaan dengan menggunakan Konsol Manajemen AWS
<a name="manage-job-console"></a>

Bagian ini menjelaskan bagaimana Anda dapat membuat dan mengelola pekerjaan dari AWS IoT konsol. Setelah Anda membuat pekerjaan, Anda dapat melihat informasi tentang pekerjaan di halaman detail, dan mengelola pekerjaan.

**catatan**  
Jika Anda ingin melakukan penandatanganan kode untuk AWS IoT pekerjaan, gunakan AWS CLI. Untuk informasi selengkapnya, lihat [Membuat dan mengelola pekerjaan dengan menggunakan AWS CLI](manage-job-cli.md).

**Topics**
+ [Buat mengelola pekerjaan dengan menggunakan Konsol Manajemen AWS](#create-job-console)
+ [Melihat dan mengelola pekerjaan dengan menggunakan Konsol Manajemen AWS](#view-manage-job-console)

## Buat mengelola pekerjaan dengan menggunakan Konsol Manajemen AWS
<a name="create-job-console"></a>

Untuk membuat pekerjaan, masuk ke AWS IoT konsol, dan buka [hub Pekerjaan](https://console.aws.amazon.com/iot/home#/jobhub) di bagian **Tindakan Jarak Jauh**. Kemudian, lakukan langkah-langkah berikut.

1. Pada halaman **Pekerjaan**, di kotak dialog **Pekerjaan**, pilih **Buat pekerjaan**.

1. Bergantung pada perangkat yang Anda gunakan, Anda dapat membuat pekerjaan khusus, pekerjaan pembaruan FreeRTOS OTA, atau pekerjaan. AWS IoT Greengrass Untuk contoh ini, pilih **Buat pekerjaan khusus**. Pilih **Berikutnya**.

1. Pada halaman **Properti pekerjaan kustom**, di kotak dialog **Properti Job**, masukkan informasi Anda untuk bidang berikut:
   + **Nama**: Masukkan nama pekerjaan alfanumerik yang unik.
   + **Deskripsi - opsional**: Masukkan deskripsi opsional tentang Job Anda.
   + **Tag - opsional**: 
**catatan**  
Kami menyarankan agar Anda tidak menggunakan informasi identitas pribadi dalam pekerjaan IDs dan deskripsi Anda.

   Pilih **Berikutnya**.

1. Pada halaman **konfigurasi File** di kotak dialog **Target Job**, pilih **grup **Things or Thing**** yang ingin Anda jalankan pekerjaan ini.

   Di kotak dialog **Dokumen Job**, pilih salah satu opsi berikut:
   + **Dari file: File** pekerjaan JSON yang sebelumnya Anda unggah ke bucket Amazon S3
     + **Penandatanganan kode**

       **Dalam dokumen pekerjaan yang terletak di URL Amazon S3 Anda, `${aws:iot:code-sign-signature:s3://region.bucket/code-file@code-file-version-id}` diperlukan sebagai pengganti hingga diganti dengan jalur file kode yang ditandatangani menggunakan profil penandatanganan Kode Anda.** File kode baru yang ditandatangani awalnya akan muncul di `SignedImages` folder di bucket sumber Amazon S3 Anda. Dokumen pekerjaan baru yang berisi `Codesigned_` awalan akan dibuat dengan jalur file kode yang ditandatangani menggantikan placeholder tanda kode dan ditempatkan di URL Amazon S3 Anda untuk membuat pekerjaan baru.
     + **Sumber daya pra-tanda tangan URLs**

       [Di menu tarik-turun **peran Pra-penandatanganan**, pilih peran IAM yang Anda buat di Presigned. URLs](https://docs.aws.amazon.com/iot/latest/developerguide/create-manage-jobs.html#create-manage-jobs-presigned-URLs) Menggunakan `${aws:iot:s3-presigned-url:` presign URLs untuk objek yang terletak di Amazon S3 adalah praktik keamanan terbaik untuk perangkat yang mengunduh objek dari Amazon S3.

       Jika Anda ingin menggunakan presigned URLs untuk placeholder penandatanganan kode, gunakan contoh template berikut:

       ```
           ${aws:iot:s3-presigned-url:${aws:iot:code-sign-signature:<S3 URL>}
       ```
   + **Dari template: Template** pekerjaan yang berisi dokumen pekerjaan dan konfigurasi pekerjaan. Template pekerjaan dapat berupa template pekerjaan khusus yang Anda buat atau template yang AWS dikelola.

      Jika Anda membuat pekerjaan untuk melakukan tindakan jarak jauh yang sering digunakan seperti me-reboot perangkat, Anda dapat menggunakan templat AWS terkelola. Template ini telah dikonfigurasikan sebelumnya untuk digunakan. Untuk informasi selengkapnya, lihat [Buat template pekerjaan khusus](job-templates-console.md#job-templates-console-create) dan [Buat templat pekerjaan khusus dari templat terkelola](job-template-manage-console-create.md#job-template-manage-create-template). 

1. Pada halaman **konfigurasi Job** di kotak dialog **konfigurasi Job**, pilih salah satu jenis pekerjaan berikut:
   + **Pekerjaan snapshot**: Pekerjaan snapshot selesai ketika selesai dijalankan pada perangkat dan grup target.
   + **Pekerjaan berkelanjutan: Pekerjaan** berkelanjutan berlaku untuk grup benda dan berjalan di perangkat apa pun yang nantinya Anda tambahkan ke grup target tertentu.

1. Di kotak dialog **Konfigurasi tambahan - opsional**, tinjau konfigurasi Job opsional berikut dan buat pilihan Anda sesuai:
   + **Konfigurasi peluncuran**
   + **Konfigurasi penjadwalan**
   + **Konfigurasi batas waktu eksekusi Job**
   + **Konfigurasi coba lagi eksekusi Job - baru**
   + **Batalkan konfigurasi**

   Lihat bagian berikut untuk informasi tambahan tentang konfigurasi Job:
   + [Peluncuran pekerjaan, penjadwalan, dan membatalkan konfigurasi](jobs-configurations-details.md#job-rollout-abort-scheduling)
   + [Konfigurasi batas waktu eksekusi pekerjaan dan coba lagi](jobs-configurations-details.md#job-timeout-retry)

   Tinjau semua pilihan pekerjaan Anda dan kemudian pilih **Kirim** untuk membuat pekerjaan Anda.

## Melihat dan mengelola pekerjaan dengan menggunakan Konsol Manajemen AWS
<a name="view-manage-job-console"></a>

Setelah Anda membuat pekerjaan, konsol menghasilkan tanda tangan JSON dan menempatkannya di dokumen pekerjaan Anda. Anda dapat menggunakan [AWS IoT konsol](https://console.aws.amazon.com/iot/) untuk melihat status, membatalkan, atau menghapus pekerjaan.

Jika Anda memilih pekerjaan yang Anda buat, Anda dapat menemukan:
+ Rincian pekerjaan umum, seperti nama pekerjaan, deskripsi, jenis, waktu pembuatan, terakhir diperbarui, dan perkiraan waktu mulai.
+ Konfigurasi pekerjaan apa pun yang Anda tentukan dan statusnya.
+ Dokumen pekerjaan.
+ Eksekusi pekerjaan dan tag opsional apa pun yang Anda tentukan.

Untuk mengelola pekerjaan, buka [Hub Job konsol](https://console.aws.amazon.com/iot/home#/jobhub) dan pilih apakah Anda ingin mengedit, menghapus, atau membatalkan pekerjaan.

# Membuat dan mengelola pekerjaan dengan menggunakan AWS CLI
<a name="manage-job-cli"></a>

Bagian ini menjelaskan cara membuat dan mengelola pekerjaan.

## Buat pekerjaan
<a name="create-job"></a>

Untuk membuat AWS IoT pekerjaan, gunakan **CreateJob** perintah. Pekerjaan diantrian untuk eksekusi pada target (hal-hal atau kelompok hal) yang Anda tentukan. Untuk membuat AWS IoT pekerjaan, Anda memerlukan dokumen pekerjaan yang dapat dimasukkan dalam badan permintaan atau sebagai tautan ke dokumen Amazon S3. Jika pekerjaan termasuk mengunduh file menggunakan Amazon URLs S3 yang telah ditandatangani sebelumnya, Anda memerlukan peran IAM Nama Sumber Daya Amazon (ARN) yang memiliki izin untuk mengunduh file dan memberikan izin ke layanan Pekerjaan AWS IoT untuk mengambil peran tersebut.

Untuk informasi selengkapnya tentang sintaks saat memasukkan tanggal dan waktu menggunakan perintah API atau perintah AWS CLI, lihat [Stempel](https://docs.aws.amazon.com/cli/latest/userguide/cli-usage-parameters-types.html#parameter-type-timestamp) waktu.

### Penandatanganan kode dengan pekerjaan
<a name="code-signing-with-jobs"></a>

Jika Anda menggunakan penandatanganan kode untuk AWS IoT, Anda harus memulai pekerjaan penandatanganan kode dan menyertakan output dalam dokumen pekerjaan Anda. **Ini akan menggantikan placeholder tanda tangan tanda tangan kode di dokumen pekerjaan Anda, yang diperlukan sebagai placeholder sampai diganti dengan jalur file kode yang ditandatangani menggunakan profil penandatanganan Kode Anda.** Placeholder tanda tangan tanda tangan kode akan terlihat seperti berikut:

```
    ${aws:iot:code-sign-signature:s3://region.bucket/code-file@code-file-version-id}
```

Gunakan [start-signing-job](https://docs.aws.amazon.com/signer/latest/developerguide/api-startsigningjob.html)perintah untuk membuat pekerjaan penandatanganan kode. `start-signing-job`mengembalikan ID pekerjaan. Untuk mendapatkan lokasi Amazon S3 tempat tanda tangan disimpan, gunakan perintah. **describe-signing-job** Anda kemudian dapat mengunduh tanda tangan dari Amazon S3. Untuk informasi selengkapnya tentang pekerjaan penandatanganan kode, lihat [Penandatanganan kode untuk AWS IoT](https://docs.aws.amazon.com/signer/latest/developerguide/Welcome.html).

Dokumen pekerjaan Anda harus berisi placeholder URL yang telah ditetapkan sebelumnya untuk file kode Anda dan keluaran tanda tangan JSON yang ditempatkan di bucket Amazon S3 menggunakan perintah: **start-signing-job**

```
{
    "presign": "${aws:iot:s3-presigned-url:https://s3.region.amazonaws.com/bucket/image}",
}
```

### Buat pekerjaan dengan dokumen pekerjaan
<a name="create-job-with-document"></a>

Perintah berikut menunjukkan cara membuat job menggunakan job document (*job-document.json*) yang disimpan di bucket Amazon S3 (*jobBucket*), dan peran dengan izin untuk mengunduh file dari Amazon *S3DownloadRole* S3 ().

```
aws iot create-job  \
      --job-id 010  \
      --targets arn:aws:iot:us-east-1:123456789012:thing/thingOne  \
      --document-source https://s3.amazonaws.com/amzn-s3-demo-bucket/job-document.json  \
      --timeout-config inProgressTimeoutInMinutes=100 \
      --job-executions-rollout-config "{ \"exponentialRate\": { \"baseRatePerMinute\": 50, \"incrementFactor\": 2, \"rateIncreaseCriteria\": { \"numberOfNotifiedThings\": 1000, \"numberOfSucceededThings\": 1000}}, \"maximumPerMinute\": 1000}" \
      --abort-config "{ \"criteriaList\": [ { \"action\": \"CANCEL\", \"failureType\": \"FAILED\", \"minNumberOfExecutedThings\": 100, \"thresholdPercentage\": 20}, { \"action\": \"CANCEL\", \"failureType\": \"TIMED_OUT\", \"minNumberOfExecutedThings\": 200, \"thresholdPercentage\": 50}]}" \          
      --presigned-url-config "{\"roleArn\":\"arn:aws:iam::123456789012:role/S3DownloadRole\", \"expiresInSec\":3600}"
```

Pekerjaan dijalankan*thingOne*.

`timeout-config`Parameter opsional menentukan jumlah waktu yang dimiliki setiap perangkat untuk menyelesaikan pelaksanaan pekerjaannya. Timer dimulai ketika status eksekusi pekerjaan diatur ke`IN_PROGRESS`. Jika status eksekusi pekerjaan tidak disetel ke status terminal lain sebelum waktu berakhir, status tersebut disetel ke`TIMED_OUT`.

Timer yang sedang berlangsung tidak dapat diperbarui dan berlaku untuk semua eksekusi pekerjaan untuk pekerjaan tersebut. Setiap kali eksekusi pekerjaan tetap dalam `IN_PROGRESS` status lebih lama dari interval ini, itu gagal dan beralih ke `TIMED_OUT` status terminal. AWS IoT juga menerbitkan pemberitahuan MQTT.

Untuk informasi selengkapnya tentang membuat konfigurasi untuk peluncuran dan pembatalan pekerjaan, lihat [Peluncuran Pekerjaan](job-rollout-abort.html) dan Batalkan Konfigurasi.

**catatan**  
Dokumen Job yang ditetapkan sebagai file Amazon S3 diambil pada saat Anda membuat pekerjaan. Jika Anda mengubah konten file Amazon S3 yang Anda gunakan sebagai sumber dokumen pekerjaan Anda setelah Anda membuat dokumen pekerjaan, maka apa yang dikirim ke target pekerjaan tidak berubah.

## Perbarui pekerjaan
<a name="update-job"></a>

Untuk memperbarui pekerjaan, gunakan **UpdateJob** perintah. Anda dapat memperbarui`description`,`presignedUrlConfig`, `jobExecutionsRolloutConfig``abortConfig`,, dan `timeoutConfig` bidang pekerjaan.

```
aws iot update-job  \
  --job-id 010  \
  --description "updated description" \
  --timeout-config inProgressTimeoutInMinutes=100 \
  --job-executions-rollout-config "{ \"exponentialRate\": { \"baseRatePerMinute\": 50, \"incrementFactor\": 2, \"rateIncreaseCriteria\": { \"numberOfNotifiedThings\": 1000, \"numberOfSucceededThings\": 1000}, \"maximumPerMinute\": 1000}}" \
  --abort-config "{ \"criteriaList\": [ { \"action\": \"CANCEL\", \"failureType\": \"FAILED\", \"minNumberOfExecutedThings\": 100, \"thresholdPercentage\": 20}, { \"action\": \"CANCEL\", \"failureType\": \"TIMED_OUT\", \"minNumberOfExecutedThings\": 200, \"thresholdPercentage\": 50}]}" \          
  --presigned-url-config "{\"roleArn\":\"arn:aws:iam::123456789012:role/S3DownloadRole\", \"expiresInSec\":3600}"
```

Untuk informasi selengkapnya, lihat [Peluncuran Pekerjaan dan Batalkan Konfigurasi](job-rollout-abort.html).

## Membatalkan tugas
<a name="cancel-job"></a>

Untuk membatalkan pekerjaan, gunakan **CancelJob** perintah. Membatalkan pekerjaan berhenti AWS IoT dari meluncurkan eksekusi pekerjaan baru untuk pekerjaan itu. Ini juga membatalkan eksekusi pekerjaan apa pun yang berada dalam suatu `QUEUED` negara bagian. AWS IoT membuat eksekusi pekerjaan apa pun dalam status terminal tidak tersentuh karena perangkat telah menyelesaikan pekerjaan. Jika status eksekusi pekerjaan`IN_PROGRESS`, itu juga tetap tidak tersentuh kecuali Anda menggunakan `--force` parameter opsional.

Perintah berikut menunjukkan cara membatalkan pekerjaan dengan ID 010.

```
aws iot cancel-job --job-id 010
```

Perintah menampilkan output berikut:

```
{
    "jobArn": "string",
    "jobId": "string",
    "description": "string"
}
```

Ketika Anda membatalkan pekerjaan, eksekusi pekerjaan yang berada dalam `QUEUED` keadaan dibatalkan. Eksekusi Job yang berada dalam `IN_PROGRESS` keadaan dibatalkan, tetapi hanya jika Anda menentukan parameter opsional`--force`. Eksekusi Job dalam status terminal tidak dibatalkan.

**Awas**  
Membatalkan pekerjaan yang berada dalam `IN_PROGRESS` status (dengan menyetel `--force` parameter) membatalkan eksekusi pekerjaan apa pun yang sedang berlangsung dan menyebabkan perangkat yang menjalankan pekerjaan tidak dapat memperbarui status eksekusi pekerjaan. Berhati-hatilah dan pastikan bahwa setiap perangkat yang menjalankan pekerjaan yang dibatalkan dapat pulih ke status yang valid.

Status pekerjaan yang dibatalkan atau salah satu eksekusi pekerjaannya pada akhirnya konsisten. AWS IoT berhenti menjadwalkan eksekusi pekerjaan baru dan eksekusi `QUEUED` pekerjaan untuk pekerjaan itu ke perangkat sesegera mungkin. Mengubah status eksekusi pekerjaan `CANCELED` mungkin memakan waktu, tergantung pada jumlah perangkat dan faktor lainnya.

Jika pekerjaan dibatalkan karena memenuhi kriteria yang ditentukan oleh `AbortConfig` objek, layanan akan menambahkan nilai yang diisi otomatis untuk bidang dan. `comment` `reasonCode` Anda dapat membuat nilai sendiri `reasonCode` saat pembatalan pekerjaan digerakkan oleh pengguna.

## Membatalkan eksekusi pekerjaan
<a name="cancel-job-execution"></a>

Untuk membatalkan eksekusi pekerjaan pada perangkat, gunakan **CancelJobExecution** perintah. Ini membatalkan eksekusi pekerjaan yang dalam `QUEUED` keadaan. Jika Anda ingin membatalkan eksekusi pekerjaan yang sedang berlangsung, Anda harus menggunakan `--force` parameter.

Perintah berikut menunjukkan cara membatalkan eksekusi pekerjaan dari pekerjaan 010 berjalan`myThing`.

```
aws iot cancel-job-execution --job-id 010 --thing-name myThing
```

Perintah tidak menampilkan output.

Eksekusi pekerjaan yang berada dalam `QUEUED` keadaan dibatalkan. Eksekusi pekerjaan yang berada dalam `IN_PROGRESS` status dibatalkan, tetapi hanya jika Anda menentukan `--force` parameter opsional. Eksekusi Job dalam status terminal tidak dapat dibatalkan. 

**Awas**  
Saat Anda membatalkan eksekusi pekerjaan yang berada dalam `IN_PROGRESS` status, perangkat tidak dapat memperbarui status eksekusi pekerjaan. Berhati-hatilah dan pastikan perangkat dapat pulih ke keadaan yang valid.

Jika eksekusi pekerjaan dalam status terminal, atau jika eksekusi pekerjaan dalam `IN_PROGRESS` status dan `--force` parameter tidak disetel ke`true`, perintah ini menyebabkan`InvalidStateTransitionException`.

Status eksekusi pekerjaan yang dibatalkan pada akhirnya konsisten. Mengubah status eksekusi pekerjaan `CANCELED` mungkin memakan waktu, tergantung pada berbagai faktor.

## Hapus pekerjaan
<a name="delete-job"></a>

Untuk menghapus pekerjaan dan eksekusi pekerjaannya, gunakan **DeleteJob** perintah. Secara default, Anda hanya dapat menghapus pekerjaan yang berada dalam status terminal (`SUCCEEDED`atau`CANCELED`). Jika tidak, pengecualian terjadi. Namun, Anda dapat menghapus pekerjaan di `IN_PROGRESS` negara bagian, hanya jika `force` parameter disetel ke`true`.

Untuk menghapus pekerjaan, jalankan perintah berikut:

```
aws iot delete-job --job-id 010 --force|--no-force
```

Perintah tidak menampilkan output.

**Awas**  
Saat Anda menghapus pekerjaan yang berada dalam `IN_PROGRESS` status, perangkat yang menerapkan pekerjaan tidak dapat mengakses informasi pekerjaan atau memperbarui status eksekusi pekerjaan. Berhati-hatilah dan pastikan bahwa setiap perangkat yang menerapkan pekerjaan yang telah dihapus dapat dipulihkan ke status yang valid.

Diperlukan beberapa waktu untuk menghapus pekerjaan, tergantung pada jumlah eksekusi pekerjaan yang dibuat untuk pekerjaan itu dan faktor lainnya. Sementara pekerjaan sedang dihapus, `DELETION_IN_PROGRESS` muncul sebagai status pekerjaan. Kesalahan terjadi jika Anda mencoba menghapus atau membatalkan pekerjaan dengan status yang sudah ada`DELETION_IN_PROGRESS`.

Hanya 10 pekerjaan yang dapat memiliki status sekaligus. `DELETION_IN_PROGRESS` Jika tidak, `LimitExceededException` terjadi.

## Dapatkan dokumen pekerjaan
<a name="get-job-document"></a>

Untuk mengambil dokumen pekerjaan untuk suatu pekerjaan, gunakan **GetJobDocument** perintah. Dokumen pekerjaan adalah deskripsi operasi jarak jauh yang akan dilakukan oleh perangkat.

Untuk mendapatkan dokumen pekerjaan, jalankan perintah berikut:

```
aws iot get-job-document --job-id 010
```

Perintah mengembalikan dokumen pekerjaan untuk pekerjaan yang ditentukan:

```
{
    "document": "{\n\t\"operation\":\"install\",\n\t\"url\":\"http://amazon.com/firmWareUpate-01\",\n\t\"data\":\"${aws:iot:s3-presigned-url:https://s3.amazonaws.com/amzn-s3-demo-bucket/datafile}\"\n}"
}
```

**catatan**  
Saat Anda menggunakan perintah ini untuk mengambil dokumen pekerjaan, placeholder URLs tidak diganti dengan Amazon S3 yang telah ditetapkan sebelumnya. URLs Saat perangkat memanggil operasi [GetPendingJobExecutions](https://docs.aws.amazon.com/iot/latest/apireference/API_iot-jobs-data_GetPendingJobExecutions.html)API, placeholder diganti dengan Amazon S3 URLs URLs yang telah ditetapkan sebelumnya dalam dokumen pekerjaan. 

## Daftar Lowongan Kerja
<a name="list-jobs"></a>

Untuk mendapatkan daftar semua pekerjaan di Anda Akun AWS, gunakan **ListJobs** perintah. Data Job dan data eksekusi pekerjaan disimpan untuk [waktu yang terbatas](https://docs.aws.amazon.com//general/latest/gr/iot_device_management.html#job-limits). Jalankan perintah berikut untuk mencantumkan semua pekerjaan di Akun AWS:

```
aws iot list-jobs
```

Perintah mengembalikan semua pekerjaan di akun Anda, diurutkan berdasarkan status pekerjaan:

```
{
    "jobs": [
        {
            "status": "IN_PROGRESS", 
            "lastUpdatedAt": 1486687079.743, 
            "jobArn": "arn:aws:iot:us-east-1:123456789012:job/013", 
            "createdAt": 1486687079.743, 
            "targetSelection": "SNAPSHOT",
            "jobId": "013"
        }, 
        {
            "status": "SUCCEEDED", 
            "lastUpdatedAt": 1486685868.444, 
            "jobArn": "arn:aws:iot:us-east-1:123456789012:job/012", 
            "createdAt": 1486685868.444, 
            "completedAt": 148668789.690,
            "targetSelection": "SNAPSHOT",
            "jobId": "012"
        }, 
        {
            "status": "CANCELED", 
            "lastUpdatedAt": 1486678850.575, 
            "jobArn": "arn:aws:iot:us-east-1:123456789012:job/011", 
            "createdAt": 1486678850.575, 
            "targetSelection": "SNAPSHOT",
            "jobId": "011"
        }
    ]
}
```

## Jelaskan pekerjaan
<a name="describe-job"></a>

Untuk mendapatkan status pekerjaan, jalankan **DescribeJob** perintah. Perintah berikut menunjukkan cara mendeskripsikan pekerjaan:

```
$ aws iot describe-job --job-id 010
```

Perintah mengembalikan status pekerjaan yang ditentukan. Contoh:

```
{
    "documentSource": "https://s3.amazonaws.com/amzn-s3-demo-bucket/job-document.json", 
    "job": {
        "status": "IN_PROGRESS", 
        "jobArn": "arn:aws:iot:us-east-1:123456789012:job/010", 
        "targets": [
            "arn:aws:iot:us-east-1:123456789012:thing/myThing"
        ], 
        "jobProcessDetails": {
            "numberOfCanceledThings": 0, 
            "numberOfFailedThings": 0,
            "numberOfInProgressThings": 0,
            "numberOfQueuedThings": 0,
            "numberOfRejectedThings": 0,
            "numberOfRemovedThings": 0,
            "numberOfSucceededThings": 0,
            "numberOfTimedOutThings": 0,
            "processingTargets": [
                arn:aws:iot:us-east-1:123456789012:thing/thingOne, 
                arn:aws:iot:us-east-1:123456789012:thinggroup/thinggroupOne, 
                arn:aws:iot:us-east-1:123456789012:thing/thingTwo, 
                arn:aws:iot:us-east-1:123456789012:thinggroup/thinggroupTwo 
            ]
        }, 
        "presignedUrlConfig": {
            "expiresInSec": 60, 
            "roleArn": "arn:aws:iam::123456789012:role/S3DownloadRole"
        }, 
        "jobId": "010", 
        "lastUpdatedAt": 1486593195.006, 
        "createdAt": 1486593195.006,
        "targetSelection": "SNAPSHOT",
        "jobExecutionsRolloutConfig": { 
            "exponentialRate": { 
                "baseRatePerMinute": integer,
                "incrementFactor": integer,
                "rateIncreaseCriteria": { 
                    "numberOfNotifiedThings": integer, // Set one or the other
                    "numberOfSucceededThings": integer // of these two values.
                },
            "maximumPerMinute": integer
         }
        },    
        "abortConfig": { 
            "criteriaList": [ 
                { 
                    "action": "string",
                    "failureType": "string",
                    "minNumberOfExecutedThings": integer,
                    "thresholdPercentage": integer
                }
            ]
        },
        "timeoutConfig": { 
           "inProgressTimeoutInMinutes": number
          }
    }
}
```

## Daftar eksekusi untuk suatu pekerjaan
<a name="list-job-executions-for-job"></a>

Pekerjaan yang berjalan pada perangkat tertentu diwakili oleh objek eksekusi pekerjaan. Jalankan **ListJobExecutionsForJob** perintah untuk membuat daftar semua eksekusi pekerjaan untuk suatu pekerjaan. Berikut ini menunjukkan cara membuat daftar eksekusi untuk suatu pekerjaan:

```
aws iot list-job-executions-for-job --job-id 010
```

Perintah mengembalikan daftar eksekusi pekerjaan:

```
{
    "executionSummaries": [
    {
        "thingArn": "arn:aws:iot:us-east-1:123456789012:thing/thingOne", 
        "jobExecutionSummary": {
            "status": "QUEUED", 
            "lastUpdatedAt": 1486593196.378, 
            "queuedAt": 1486593196.378,
            "executionNumber": 1234567890
        }
    },
    {
        "thingArn": "arn:aws:iot:us-east-1:123456789012:thing/thingTwo", 
        "jobExecutionSummary": {
            "status": "IN_PROGRESS", 
            "lastUpdatedAt": 1486593345.659, 
            "queuedAt": 1486593196.378,
            "startedAt": 1486593345.659,
            "executionNumber": 4567890123
        }
    }
    ]
}
```

## Buat daftar eksekusi pekerjaan untuk suatu hal
<a name="list-job-executions-for-thing"></a>

Jalankan **ListJobExecutionsForThing** perintah untuk membuat daftar semua eksekusi pekerjaan yang berjalan pada suatu hal. Berikut ini menunjukkan cara membuat daftar eksekusi pekerjaan untuk suatu hal:

```
aws iot list-job-executions-for-thing --thing-name thingOne
```

Perintah mengembalikan daftar eksekusi pekerjaan yang sedang berjalan atau telah berjalan pada hal yang ditentukan:

```
{
    "executionSummaries": [
    {
        "jobExecutionSummary": {
            "status": "QUEUED", 
            "lastUpdatedAt": 1486687082.071, 
            "queuedAt": 1486687082.071,
            "executionNumber": 9876543210
        }, 
        "jobId": "013"
    }, 
    {
        "jobExecutionSummary": {
            "status": "IN_PROGRESS",
            "startAt": 1486685870.729, 
            "lastUpdatedAt": 1486685870.729, 
            "queuedAt": 1486685870.729,
            "executionNumber": 1357924680
        }, 
        "jobId": "012"
    }, 
    {
        "jobExecutionSummary": {
            "status": "SUCCEEDED", 
            "startAt": 1486678853.415,
            "lastUpdatedAt": 1486678853.415, 
            "queuedAt": 1486678853.415,
            "executionNumber": 4357680912
        }, 
        "jobId": "011"
    }, 
    {
        "jobExecutionSummary": {
            "status": "CANCELED",
            "startAt": 1486593196.378,
            "lastUpdatedAt": 1486593196.378, 
            "queuedAt": 1486593196.378,
            "executionNumber": 2143174250
        }, 
        "jobId": "010"
    }
    ]
}
```

## Jelaskan eksekusi pekerjaan
<a name="describe-job-execution"></a>

Jalankan **DescribeJobExecution** perintah untuk mendapatkan status eksekusi pekerjaan. Anda harus menentukan ID pekerjaan dan nama benda dan, secara opsional, nomor eksekusi untuk mengidentifikasi eksekusi pekerjaan. Berikut ini menunjukkan cara menggambarkan eksekusi pekerjaan:

```
aws iot describe-job-execution --job-id 017 --thing-name thingOne
```

Perintah mengembalikan file [https://docs.aws.amazon.com/iot/latest/apireference/API_JobExecution.html](https://docs.aws.amazon.com/iot/latest/apireference/API_JobExecution.html). Contoh:

```
{
    "execution": {
        "jobId": "017", 
        "executionNumber": 4516820379,
        "thingArn": "arn:aws:iot:us-east-1:123456789012:thing/thingOne", 
        "versionNumber": 123,
        "createdAt": 1489084805.285, 
        "lastUpdatedAt": 1489086279.937, 
        "startedAt": 1489086279.937, 
        "status": "IN_PROGRESS",
        "approximateSecondsBeforeTimedOut": 100,
        "statusDetails": {
            "status": "IN_PROGRESS", 
            "detailsMap": {
                "percentComplete": "10"
            }
        }
    }
}
```

## Hapus eksekusi pekerjaan
<a name="delete-job-execution"></a>

Jalankan **DeleteJobExecution** perintah untuk menghapus eksekusi pekerjaan. Anda harus menentukan ID pekerjaan, nama benda, dan nomor eksekusi untuk mengidentifikasi eksekusi pekerjaan. Berikut ini menunjukkan cara menghapus eksekusi pekerjaan:

```
aws iot delete-job-execution --job-id 017 --thing-name thingOne --execution-number 1234567890 --force|--no-force
```

Perintah tidak menampilkan output.

Secara default, status eksekusi pekerjaan harus `QUEUED` atau dalam status terminal (`SUCCEEDED`,,`FAILED`,`REJECTED`, `TIMED_OUT``REMOVED`, atau`CANCELED`). Jika tidak, kesalahan akan muncul. Untuk menghapus eksekusi pekerjaan dengan status`IN_PROGRESS`, Anda dapat mengatur `force` parameter ke`true`.

**Awas**  
Saat Anda menghapus eksekusi pekerjaan dengan status`IN_PROGRESS`, perangkat yang menjalankan pekerjaan tidak dapat mengakses informasi pekerjaan atau memperbarui status eksekusi pekerjaan. Berhati-hatilah dan pastikan perangkat dapat pulih ke keadaan yang valid.