

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

# AWS IoT Device Management Katalog Paket Perangkat Lunak
<a name="software-package-catalog"></a>

Dengan AWS IoT Device Management Software Package Catalog, Anda dapat menyimpan inventaris paket perangkat lunak dan versinya. [Anda dapat mengaitkan versi paket dengan hal-hal individual dan grup hal AWS IoT dinamis, dan menerapkannya melalui proses atau AWS IoT pekerjaan internal.](https://docs.aws.amazon.com/iot/latest/developerguide/iot-jobs.html) 

Paket perangkat lunak berisi satu atau lebih versi paket, yang merupakan kumpulan file yang dapat digunakan sebagai satu unit. Versi Package dapat berisi firmware, pembaruan sistem operasi, aplikasi perangkat, konfigurasi, dan patch keamanan. Saat perangkat lunak berkembang dari waktu ke waktu, Anda dapat membuat versi paket baru dan menyebarkannya ke armada Anda. 

Hub paket AWS IoT perangkat lunak terletak di dalam AWS IoT Core. Anda dapat menggunakan hub untuk mendaftarkan dan memelihara inventaris dan metadata paket perangkat lunak Anda secara terpusat, yang membuat katalog paket perangkat lunak dan versinya. Anda dapat memilih untuk mengelompokkan perangkat berdasarkan paket perangkat lunak dan versi paket yang digunakan pada perangkat. Fitur ini memberikan kesempatan untuk menyimpan inventaris paket sisi perangkat sebagai perangkat bayangan, asosiasi, dan grup bernama berdasarkan versi, dan memvisualisasikan distribusi versi paket di seluruh armada dengan menggunakan metrik armada.

Jika Anda memiliki sistem penyebaran perangkat lunak internal yang dibuat, Anda dapat terus menggunakan proses itu untuk menyebarkan versi paket Anda. Jika Anda tidak memiliki proses penyebaran yang ditetapkan atau jika Anda mau, sebaiknya gunakan [AWS IoT lowongan](https://docs.aws.amazon.com/iot/latest/developerguide/iot-jobs.html) untuk menggunakan fitur di Katalog Paket Perangkat Lunak. Untuk informasi lebih lanjut, lihat [Mempersiapkan AWS IoT pekerjaan](https://docs.aws.amazon.com/iot/latest/developerguide/preparing-jobs-for-service-package-catalog.html).

**Topics**
+ [Mempersiapkan untuk menggunakan Katalog Paket Perangkat Lunak](preparing-to-use-software-package-catalog.md)
+ [Mempersiapkan keamanan](preparing-security.md)
+ [Mempersiapkan pengindeksan armada](preparing-fleet-indexing.md)
+ [Mempersiapkan AWS IoT Pekerjaan](preparing-jobs-for-service-package-catalog.md)
+ [Memulai dengan Software Package Catalog](getting-started-with-software-package-catalog.md)

# Mempersiapkan untuk menggunakan Katalog Paket Perangkat Lunak
<a name="preparing-to-use-software-package-catalog"></a>

Bagian berikut memberikan ikhtisar siklus hidup versi paket dan informasi untuk menggunakan Katalog AWS IoT Device Management Paket Perangkat Lunak. 

## Siklus hidup versi paket
<a name="package-version-lifecycle"></a>

Versi paket dapat berkembang melalui status siklus hidup berikut:`draft`,, `published` dan. `deprecated` Bisa juga`deleted`.

![\[Siklus hidup versi paket dengan draf, diterbitkan, dan tidak digunakan lagi. Itu juga bisa dihapus.\]](http://docs.aws.amazon.com/id_id/iot/latest/developerguide/images/package-catalog-version-lifecycle.png)

+ **Draf**

  Saat Anda membuat versi paket, itu dalam `draft` keadaan. Keadaan ini menunjukkan bahwa paket perangkat lunak sedang dipersiapkan atau tidak lengkap.

  Sementara versi paket dalam status ini, Anda tidak dapat menerapkannya. Anda dapat mengedit deskripsi, atribut, dan tag versi paket.

  Anda dapat mentransisikan versi paket yang berada dalam `draft` status ke `published` atau menjadi `deleted` dengan menggunakan konsol, atau dengan mengeluarkan operasi [UpdatePackageVersion](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdatePackageVersion.html)atau [DeletePackageVersion](https://docs.aws.amazon.com/iot/latest/apireference/API_DeletePackageVersion.html)API.
+ **Diterbitkan**

  Ketika versi paket Anda siap untuk digunakan, transisi versi paket ke `published` status. Saat dalam keadaan ini, Anda dapat memilih untuk mengidentifikasi versi paket sebagai versi default dengan mengedit paket perangkat lunak di konsol atau melalui operasi [UpdatePackage](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdatePackage.html)API. Dalam keadaan ini, Anda hanya dapat mengedit deskripsi dan tag.

  Anda dapat mentransisikan versi paket yang berada dalam `published` status ke `deprecated` atau menjadi `deleted` dengan menggunakan konsol, atau mengeluarkan operasi [UpdatePackageVersion](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdatePackageVersion.html)atau [DeletePackageVersion](https://docs.aws.amazon.com/iot/latest/apireference/API_DeletePackageVersion.html)API.
+ **Usang**

  Jika versi paket baru tersedia, Anda dapat mentransisikan versi paket sebelumnya ke`deprecated`. Anda masih dapat menerapkan pekerjaan dengan versi paket yang tidak digunakan lagi. Anda juga dapat menamai versi paket usang sebagai versi default, dan hanya mengedit deskripsi dan tag. 

  Pertimbangkan untuk mentransisikan versi paket ke `deprecated` saat versi sudah usang, tetapi Anda masih memiliki perangkat di lapangan menggunakan versi yang lebih lama atau perlu mempertahankannya karena ketergantungan run-time. 

  Anda dapat mentransisikan versi paket yang berada dalam `deprecated ` status ke `published` atau menjadi `deleted` dengan menggunakan konsol, atau mengeluarkan operasi [UpdatePackageVersion](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdatePackageVersion.html)atau [DeletePackageVersion](https://docs.aws.amazon.com/iot/latest/apireference/API_DeletePackageVersion.html)API.
+ **Dihapus**

  Jika Anda tidak lagi bermaksud menggunakan versi paket, Anda dapat menghapusnya dengan menggunakan konsol atau mengeluarkan operasi [DeletePackageVersion](https://docs.aws.amazon.com/iot/latest/apireference/API_DeletePackageVersion.html)API.
**catatan**  
Jika Anda menghapus versi paket saat ada pekerjaan tertunda yang mereferensikannya, Anda akan menerima pesan kesalahan saat pekerjaan berhasil diselesaikan dan mencoba memperbarui bayangan bernama yang dicadangkan.  
 Jika versi paket perangkat lunak yang ingin Anda hapus dinamai sebagai versi paket default, Anda harus terlebih dahulu memperbarui paket untuk memberi nama versi lain sebagai default atau membiarkan bidang tidak disebutkan namanya. Anda dapat melakukan ini dengan menggunakan konsol atau operasi [UpdatePackageVersion](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdatePackageVersion.html)API. (Untuk menghapus versi paket bernama apa pun sebagai default, setel [unsetDefaultVersion](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdatePackage.html#iot-UpdatePackage-request-unsetDefaultVersion)parameter ke true saat Anda mengeluarkan operasi [UpdatePackage](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdatePackage.html)API).

  Jika Anda menghapus paket perangkat lunak melalui konsol, itu akan menghapus semua versi paket yang terkait dengan paket itu, kecuali satu dinamai sebagai versi default.

## Konvensi penamaan versi Package
<a name="package-version-naming"></a>

Saat Anda memberi nama versi paket, penting untuk merencanakan dan menerapkan strategi penamaan logis sehingga Anda dan orang lain dapat dengan mudah mengidentifikasi versi paket terbaru dan perkembangan versi. Anda harus memberikan nama versi saat membuat versi paket, tetapi strategi dan formatnya sebagian besar tergantung pada kasus bisnis Anda.

Sebagai praktik terbaik, kami sarankan menggunakan format Versi [SemVer](https://semver.org/)Semantik. Misalnya, `1.2.3` di mana `1` versi utama untuk perubahan yang tidak kompatibel secara fungsional, `2` versi utama untuk perubahan yang kompatibel secara fungsional, dan `3` merupakan versi tambalan (untuk perbaikan bug). Untuk informasi selengkapnya, lihat [Versioning Semantik 2.0.0](https://semver.org/). Untuk informasi selengkapnya tentang persyaratan nama versi paket, lihat [versionName](https://docs.aws.amazon.com/iot/latest/apireference/API_CreatePackageVersion.html#API_CreatePackageVersion_RequestSyntax) di panduan referensi AWS IoT API.

## Versi default
<a name="default-version"></a>

Menyetel versi sebagai default adalah opsional. Anda dapat menambah atau menghapus versi paket default. Anda juga dapat menerapkan versi paket yang tidak dinamai sebagai versi default.

Saat Anda membuat versi paket, itu ditempatkan dalam `draft` keadaan dan tidak dapat dinamai sebagai versi default sampai Anda mentransisikan versi paket ke diterbitkan. Software Package Catalog tidak secara otomatis memilih versi sebagai default atau memperbarui versi paket yang lebih baru sebagai default. Anda harus dengan sengaja memberi nama versi paket yang Anda pilih melalui konsol atau dengan mengeluarkan operasi [UpdatePackageVersion](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdatePackageVersion.html)API.

## Atribut versi
<a name="version-attributes"></a>

Atribut versi dan nilainya menyimpan informasi penting tentang versi paket Anda. Kami menyarankan Anda menentukan atribut tujuan umum untuk versi paket atau paket. Misalnya, Anda dapat membuat pasangan nama-nilai untuk platform, arsitektur, sistem operasi, tanggal rilis, penulis, atau URL Amazon S3.

 Saat Anda membuat AWS IoT pekerjaan dengan dokumen pekerjaan, Anda juga dapat memilih untuk menggunakan variabel substitusi (`$parameter`) yang mengacu pada nilai atribut. Untuk informasi selengkapnya, lihat [Mempersiapkan AWS IoT Pekerjaan](https://docs.aws.amazon.com/iot/latest/developerguide/preparing-jobs-for-service-package-catalog.html).

Atribut versi yang digunakan dalam versi paket tidak akan secara otomatis ditambahkan ke bayangan bernama yang dicadangkan dan tidak dapat diindeks atau ditanyakan melalui Pengindeksan Armada secara langsung. Untuk mengindeks atau menanyakan atribut versi paket melalui Fleet Indexing, Anda dapat mengisi atribut version dalam bayangan bernama yang dicadangkan.

Kami merekomendasikan bahwa parameter atribut versi dalam properti yang dilaporkan perangkat penangkapan bayangan bernama yang dicadangkan, seperti sistem operasi dan waktu penginstalan. Mereka juga dapat diindeks dan ditanyakan melalui Fleet Indexing.

Atribut versi tidak diperlukan untuk mengikuti konvensi penamaan tertentu. Anda dapat membuat pasangan nama-nilai untuk memenuhi kebutuhan bisnis Anda. Ukuran gabungan dari semua atribut pada versi paket dibatasi hingga 3KB. Untuk informasi selengkapnya, lihat [Paket perangkat lunak Katalog Paket Perangkat Lunak dan batas versi paket](https://docs.aws.amazon.com/general/latest/gr/iot_device_management.html#software_package_catalog_limits).

**Menggunakan semua atribut dalam dokumen pekerjaan**

Anda dapat menambahkan semua atribut versi paket secara otomatis ke penerapan pekerjaan Anda untuk perangkat yang dipilih. Untuk secara otomatis menggunakan semua atribut versi paket secara terprogram dalam perintah API atau CLI, lihat contoh dokumen pekerjaan berikut:

```
"TestPackage": "${aws:iot:package:TestPackage:version:PackageVersion:attributes}"
```

## Daftar Lengkap Komponen Perangkat Lunak
<a name="software-bill-of-materials"></a>

Tagihan bahan perangkat lunak (SBOM) menyediakan repositori pusat untuk semua aspek paket perangkat lunak Anda. Selain menyimpan paket perangkat lunak dan versi paket, Anda dapat menyimpan tagihan bahan perangkat lunak (SBOM) yang terkait dengan setiap versi paket di Katalog Paket AWS IoT Device Management Perangkat Lunak. Paket perangkat lunak berisi satu atau lebih versi paket dan setiap versi paket terdiri dari satu atau lebih komponen. Masing-masing komponen yang mendukung komposisi versi paket tertentu dapat dijelaskan dan dikatalogkan menggunakan tagihan bahan perangkat lunak. Standar industri untuk tagihan bahan perangkat lunak yang didukung adalah SPDX dan CycloneDX. Ketika SBOM pertama kali dibuat, ia mengalami validasi terhadap format standar industri SPDX dan CycloneDX. Untuk informasi selengkapnya tentang SPDX, lihat System [Package Data Exchange](https://spdx.dev/). [Untuk informasi lebih lanjut tentang CycloneDX, lihat CycloneDX.](https://cyclonedx.org/)

Tagihan materi perangkat lunak menjelaskan semua aspek komponen versi paket tertentu seperti informasi paket, informasi file, dan metadata terkait lainnya. Lihat contoh di bawah ini dari struktur dokumen tagihan bahan perangkat lunak dalam format SPDX:

![\[Contoh SBOM dalam format SPDX.\]](http://docs.aws.amazon.com/id_id/iot/latest/developerguide/images/spdx-2.3-document.png)


### Manfaat Tagihan Material Perangkat Lunak
<a name="spc-sbom-benefits"></a>

Salah satu manfaat utama untuk menambahkan tagihan materi perangkat lunak Anda untuk versi paket di Katalog Paket Perangkat Lunak adalah manajemen kerentanan.

**Manajemen kerentanan**

Menilai dan mengurangi kerentanan Anda terhadap risiko keamanan yang nyata dalam komponen perangkat lunak tetap penting untuk melindungi integritas armada perangkat Anda. Dengan penambahan tagihan perangkat lunak materi yang disimpan dalam Katalog Paket Perangkat Lunak untuk setiap versi paket, Anda dapat secara proaktif mengekspos celah dalam keamanan dengan mengetahui perangkat apa yang berisiko berdasarkan versi paketnya dan SBOM menggunakan solusi manajemen kerentanan internal Anda sendiri. Anda dapat menerapkan perbaikan ke perangkat yang terpengaruh tersebut dan melindungi armada perangkat Anda.

### Perangkat Lunak Bill of Material Storage
<a name="spc-sbom-storage"></a>

Tagihan bahan perangkat lunak (SBOM) untuk setiap versi paket perangkat lunak disimpan dalam bucket Amazon S3 menggunakan fitur versi Amazon S3. Bucket Amazon S3 yang menyimpan SBOM harus berada di wilayah yang sama tempat versi paket dibuat. Bucket Amazon S3 yang menggunakan fitur pembuatan versi mempertahankan beberapa varian objek dalam bucket yang sama. Untuk informasi selengkapnya tentang penggunaan pembuatan versi di bucket Amazon S3, [lihat Menggunakan pembuatan versi di bucket Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Versioning.html).

**catatan**  
Setiap versi paket perangkat lunak dapat memiliki beberapa file SBOM yang dilampirkan padanya, tetapi file SBOM harus disimpan dalam satu file arsip zip.

Kunci Amazon S3 spesifik dan ID versi untuk bucket Anda digunakan untuk mengidentifikasi secara unik setiap versi tagihan materi perangkat lunak untuk versi paket.

**catatan**  
Untuk versi paket dengan satu file SBOM, Anda dapat menyimpan file SBOM itu di bucket Amazon S3 Anda sebagai file arsip zip.  
Untuk versi paket dengan beberapa file SBOM, Anda harus menempatkan semua file SBOM dalam satu file arsip zip dan kemudian menyimpan file arsip zip itu di bucket Amazon S3 Anda.  
Semua file SBOM yang disimpan dalam file arsip zip tunggal di kedua skenario diformat sebagai file SPDX atau CycloneDX .json.

**Kebijakan Izin**

Agar AWS IoT bertindak sebagai prinsipal yang ditentukan untuk mengakses file arsip zip SBOM yang disimpan di bucket Amazon S3, Anda memerlukan kebijakan izin berbasis sumber daya. Lihat contoh berikut untuk kebijakan izin berbasis sumber daya yang benar:

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": [
                    "iot.amazonaws.com"
                ]
        },
            "Action": "s3:*",
            "Resource": "arn:aws:s3:::bucketName/*"
        }
    ]
}
```

Untuk informasi selengkapnya tentang kebijakan izin berbasis sumber daya, lihat [AWS IoT kebijakan berbasis sumber daya](security_iam_service-with-iam.md#security_iam_service-with-iam-resource-based-policies)

**Memperbarui SBOM**

Anda dapat memperbarui tagihan materi perangkat lunak sesering yang diperlukan untuk melindungi dan meningkatkan armada perangkat Anda. Setiap kali tagihan materi perangkat lunak diperbarui di bucket Amazon S3 Anda, ID versi berubah dan Anda harus mengaitkan URL bucket Amazon S3 baru dengan versi paket perangkat lunak yang sesuai. Anda akan melihat ID versi baru di kolom **ID versi Objek Amazon S3** pada halaman versi paket di. Konsol Manajemen AWS Selain itu, Anda dapat menggunakan operasi API `[GetPackageVersion](https://docs.aws.amazon.com/iot/latest/apireference/API_GetPackageVersion.html)` atau perintah CLI `[get-package-version](https://docs.aws.amazon.com/cli/latest/reference/iot/get-package-version.html)` untuk melihat ID versi baru.

**catatan**  
Memperbarui tagihan materi perangkat lunak Anda, yang akan menyebabkan ID versi baru, tidak akan menyebabkan versi paket baru dibuat.

Untuk informasi selengkapnya tentang kunci objek Amazon S3, lihat [Membuat nama kunci objek](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-keys.html).

## Mengaktifkan pengindeksan AWS IoT armada
<a name="enable-fleet-indexing"></a>

Mengaktifkan pengindeksan AWS IoT armada adalah persyaratan untuk menggunakan Katalog AWS IoT Device Management Paket Perangkat Lunak. Untuk memanfaatkan pengindeksan AWS IoT armada dengan Software Package Catalog, tetapkan shadow (`$package`) bernama reserved sebagai sumber data untuk setiap perangkat yang ingin Anda indeks dan kumpulkan metrik. Untuk informasi lebih lanjut tentang bayangan bernama yang dicadangkan, lihat[Cadangan bernama bayangan](#reserved-named-shadow).

Pengindeksan armada memberikan dukungan yang memungkinkan AWS IoT hal-hal dikelompokkan melalui grup benda dinamis yang difilter oleh versi paket perangkat lunak. Misalnya, pengindeksan armada dapat mengidentifikasi hal-hal yang telah atau tidak memiliki versi paket tertentu yang diinstal, tidak memiliki versi paket yang diinstal, atau cocok dengan pasangan nama-nilai tertentu. Terakhir, pengindeksan armada menyediakan metrik standar dan kustom yang dapat Anda gunakan untuk mendapatkan wawasan tentang status armada perangkat Anda. Untuk informasi selengkapnya, lihat [Mempersiapkan pengindeksan armada](preparing-fleet-indexing.md).

**catatan**  
Mengaktifkan pengindeksan armada untuk Katalog Paket Perangkat Lunak menimbulkan biaya layanan standar. Untuk informasi lebih lanjut, lihat [AWS IoT Device Management, Harga](https://aws.amazon.com/iot-device-management/pricing/). 

## Cadangan bernama bayangan
<a name="reserved-named-shadow"></a>

Bayangan bernama yang dicadangkan`$package`,, mencerminkan keadaan paket perangkat lunak yang diinstal perangkat dan versi paket. Pengindeksan armada menggunakan bayangan bernama cadangan sebagai sumber data untuk membuat metrik standar dan kustom sehingga Anda dapat menanyakan status armada Anda. Untuk informasi selengkapnya, lihat [Mempersiapkan pengindeksan armada](https://docs.aws.amazon.com/iot/latest/developerguide/preparing-fleet-indexing.html).

Bayangan bernama cadangan mirip dengan [bayangan bernama](https://docs.aws.amazon.com/iot/latest/developerguide/iot-device-shadows.html) dengan pengecualian bahwa namanya telah ditentukan sebelumnya dan Anda tidak dapat mengubahnya. Selain itu, bayangan bernama yang dicadangkan tidak diperbarui dengan metadata, dan hanya menggunakan kata kunci dan kata kunci`version`. `attributes`

Permintaan pembaruan yang menyertakan kata kunci lain`description`, seperti, akan menerima respons kesalahan di bawah `rejected` topik. Untuk informasi selengkapnya, lihat [Pesan galat Device Shadow](https://docs.aws.amazon.com/iot/latest/developerguide/device-shadow-error-messages.html).

Ini dapat dibuat saat Anda membuat AWS IoT sesuatu melalui konsol, ketika AWS IoT pekerjaan berhasil menyelesaikan dan memperbarui bayangan, dan jika Anda mengeluarkan operasi [https://docs.aws.amazon.com/iot/latest/apireference/API_iotdata_UpdateThingShadow.html](https://docs.aws.amazon.com/iot/latest/apireference/API_iotdata_UpdateThingShadow.html)API. Untuk informasi selengkapnya, lihat [UpdateThingShadow](https://docs.aws.amazon.com/iot/latest/developerguide/device-shadow-rest-api.html#API_UpdateThingShadow)di panduan AWS IoT Core pengembang. 

**catatan**  
Mengindeks bayangan bernama cadangan tidak dihitung terhadap jumlah bayangan bernama yang dapat diindeks oleh pengindeksan armada. Untuk informasi selengkapnya, lihat [batas pengindeksan AWS IoT Device Management armada dan kuota](https://docs.aws.amazon.com/general/latest/gr/iot_device_management.html#fleet-indexing-limits). Selain itu, jika Anda memilih untuk meminta AWS IoT lowongan memperbarui bayangan bernama yang dicadangkan saat pekerjaan berhasil diselesaikan, panggilan API dihitung untuk Device Shadow dan operasi registri Anda dan dapat dikenakan biaya. Untuk informasi selengkapnya, lihat [batas AWS IoT Device Management pekerjaan dan kuota serta](https://docs.aws.amazon.com/general/latest/gr/iot_device_management.html#job-limits) tipe data [IndexingFilter](https://docs.aws.amazon.com/iot/latest/apireference/API_IndexingFilter.html)API.

**Struktur `$package` bayangan**

Bayangan bernama cadangan berisi yang berikut:

```
{
    "state": {
        "reported": {
            "<packageName>": {
                "version": "",
                "attributes": {
                }
            }
        }
    },
    "version" : 1
    "timestamp" : 1672531201
}
```

Properti bayangan diperbarui dengan informasi berikut:
+  `<packageName>`: Nama paket perangkat lunak yang diinstal, yang diperbarui dengan parameter [PackageName](https://docs.aws.amazon.com/iot/latest/apireference/API_CreatePackage.html#API_CreatePackage_RequestSyntax). 
+  `version`: Nama versi paket yang diinstal, yang diperbarui dengan parameter [versionName](https://docs.aws.amazon.com/iot/latest/apireference/API_CreatePackageVersion.html#API_CreatePackageVersion_RequestSyntax). 
+  `attributes`: Metadata opsional disimpan oleh perangkat dan diindeks oleh pengindeksan Armada. Hal ini memungkinkan pelanggan untuk query indeks mereka berdasarkan data yang disimpan. 
+ `version`: Nomor versi bayangan. Ini secara otomatis bertambah setiap kali bayangan diperbarui dan dimulai pada`1`. 
+ `timestamp`: Menunjukkan kapan bayangan terakhir diperbarui dan direkam dalam [waktu Unix](https://en.wikipedia.org/wiki/Unix_time).

Untuk informasi selengkapnya tentang format dan perilaku bayangan bernama, lihat [Urutan Layanan AWS IoT Device Shadow pesan](https://docs.aws.amazon.com/iot/latest/developerguide/iot-device-shadows.html#message-ordering). 

## Menghapus paket perangkat lunak dan versi paketnya
<a name="deleting-packages-and-versions"></a>

Sebelum Anda menghapus paket perangkat lunak, lakukan hal berikut:
+ Konfirmasikan bahwa paket dan versinya tidak digunakan secara aktif. 
+ Hapus semua versi terkait terlebih dahulu. Jika salah satu versi ditetapkan sebagai **versi default**, Anda harus menghapus versi default bernama dari paket. Karena menunjuk versi default adalah opsional, tidak ada konflik menghapusnya. Untuk menghapus versi default dari paket perangkat lunak, edit paket melalui konsol atau gunakan operasi [ UpdatePackageVersion](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdatePackageVersion.html)API.

Selama tidak ada versi paket default bernama, Anda dapat menggunakan konsol untuk menghapus paket perangkat lunak dan semua versi paketnya juga akan dihapus. Jika Anda menggunakan panggilan API untuk menghapus paket perangkat lunak, Anda harus menghapus versi paket terlebih dahulu dan kemudian paket perangkat lunak. 

# Mempersiapkan keamanan
<a name="preparing-security"></a>

Bagian ini membahas persyaratan keamanan utama untuk Katalog Paket AWS IoT Device Management Perangkat Lunak.

## Otentikasi berbasis sumber daya
<a name="resource-based-authorization"></a>

Software Package Catalog menggunakan otorisasi berbasis sumber daya untuk memberikan keamanan tambahan saat memperbarui perangkat lunak pada armada Anda. Ini berarti Anda harus membuat kebijakan AWS Identity and Access Management (IAM) yang memberikan hak untuk melakukan`create`,,, `read` `update``delete`, dan `list` tindakan untuk paket perangkat lunak dan versi paket, dan mereferensikan paket perangkat lunak dan versi paket tertentu yang ingin Anda terapkan di bagian tersebut. `Resources` Anda juga memerlukan hak-hak ini sehingga Anda dapat memperbarui [bayangan bernama yang dilindungi undang-undang](https://docs.aws.amazon.com/iot/latest/developerguide/preparing-to-use-software-package-catalog.html#reserved-named-shadow). Anda mereferensikan paket perangkat lunak dan versi paket dengan menyertakan Nama Sumber Daya Amazon (ARN) untuk setiap entitas.

**catatan**  
Jika Anda bermaksud kebijakan memberikan hak untuk panggilan API versi paket (seperti [CreatePackageVersion](https://docs.aws.amazon.com/iot/latest/apireference/API_CreatePackageVersion.html), [UpdatePackageVersion](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdatePackageVersion.html), [DeletePackageVersion](https://docs.aws.amazon.com/iot/latest/apireference/API_DeletePackageVersion.html)), maka Anda perlu *menyertakan* paket perangkat lunak dan versi paket ARNs dalam kebijakan. Jika Anda bermaksud kebijakan untuk memberikan hak untuk panggilan API paket perangkat lunak (seperti [CreatePackage](https://docs.aws.amazon.com/iot/latest/apireference/API_CreatePackage.html), [UpdatePackage](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdatePackage.html), dan [DeletePackage](https://docs.aws.amazon.com/iot/latest/apireference/API_DeletePackage.html)) maka Anda harus menyertakan hanya paket perangkat lunak ARN dalam kebijakan.

Struktur paket perangkat lunak dan versi paket ARNs sebagai berikut:
+ Paket perangkat lunak: `arn:aws:iot:<region>:<accountID>:package/<packageName>/package` 
+ Versi Package: `arn:aws:iot:<region>:<accountID>:package/<packageName>/version/<versionName>` 

**catatan**  
Ada hak terkait lainnya yang mungkin Anda sertakan dalam kebijakan ini. Misalnya, Anda mungkin menyertakan ARN untuk`job`,`thinggroup`, dan. `jobtemplate` Untuk informasi selengkapnya dan daftar lengkap opsi kebijakan, lihat [Mengamankan pengguna dan perangkat dengan AWS IoT Lowongan](https://docs.aws.amazon.com/iot/latest/developerguide/iot-jobs-security.html).

Misalnya, jika Anda memiliki paket perangkat lunak dan versi paket yang diberi nama sebagai berikut:
+ AWS IoT hal: `myThing`
+ Nama Package: `samplePackage`
+ Versi `1.0.0`

Kebijakan ini mungkin terlihat seperti contoh berikut:

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:createPackage",
                "iot:createPackageVersion",
                "iot:updatePackage",
                "iot:updatePackageVersion"
            ],
            "Resource": [
               "arn:aws:iot:us-east-1:111122223333:package/samplePackage",
               "arn:aws:iot:us-east-1:111122223333:package/samplePackage/version/1.0.0"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "iot:GetThingShadow",
                "iot:UpdateThingShadow"
            ],
            "Resource": "arn:aws:iot:us-east-1:111122223333:thing/myThing/$package"
        }
    ]
}
```

## AWS IoT Hak pekerjaan untuk menyebarkan versi paket
<a name="job-rights-deploy-versions"></a>

Untuk tujuan keamanan, penting bagi Anda untuk memberikan hak untuk menyebarkan paket dan versi paket, dan memberi nama paket dan versi paket tertentu yang diizinkan untuk diterapkan. Untuk melakukannya, Anda membuat peran dan kebijakan IAM yang memberikan izin untuk menerapkan pekerjaan dengan versi paket. Kebijakan harus menentukan versi paket tujuan sebagai sumber daya.

**Kebijakan IAM**

Kebijakan IAM memberikan hak untuk membuat pekerjaan yang mencakup paket dan versi yang disebutkan di bagian tersebut`Resource`.

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:CreateJob",
                "iot:CreateJobTemplate"
            ],
            "Resource":[
                "arn:aws:iot:*:111122223333:job/<jobId>",
                "arn:aws:iot:*:111122223333:thing/<thingName>/$package",
                "arn:aws:iot:*:111122223333:thinggroup/<thingGroupName>",
                "arn:aws:iot:*:111122223333:jobtemplate/<jobTemplateName>",
                "arn:aws:iot:*:111122223333:package/<packageName>/version/<versionName>"
            ]
        }
    ]
}
```

**catatan**  
Jika Anda ingin menerapkan pekerjaan yang menghapus instalasi paket perangkat lunak dan versi paket, Anda harus mengotorisasi ARN di mana versi paket berada, seperti berikut `$null` ini:

```
arn:aws:iot:<regionCode>:111122223333:package/<packageName>/version/$null
```

## AWS IoT Hak pekerjaan untuk memperbarui bayangan bernama yang dilindungi undang-undang
<a name="job-rights-update-reserved-named-shadow"></a>

Untuk mengizinkan lowongan memperbarui bayangan nama yang dicadangkan saat pekerjaan berhasil diselesaikan, Anda harus membuat peran dan kebijakan IAM. Ada dua cara Anda dapat melakukan ini di AWS IoT konsol. Yang pertama adalah ketika Anda membuat paket perangkat lunak di konsol. Jika Anda melihat kotak dialog **Aktifkan dependensi untuk manajemen paket**, Anda dapat memilih untuk menggunakan peran yang ada atau membuat peran baru. Atau, di AWS IoT konsol, pilih **Pengaturan**, pilih **Kelola pengindeksan**, lalu **Kelola pengindeksan untuk paket dan versi perangkat**. 

**catatan**  
Jika Anda memilih agar layanan AWS IoT Job memperbarui bayangan bernama yang dicadangkan saat pekerjaan berhasil diselesaikan, panggilan API akan dihitung untuk **Device Shadow dan operasi registri** Anda dan dapat dikenakan biaya. Untuk informasi selengkapnya, lihat [harga AWS IoT Core](https://aws.amazon.com/iot-core/pricing/).

Saat Anda menggunakan opsi **Buat peran**, nama peran yang dihasilkan dimulai dengan `aws-iot-role-update-shadows` dan berisi kebijakan berikut:

**Menyiapkan peran**

**Izin**  
Kebijakan izin memberikan hak untuk melakukan kueri dan memperbarui bayangan benda. `$package`Parameter dalam ARN sumber daya menargetkan bayangan bernama yang dicadangkan.    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "iot:DescribeEndpoint",
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "iot:GetThingShadow",
                "iot:UpdateThingShadow"
            ],
            "Resource": [
            "arn:aws:iot:us-east-1:111122223333:thing/<thingName>/$package"
            ]
        }
    ]
}
```

**Hubungan kepercayaan**  
Selain kebijakan izin, peran memerlukan hubungan kepercayaan AWS IoT Core sehingga entitas dapat mengambil peran dan memperbarui bayangan bernama yang dicadangkan.    
****  

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

**Menyiapkan kebijakan pengguna**

**iam: izin PassRole **  
Terakhir, Anda harus memiliki izin untuk meneruskan peran AWS IoT Core saat Anda memanggil operasi [ UpdatePackageConfiguration](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdatePackageConfiguration.html)API.    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iam:PassRole",
                "iot:UpdatePackageConfiguration"
            ],
            "Resource": "arn:aws:iam::111122223333:role/<roleName>"
        }
    ]
}
```

## AWS IoT Izin pekerjaan untuk mengunduh dari Amazon S3
<a name="job-rights-download-job-document"></a>

Dokumen pekerjaan disimpan di Amazon S3. Anda merujuk ke file ini ketika Anda mengirim melalui AWS IoT Jobs. Anda harus memberikan AWS IoT Jobs dengan hak untuk men-download file (`s3:GetObject`). Anda juga harus mengatur hubungan kepercayaan antara Amazon S3 dan AWS IoT Jobs. Untuk petunjuk untuk membuat kebijakan ini, lihat [Ditandatangani sebelumnya URLs](https://docs.aws.amazon.com/iot/latest/developerguide/create-manage-jobs.html#create-manage-jobs-presigned-URLs) dalam [Mengelola Pekerjaan](https://docs.aws.amazon.com/iot/latest/developerguide/create-manage-jobs.html).

## Izin untuk memperbarui tagihan perangkat lunak materi untuk versi paket
<a name="job-rights-update-sbom"></a>

Untuk memperbarui tagihan materi perangkat lunak untuk versi paket dalam`Draft`,`Published`, atau status `Deprecated` siklus hidup, Anda memerlukan AWS Identity and Access Management peran dan kebijakan untuk menemukan tagihan materi perangkat lunak baru di Amazon S3 dan memperbarui versi paket di. AWS IoT Core

Pertama, Anda akan menempatkan tagihan materi perangkat lunak yang diperbarui di bucket Amazon S3 berversi Anda dan memanggil operasi API dengan `[UpdatePackageVersion](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdatePackageVersion.html)` `sboms` parameter yang disertakan. Selanjutnya, kepala sekolah resmi Anda akan mengambil peran IAM yang Anda buat, menemukan tagihan materi perangkat lunak yang diperbarui di Amazon S3, dan memperbarui versi paket AWS IoT Core untuk Katalog Paket Perangkat Lunak.

Kebijakan berikut diperlukan untuk melakukan pembaruan ini:

**Kebijakan**
+ **Kebijakan kepercayaan** Kebijakan membangun hubungan kepercayaan dengan kepala sekolah yang berwenang dengan asumsi peran IAM sehingga dapat menemukan tagihan materi perangkat lunak yang diperbarui dari bucket berversi Anda di Amazon S3 dan memperbarui versi paket di. AWS IoT Core
  +   
****  

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

    ```
    {
        "Version":"2012-10-17",		 	 	 
        "Statement": [
            {
                "Effect": "Allow",
                "Principal": {
                    "Service": "iot.amazonaws.com"
            },
                "Action": "sts:AssumeRole"
            }
        ]
    }
    ```
+ **Kebijakan izin**: Kebijakan untuk mengakses bucket berversi Amazon S3 tempat tagihan materi perangkat lunak disimpan untuk versi paket dan memperbarui versi paket. AWS IoT Core
  +   
****  

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

    ```
    {
        "Version":"2012-10-17",		 	 	 
        "Statement": [
            {
                "Effect": "Allow",
                "Action": [
                    "iot:UpdatePackageVersion"
                ],
                "Resource": [
                    "arn:aws:iot:*:111122223333:package/<packageName>/version/<versionName>"
                ]
            }
        ]
    }
    ```
+ **Lulus izin peran**: Kebijakan yang memberikan izin untuk meneruskan peran IAM ke Amazon S3 dan AWS IoT Core saat Anda memanggil operasi API. `[UpdatePackageVersion](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdatePackageVersion.html)`
  +   
****  

    ```
    {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
        {
          "Effect": "Allow",
          "Action": [
            "iam:PassRole",
            "s3:GetObject"
          ],
          "Resource": [
            "arn:aws:s3:::awsexamplebucket1"
          ]
        }
      ]
    }
    ```
  +   
****  

    ```
    {
        "Version":"2012-10-17",		 	 	 
        "Statement": [
            {
                "Effect": "Allow",
                "Action": [
                    "iam:PassRole",
                    "iot:UpdatePackageVersion"
                ],
                "Resource": "arn:aws:iam::111122223333:role/<roleName>"
            }
        ]
    }
    ```

**catatan**  
Anda tidak dapat memperbarui tagihan materi perangkat lunak pada versi paket yang telah dialihkan ke status siklus `Deleted` hidup.

Untuk informasi selengkapnya tentang membuat peran IAM untuk AWS layanan, lihat [Membuat peran untuk mendelegasikan izin ke](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html) layanan. AWS 

[Untuk informasi selengkapnya tentang membuat bucket Amazon S3 dan mengunggah objek ke dalamnya, lihat [Membuat bucket](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html) dan Mengunggah objek.](https://docs.aws.amazon.com/AmazonS3/latest/userguide/upload-objects.html)

# Mempersiapkan pengindeksan armada
<a name="preparing-fleet-indexing"></a>

Dengan pengindeksan AWS IoT armada, Anda dapat mencari dan mengumpulkan data dengan menggunakan shadow () `$package` bernama reserved. Anda juga dapat mengelompokkan AWS IoT hal-hal dengan menanyakan [grup hal yang dinamis [Cadangan bernama bayangan](preparing-to-use-software-package-catalog.md#reserved-named-shadow) dan dinamis](https://docs.aws.amazon.com/iot/latest/developerguide/dynamic-thing-groups.html). Misalnya, Anda dapat menemukan informasi tentang AWS IoT hal-hal mana yang menggunakan versi paket tertentu, tidak menginstal versi paket tertentu, atau tidak menginstal versi paket apa pun. Anda dapat memperoleh wawasan lebih lanjut dengan menggabungkan atribut. Misalnya, mengidentifikasi hal-hal yang memiliki versi tertentu dan jenis hal tertentu (seperti versi 1.0.0 dan jenis pump\$1sensor). Untuk informasi selengkapnya, lihat [Pengindeksan armada](https://docs.aws.amazon.com/iot/latest/developerguide/iot-indexing.html).

## Mengatur `$package` bayangan sebagai sumber data
<a name="shadow-as-data-source"></a>

Untuk menggunakan pengindeksan armada dengan Katalog Paket Perangkat Lunak, Anda harus mengaktifkan pengindeksan armada, mengatur bayangan bernama sebagai sumber data, dan mendefinisikan `$package` sebagai filter bayangan bernama. Jika Anda belum mengaktifkan pengindeksan armada, Anda dapat mengaktifkannya dalam proses ini. Dari [AWS IoT Core](https://console.aws.amazon.com/iot/home)konsol, buka **Pengaturan**, pilih **Kelola pengindeksan**, lalu **Tambahkan bayangan bernama**, **Tambahkan paket dan versi perangkat lunak perangkat, dan** **Perbarui**. Untuk informasi selengkapnya, lihat [Mengelola pengindeksan hal](https://docs.aws.amazon.com/iot/latest/developerguide/managing-fleet-index.html#thing-index). 

Sebagai alternatif, Anda dapat mengaktifkan pengindeksan armada saat Anda membuat paket pertama Anda. Saat kotak dialog **Aktifkan dependensi untuk manajemen paket** muncul, pilih opsi untuk menambahkan paket perangkat lunak dan versi sebagai sumber data ke pengindeksan armada. Dengan memilih opsi ini, Anda juga mengaktifkan pengindeksan armada.

**catatan**  
Mengaktifkan pengindeksan armada untuk Katalog Paket Perangkat Lunak menimbulkan biaya layanan standar. Untuk informasi lebih lanjut, lihat [AWS IoT Device Management, Harga](https://aws.amazon.com/iot-device-management/pricing/).

## Metrik ditampilkan di konsol
<a name="metrics-displayed-in-console"></a>

![\[Gambar metrik standar\]](http://docs.aws.amazon.com/id_id/iot/latest/developerguide/images/package-catalog-discovery-metrics.png)


Pada halaman detail paket perangkat lunak AWS IoT konsol, panel **Discovery** menampilkan metrik standar yang dicerna melalui bayangan. `$package`
+ Bagan **distribusi versi saat ini** menunjukkan jumlah perangkat dan persentase untuk 10 versi paket terbaru yang terkait dengan AWS IoT sesuatu dari semua perangkat yang terkait dengan paket perangkat lunak ini. **Catatan:** **Jika paket perangkat lunak memiliki lebih banyak versi paket daripada yang berlabel dalam bagan, Anda dapat menemukannya dikelompokkan dalam Lainnya.**
+ **Bagan Historis** menunjukkan jumlah perangkat yang terkait dengan versi paket yang dipilih selama periode waktu tertentu. Bagan awalnya kosong sampai Anda memilih hingga 5 versi paket dan menentukan rentang tanggal dan interval waktu. Untuk memilih parameter bagan, pilih **Pengaturan**. Data yang ditampilkan dalam **bagan Historis** mungkin berbeda dari bagan **distribusi versi saat ini** karena perbedaan jumlah versi paket yang ditampilkan dan juga karena Anda dapat memilih versi paket mana yang akan dianalisis dalam **bagan Historis**. **Catatan:** Saat Anda memilih versi paket untuk divisualisasikan, versi tersebut dihitung dalam jumlah maksimum batas metrik armada. Untuk informasi selengkapnya, lihat [Batas dan kuota pengindeksan armada](https://docs.aws.amazon.com/general/latest/gr/iot_device_management.html#fleet-indexing-limits).

Untuk metode lain untuk mendapatkan wawasan tentang pengumpulan distribusi versi paket, lihat [Mengumpulkan distribusi versi paket melalui `getBucketsAggregation`](https://docs.aws.amazon.com/iot/latest/developerguide/preparing-fleet-indexing.html#package-version-distribution).

## Pola kueri
<a name="query-patterns"></a>

Pengindeksan armada dengan Katalog Paket Perangkat Lunak menggunakan sebagian besar fitur standar yang didukung (seperti istilah, frasa, dan bidang pencarian). Namun, operator perbandingan (misalnya, kurang dari `<` dan lebih besar dari`>`) dan `range` kueri tidak tersedia untuk `version` kunci shadow (`$package`) bernama cadangan. Kueri ini tersedia untuk `attributes` kuncinya. Untuk informasi selengkapnya, lihat [Sintaks kueri](https://docs.aws.amazon.com/iot/latest/developerguide/query-syntax.html).

### Contoh data
<a name="query-patterns-example-data"></a>

**Catatan:** untuk informasi tentang bayangan bernama yang dicadangkan dan strukturnya, lihat [Bayangan bernama cadangan](https://docs.aws.amazon.com/iot/latest/developerguide/preparing-to-use-software-package-catalog.html#reserved-named-shadow).

Dalam contoh ini, perangkat pertama diberi nama `AnyThing` dan memiliki paket berikut diinstal: 
+ Paket perangkat lunak: `SamplePackage`

  Versi Package: `1.0.0`

  Package ID: `1111`

Bayangan terlihat sebagai berikut:

```
{
    "state": {
        "reported": {
            "SamplePackage": {
                "version": "1.0.0",
                "attributes": {
                    "s3UrlForSamplePackage": "https://EXAMPIEBUCKET.s3.us-west-2.amazonaws.com/exampleCodeFile1",
                    "packageID": "1111"
                    }
            }
        }
    }
}
```

Perangkat kedua diberi nama `AnotherThing` dan memiliki paket berikut diinstal: 
+ Paket perangkat lunak: `SamplePackage`

  Versi Package: `1.0.0`

  Package ID: `1111`
+ Paket perangkat lunak: `OtherPackage`

  Versi Package: `1.2.5`

  Package ID: `2222`

Bayangan terlihat sebagai berikut:

```
{
    "state": {
        "reported": {
            "SamplePackage": {
                "version": "1.0.0",
                "attributes": {
                    "s3UrlForSamplePackage": "https://EXAMPIEBUCKET.s3.us-west-2.amazonaws.com/exampleCodeFile1",
                    "packageID": "1111"
                }
            },
            "OtherPackage": {
                "version": "1.2.5",
                "attributes": {
                    "s3UrlForOtherPackage": "https://EXAMPIEBUCKET.s3.us-west-2.amazonaws.com/exampleCodeFile2",
                    "packageID": "2222"
                    }
            },
        }
    }
}
```

### Kueri Sampel
<a name="sample-queries"></a>

Tabel berikut mencantumkan contoh kueri berdasarkan contoh bayangan perangkat untuk `AnyThing` dan`AnotherThing`. Untuk informasi selengkapnya, lihat [Contoh kueri hal](https://docs.aws.amazon.com/iot/latest/developerguide/example-queries.html). 


**Versi terbaru dari AWS IoT Device Tester untuk FreeRTOS**  

| **Informasi yang diminta** | **Kueri** | **Hasil** | 
| --- | --- | --- | 
|  Hal-hal yang memiliki versi paket tertentu diinstal  |  `shadow.name.$package.reported.SamplePackage.version:1.0.0`  |  `AnyThing`, `OtherThing`  | 
|  Hal-hal yang tidak menginstal versi paket tertentu  |  `NOT shadow.name.$package.reported.OtherPackage.version:1.2.5`  |  `AnyThing`  | 
|  Perangkat apa pun yang menggunakan versi paket yang ID paketnya lebih besar dari 1500  |  `shadow.name.$package.reported.*.attributes.packageID>1500"`  |  `OtherThing`  | 
|  Hal-hal yang memiliki paket tertentu diinstal dan memiliki lebih dari satu paket yang diinstal  |  `shadow.name.$package.reported.SamplePackage.version:1.0.0 AND shadow.name.$package.reported.totalCount:2`  |  `OtherThing`  | 

## Mengumpulkan distribusi versi paket melalui `getBucketsAggregation`
<a name="package-version-distribution"></a>

Selain panel **Discovery** dalam AWS IoT konsol, Anda juga bisa mendapatkan informasi distribusi versi paket dengan menggunakan operasi [https://docs.aws.amazon.com/iot/latest/apireference/API_GetBucketsAggregation.html](https://docs.aws.amazon.com/iot/latest/apireference/API_GetBucketsAggregation.html)API. Untuk mendapatkan informasi distribusi versi paket, Anda harus melakukan hal berikut:
+ Tentukan bidang khusus dalam pengindeksan armada untuk setiap paket perangkat lunak. **Catatan:** Membuat bidang kustom dihitung terhadap [kuota layanan pengindeksan AWS IoT armada](https://docs.aws.amazon.com/general/latest/gr/iot_device_management.html#fleet-indexing-limits). 
+ Format bidang kustom sebagai berikut:

  `shadow.name.$package.reported.<packageName>.version`

Untuk informasi selengkapnya, lihat bagian [Bidang kustom](https://docs.aws.amazon.com/iot/latest/developerguide/managing-fleet-index.html#custom-field) dalam pengindeksan AWS IoT armada.

# Mempersiapkan AWS IoT Pekerjaan
<a name="preparing-jobs-for-service-package-catalog"></a>

AWS IoT Device Management Software Package Catalog memperluas AWS IoT Jobs melalui parameter substitusi, dan integrasi dengan pengindeksan AWS IoT armada, grup benda dinamis, dan AWS IoT benda yang dicadangkan bernama shadow.

**catatan**  
 Untuk menggunakan semua fungsi yang ditawarkan Katalog Paket Perangkat Lunak, Anda harus membuat peran dan kebijakan AWS Identity and Access Management (IAM) ini: [Hak AWS IoT pekerjaan untuk menyebarkan versi paket](https://docs.aws.amazon.com/iot/latest/developerguide/preparing-security.html#job-rights-deploy-versions) dan [hak AWS IoT Pekerjaan untuk memperbarui bayangan bernama yang dilindungi undang-undang](https://docs.aws.amazon.com/iot/latest/developerguide/preparing-security.html#job-rights-update-reserved-named-shadow). Untuk informasi selengkapnya, lihat [Mempersiapkan keamanan](https://docs.aws.amazon.com/iot/latest/developerguide/preparing-security.html).

## Parameter substitusi untuk pekerjaan AWS IoT
<a name="substitution-parameters"></a>

Anda dapat menggunakan parameter substitusi sebagai placeholder dalam dokumen pekerjaan Anda AWS IoT . Ketika layanan pekerjaan menemukan parameter substitusi, itu mengarahkan pekerjaan ke atribut versi perangkat lunak bernama untuk nilai parameter. Anda dapat menggunakan proses ini untuk membuat dokumen pekerjaan tunggal dan meneruskan metadata ke dalam pekerjaan melalui atribut tujuan umum. Misalnya, Anda dapat meneruskan URL Amazon Simple Storage Service (Amazon S3), paket perangkat lunak Nama Sumber Daya Amazon (ARN), atau tanda tangan ke dalam dokumen pekerjaan melalui atribut versi paket. 

Parameter substitusi harus diformat dalam dokumen pekerjaan sebagai berikut:
+ **Nama Paket Perangkat Lunak dan Versi Package**
  + String kosong antara `package::version` mewakili parameter substitusi nama paket perangkat lunak. String kosong antara `version::attribute` mewakili parameter substitusi versi paket perangkat lunak. Lihat contoh berikut untuk menggunakan nama paket dan parameter substitusi verion paket dalam dokumen pekerjaan:. `${aws:iot:package::version::attributes:<attributekey>}`
  + Dokumen pekerjaan akan mengisi otomatis parameter substitusi ini menggunakan Versi *ARN dari detail* versi paket. Jika Anda membuat templat pekerjaan atau pekerjaan untuk penerapan paket tunggal menggunakan perintah API atau CLI, *ARN* Versi untuk versi paket diwakili oleh parameter di dan. `destinationPackageVersions` `CreateJob` `DescribeJob`
+ **Semua Atribut untuk Versi Paket Perangkat Lunak**
  + Lihat contoh berikut untuk menggunakan semua atribut parameter substitusi versi paket perangkat lunak dalam dokumen pekerjaan: `${aws:iot:package:<packageName>:version:<versionName>:attributes}`

**catatan**  
Nama paket, versi paket, dan semua parameter substitusi atribut dapat digunakan bersama-sama. Lihat contoh berikut untuk menggunakan ketiga parameter substitusi dalam dokumen pekerjaan: `${aws:iot:package::version::attributes}`

Dalam contoh berikut, ada paket perangkat lunak bernama `samplePackage` dan memiliki versi paket bernama `2.1.5` yang memiliki atribut berikut:
+ nama:`s3URL`, nilai: `https://EXAMPIEBUCKET.s3.us-west-2.amazonaws.com/exampleCodeFile`
  + Atribut ini mengidentifikasi lokasi file kode yang disimpan dalam Amazon S3.
+ nama:`signature`, nilai: `aaaaabbbbbcccccdddddeeeeefffffggggghhhhhiiiiijjjj`
  + Atribut ini memberikan nilai tanda tangan kode yang dibutuhkan perangkat sebagai tindakan pengamanan. Untuk informasi selengkapnya, lihat [Penandatanganan Kode untuk lowongan kerja](https://docs.aws.amazon.com/iot/latest/developerguide/create-manage-jobs.html#create-manage-jobs-code-signing). **Catatan:** Atribut ini adalah contoh dan tidak diperlukan sebagai bagian dari Katalog Paket Perangkat Lunak atau pekerjaan.

Untuk`s3URL`, parameter dokumen pekerjaan ditulis sebagai berikut:

```
{
"samplePackage": "${aws:iot:package:samplePackage1:version:2.1.5:attributes:s3URL}"
}
```

Untuk`signature`, parameter dokumen pekerjaan ditulis sebagai berikut:

```
{
"samplePackage": "${aws:iot:package:samplePackage1:version:2.1.5:attributes:signature}"
}
```

Dokumen pekerjaan lengkap ditulis sebagai berikut:

```
{
  ...
  "Steps": {
    "uninstall": ["samplePackage"],
    "download": [ 
      { 
        "samplePackage": "${aws:iot:package:samplePackage1:version:2.1.5:attributes:s3URL}"
      },
    ],
    "signature": [
      "samplePackage" : "${aws:iot:package:samplePackage1:version:2.1.5:attributes:signature}"
    ]
  }
}
```

Setelah substitusi dilakukan, dokumen pekerjaan berikut dikerahkan ke perangkat:

```
{
  ...
  "Steps": {
    "uninstall": ["samplePackage"],
    "download": [ 
      { 
        "samplePackage": "https://EXAMPIEBUCKET.s3.us-west-2.amazonaws.com/exampleCodeFile"
      },
    ],
    "signature": [
      "samplePackage" : "aaaaabbbbbcccccdddddeeeeefffffggggghhhhhiiiiijjjj"
    ]
  }
}
```

**Parameter Substitusi (Sebelum dan Sesudah Tampilan)**

Parameter substitusi merampingkan pembuatan dokumen pekerjaan menggunakan berbagai flag seperti `$default` untuk versi paket default. Ini menghilangkan kebutuhan untuk memasukkan metadata versi paket tertentu secara manual untuk setiap penerapan pekerjaan karena flag tersebut diisi otomatis dengan metadata yang direferensikan dalam versi paket tertentu. Untuk informasi selengkapnya tentang atribut versi paket seperti `$default` untuk versi paket default, lihat[Mempersiapkan dokumen tugas dan versi paket untuk deployment](#preparing-to-deploy).

Di Konsol Manajemen AWS, alihkan tombol *substitusi Pratinjau* di jendela *editor file instruksi Deployment* selama penerapan pekerjaan untuk versi paket untuk melihat dokumen pekerjaan dengan dan tanpa parameter substitusi.

Menggunakan parameter “sebelum-substitusi” di `DescribeJob` dan `GetJobDocument` APIs, Anda dapat melihat respons API sebelum dan sesudah parameter substitusi dihapus. Lihat contoh berikut dengan `DescribeJob` dan `GetJobDocument` APIs:
+ `DescribeJob`
  + Tampilan default

    ```
    {
        "jobId": "<jobId>",
        "description": "<description>",
        "destinationPackageVersions": ["arn:aws:iot:us-west-2:123456789012:package/TestPackage/version/1.0.2"]
    }
    ```
  + Sebelum tampilan substitusi

    ```
    {
        "jobId": "<jobId>",
        "description": "<description>",
        "destinationPackageVersions": ["arn:aws:iot:us-west-2:123456789012:package/TestPackage/version/$default"]
    }
    ```
+ `GetJobDocument`
  + Tampilan default

    ```
    {
        "attributes": {
            "location": "prod-artifacts.s3.us-east-1.amazonaws.com/mqtt-core",
            "signature": "IQoJb3JpZ2luX2VjEIrwEaCXVzLWVhc3QtMSJHMEUCIAofPNPpZ9cI",
            "streamName": "mqtt-core",
            "fileId": "0"
        },
    }
    ```
  + Sebelum tampilan substitusi

    ```
    {
        "attributes": "${aws:iot:package:TestPackage:version:$default:attributes}",
    }
    ```

Untuk informasi selengkapnya tentang AWS IoT Lowongan Kerja, membuat dokumen pekerjaan, dan menerapkan pekerjaan, lihat [Pekerjaan](https://docs.aws.amazon.com/iot/latest/developerguide/iot-jobs.html).

## Mempersiapkan dokumen tugas dan versi paket untuk deployment
<a name="preparing-to-deploy"></a>

Ketika versi paket dibuat, itu dalam `draft` keadaan untuk menunjukkan bahwa itu sedang dipersiapkan untuk penerapan. Untuk menyiapkan versi paket untuk penyebaran, Anda harus membuat dokumen pekerjaan, menyimpan dokumen di lokasi yang dapat diakses oleh pekerjaan (seperti Amazon S3), dan mengonfirmasi bahwa versi paket memiliki nilai atribut yang Anda inginkan untuk digunakan oleh dokumen pekerjaan. (Catatan: Anda dapat memperbarui atribut untuk versi paket hanya saat berada dalam `draft` status.) 

Saat membuat template AWS IoT Job atau Job untuk penerapan paket tunggal, Anda memiliki opsi berikut untuk menyesuaikan dokumen pekerjaan Anda:

**File instruksi penyebaran () `recipe`**
+ File instruksi penerapan untuk versi paket berisi instruksi penerapan, termasuk dokumen pekerjaan inline, untuk menerapkan versi paket ke beberapa perangkat. File tersebut mengaitkan instruksi penerapan spesifik ke versi paket untuk penerapan pekerjaan yang cepat dan efisien.

  Di dalam Konsol Manajemen AWS, Anda dapat membuat file di jendela *pratinjau file petunjuk Deployment* di tab *Konfigurasi penerapan versi* dari alur kerja buat paket baru. Anda dapat memanfaatkan AWS IoT untuk secara otomatis membuat file instruksi dari atribut versi paket menggunakan *Mulai dari file yang AWS IoT direkomendasikan* atau menggunakan dokumen pekerjaan yang ada yang disimpan dalam bucket Amazon S3 menggunakan file instruksi *penggunaan Anda sendiri*. 
**catatan**  
Jika Anda menggunakan dokumen pekerjaan Anda sendiri, Anda dapat memperbaruinya langsung di jendela *pratinjau file petunjuk Deployment*, tetapi itu tidak akan secara otomatis memperbarui dokumen pekerjaan asli Anda yang disimpan di bucket Amazon S3 Anda.

  Saat menggunakan AWS CLI atau perintah API seperti`CreatePackageVersion`,, atau `GetPackageVersion``UpdatePackageVersion`, `recipe` mewakili file instruksi penerapan, yang mencakup dokumen pekerjaan inline.

  Untuk informasi lebih lanjut tentang apa itu dokumen pekerjaan, lihat[Konsep dasar](key-concepts-jobs.md#basic-concepts-jobs).

  Lihat contoh berikut untuk file instruksi penyebaran seperti yang diwakili oleh`recipe`:

  ```
  {
      "packageName": "sample-package-name",
      "versionName": "sample-package-version",
      ...
      "recipe": "{...}"
  }
  ```
**catatan**  
File instruksi penerapan seperti yang diwakili oleh `recipe` dapat diperbarui ketika versi paket berada dalam `published` status status karena terpisah dari metadata versi paket. Itu menjadi abadi selama penyebaran pekerjaan.

**`Artifact`atribut versi**
+ Menggunakan atribut versi `artifact` dalam versi paket perangkat lunak Anda, Anda dapat menambahkan lokasi Amazon S3 untuk artefak versi paket Anda. Saat penerapan pekerjaan untuk versi paket Anda dipicu menggunakan AWS IoT Jobs, placeholder URL yang telah ditetapkan sebelumnya ` ${aws:iot:package:<packageName>:version:<versionName>:artifact-location:s3-presigned-url}` dalam dokumen pekerjaan akan diperbarui menggunakan bucket Amazon S3, kunci bucket, dan versi file yang disimpan di bucket Amazon S3. Bucket Amazon S3 yang menyimpan artefak versi paket harus berada di wilayah yang sama tempat versi paket dibuat.
**catatan**  
Untuk menyimpan beberapa versi objek dari file yang sama di bucket Amazon S3, Anda harus mengaktifkan pembuatan versi di bucket. Untuk informasi selengkapnya, lihat [Mengaktifkan pembuatan versi pada bucket.](https://docs.aws.amazon.com/AmazonS3/latest/userguide/manage-versioning-examples.html)

  Untuk mengakses artefak versi paket di bucket Amazon S3 saat menggunakan `CreatePackageVersion` operasi `UpdatePackageVersion` atau API, Anda harus memiliki izin berikut:  
****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Effect": "Allow",
              "Action": "s3:GetObjectVersion",
              "Resource": "arn:aws:s3:::bucket-name/key-name"
          }
      ]
  }
  ```

  Untuk informasi selengkapnya tentang atribut versi `artifact` dalam operasi `CreatePackageVersion` dan `UpdatePackageVersion` API, lihat [CreatePackageVersion](https://amazonaws.com/iot/latest/apireference/API_CreatePackageVersion.html)dan [UpdatePackageVersion](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdatePackageVersion.html).

  Lihat contoh berikut yang menunjukkan atribut version yang `artifact` mendukung lokasi artefak di Amazon S3 saat membuat versi paket baru:

  ```
  {
      "packageName": "sample package name",
      "versionName": "1.0",
      "artifact": {
          "s3Location": {
              "bucket": "firmware",
              "key": "image.bin",
              "version": "12345"
          }
      }
  }
  ```
**catatan**  
Ketika versi paket diperbarui dari `draft` status status ke status `published` status, atribut versi paket dan lokasi artificats menjadi tidak dapat diubah. Untuk memperbarui informasi ini, Anda perlu membuat versi paket baru dan melakukan pembaruan tersebut saat berada dalam `draft` status status.

**Versi Package**
+ Versi paket perangkat lunak default dapat dilambangkan dalam versi yang tersedia dari paket perangkat lunak yang menyediakan versi paket yang aman dan stabil. Ini berfungsi sebagai versi dasar dari paket perangkat lunak saat menerapkan versi paket default ke armada perangkat Anda menggunakan Jobs. AWS IoT Saat membuat pekerjaan untuk menyebarkan versi `$default` paket untuk paket perangkat lunak, versi paket dalam dokumen pekerjaan dan dalam penerapan pekerjaan baru harus cocok sebagai. `$default` Versi paket dalam penerapan pekerjaan diwakili oleh perintah `destinationPackageVersions` `VersionARN` for API dan CLI dan di file. Konsol Manajemen AWS Versi paket dalam dokumen pekerjaan diwakili oleh placeholder dokumen pekerjaan berikut yang ditunjukkan di bawah ini:

  ```
  arn:aws:iot:<regionCode>:111122223333:package/<packageName>/version/$default
  ```

  Untuk membuat template pekerjaan atau pekerjaan menggunakan versi paket default, gunakan `$default` flag dalam perintah `CreateJob` atau `CreateJobTemplate` API seperti yang ditunjukkan di bawah ini:

  ```
  "$ aws iot create-job \
      --destination-package-versions "arn:aws:iot:us-west-2:123456789012:package/TestPackage/version/$default"
      --document file://jobdoc.json
  ```
**catatan**  
Atribut versi `$default` paket yang mereferensikan versi default adalah atribut opsional yang hanya diperlukan saat mereferensikan versi paket default untuk penerapan pekerjaan melalui Jobs. AWS IoT 

Bila Anda puas dengan versi paket, publikasikan melalui halaman detail paket perangkat lunak di AWS IoT konsol atau dengan mengeluarkan operasi [UpdatePackageVersion](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdatePackageVersion.html)API. Anda kemudian dapat mereferensikan versi paket saat Anda membuat pekerjaan baik melalui AWS IoT konsol atau dengan mengeluarkan operasi [CreateJob](https://docs.aws.amazon.com/iot/latest/apireference/API_CreateJob.html)API.

## Menamai paket dan versi saat menerapkan
<a name="naming-package-versions"></a>

Untuk menerapkan versi paket perangkat lunak ke perangkat, konfirmasikan paket perangkat lunak dan versi paket yang direferensikan dalam dokumen pekerjaan cocok dengan paket perangkat lunak dan versi paket yang dinyatakan dalam `destinationPackageVersions` parameter dalam operasi `CreateJob` API. Jika tidak cocok, Anda akan menerima pesan kesalahan yang meminta Anda untuk membuat kedua referensi cocok. Untuk informasi selengkapnya tentang pesan galat Katalog Paket Perangkat Lunak, lihat[Pesan Kesalahan Pemecahan Masalah Umum](software-package-catalog-troubleshooting.md#spc-general-troubleshooting).

Selain paket perangkat lunak dan versi paket yang direferensikan dalam dokumen pekerjaan, Anda dapat menyertakan paket perangkat lunak tambahan dan versi paket dalam `destinationPackageVersions` parameter dalam operasi `CreateJob` API yang tidak direferensikan dalam dokumen pekerjaan. Pastikan informasi instalasi yang diperlukan disertakan dalam dokumen pekerjaan agar perangkat dapat menginstal versi paket perangkat lunak tambahan dengan benar. Untuk informasi selengkapnya tentang operasi `CreateJob ` API, lihat [CreateJob](https://amazonaws.com/iot/latest/apireference/API_CreateJob.html).

## Menargetkan pekerjaan melalui kelompok hal yang AWS IoT dinamis
<a name="jobs-and-dynamic-groups"></a>

Software Package Catalog bekerja dengan [pengindeksan armada](https://docs.aws.amazon.com/iot/latest/developerguide/iot-indexing.html), [AWS IoT pekerjaan](https://docs.aws.amazon.com/iot/latest/developerguide/iot-jobs.html), dan [grup benda AWS IoT dinamis](https://docs.aws.amazon.com/iot/latest/developerguide/dynamic-thing-groups.html) untuk memfilter dan menargetkan perangkat dalam armada Anda untuk memilih versi paket mana yang akan diterapkan ke perangkat Anda. Anda dapat menjalankan kueri pengindeksan armada berdasarkan informasi paket perangkat Anda saat ini dan menargetkan hal-hal tersebut untuk suatu AWS IoT pekerjaan. Anda juga dapat merilis pembaruan perangkat lunak, tetapi hanya untuk perangkat target yang memenuhi syarat. Misalnya, Anda dapat menentukan bahwa Anda ingin menerapkan konfigurasi hanya ke perangkat yang saat ini menjalankan konfigurasi. `iot-device-client 1.5.09` Untuk informasi selengkapnya, lihat [Membuat grup benda dinamis](https://docs.aws.amazon.com/iot/latest/developerguide/dynamic-thing-groups.html#create-dynamic-thing-group).

## Bayangan bernama cadangan dan versi paket
<a name="reserved-shadow-and-package-versions"></a>

Jika dikonfigurasi, AWS IoT Jobs dapat memperbarui sesuatu yang dicadangkan bernama shadow (`$package`) ketika pekerjaan berhasil diselesaikan. Jika Anda melakukannya, Anda tidak perlu mengaitkan versi paket secara manual ke bayangan bernama yang dicadangkan. 

Anda dapat memilih untuk mengaitkan atau memperbarui versi paket secara manual ke bayangan bernama yang dicadangkan dalam situasi berikut:
+ Anda mendaftarkan sesuatu AWS IoT Core tanpa mengaitkan versi paket yang diinstal.
+ AWS IoT Pekerjaan tidak dikonfigurasi untuk memperbarui bayangan bernama yang dicadangkan.
+ Anda menggunakan proses internal untuk mengirimkan versi paket ke armada Anda dan proses itu tidak diperbarui AWS IoT Core saat selesai.

**catatan**  
Kami menyarankan Anda menggunakan AWS IoT Jobs untuk memperbarui versi paket di shadow (`$package`) bernama reserved. Memperbarui parameter versi dalam `$package` bayangan melalui proses lain (seperti, panggilan API manual atau terprogram) ketika AWS IoT Jobs juga dikonfigurasi untuk memperbarui bayangan, dapat menyebabkan ketidakkonsistenan antara versi aktual pada perangkat dan versi yang dilaporkan ke bayangan bernama yang dicadangkan.

Anda dapat menambahkan atau memperbarui versi paket ke sesuatu yang dicadangkan bernama shadow (`$package`) melalui konsol atau operasi [https://docs.aws.amazon.com/iot/latest/apireference/API_iotdata_UpdateThingShadow.html](https://docs.aws.amazon.com/iot/latest/apireference/API_iotdata_UpdateThingShadow.html)API. Untuk informasi selengkapnya, lihat [Mengaitkan versi paket ke AWS IoT sesuatu](https://docs.aws.amazon.com/iot/latest/developerguide/associating-package-version.html).

**catatan**  
Mengaitkan versi paket ke AWS IoT sesuatu tidak secara langsung memperbarui perangkat lunak perangkat. Anda harus menyebarkan versi paket ke perangkat untuk memperbarui perangkat lunak perangkat.

## Menghapus instalasi paket perangkat lunak dan versi paketnya
<a name="uninstalling-packages-and-versions"></a>

`$null`adalah placeholder cadangan yang meminta layanan AWS IoT Jobs untuk menghapus paket perangkat lunak dan versi paket yang ada dari bayangan bernama cadangan perangkat. `$package` Untuk informasi selengkapnya, lihat [Cadangan bernama bayangan.](https://docs.aws.amazon.com/iot/latest/developerguide/preparing-to-use-software-package-catalog.html#reserved-named-shadow)

Untuk menggunakan fitur ini, ganti nama versi di akhir [destinationPackageVersion](https://docs.aws.amazon.com/iot/latest/apireference/API_CreateJobTemplate.html#iot-CreateJobTemplate-request-destinationPackageVersions)Amazon Resource Name (ARN) dengan. `$null` Setelah itu, Anda harus menginstruksikan layanan Anda untuk menghapus perangkat lunak dari perangkat.

ARN resmi menggunakan format berikut:

```
arn:aws:iot:<regionCode>:111122223333:package/<packageName>/version/$null
```

Misalnya, 

```
$ aws iot create-job \
    ... \
    --destinationPackageVersions ["arn:aws:iot:us-east-1:111122223333:package/samplePackage/version/$null"]
```

# Memulai dengan Software Package Catalog
<a name="getting-started-with-software-package-catalog"></a>

Anda dapat membangun dan memelihara Katalog Paket AWS IoT Device Management Perangkat Lunak melalui Konsol Manajemen AWS, operasi AWS IoT Core API, dan AWS Command Line Interface (AWS CLI).

**catatan**  
Mengaktifkan pengindeksan AWS IoT armada adalah persyaratan untuk menggunakan Katalog Paket Perangkat Lunak. Operasi dasar seperti membuat versi paket perangkat lunak di Konsol Manajemen AWS dan menggunakan perintah `CreatePackage` API akan gagal tanpa pengindeksan AWS IoT armada diaktifkan.  
Untuk informasi selengkapnya tentang penggunaan pengindeksan AWS IoT armada dengan Katalog Paket Perangkat Lunak, lihat[Mempersiapkan pengindeksan armada](preparing-fleet-indexing.md).

**Menggunakan konsol**

Untuk menggunakan Konsol Manajemen AWS, masuk ke AWS akun Anda dan navigasikan ke [AWS IoT Core](https://console.aws.amazon.com/iot/home). Di panel navigasi, pilih **Paket perangkat lunak**. Anda kemudian dapat membuat dan mengelola paket dan versinya dari bagian ini.

**Menggunakan operasi API atau CLI**

Anda dapat menggunakan operasi AWS IoT Core API untuk membuat dan mengelola fitur Katalog Paket Perangkat Lunak. Untuk informasi selengkapnya, lihat [Referensi AWS IoT API AWS](https://docs.aws.amazon.com/iot/latest/apireference/) [SDKs dan Toolkit](https://aws.amazon.com/developer/tools/). AWS CLI Perintah juga mengelola katalog Anda. Untuk informasi selengkapnya, lihat Referensi [Perintah AWS IoT CLI](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/index.html).

**Topics**
+ [Membuat paket perangkat lunak dan versi paket](creating-package-and-version.md)
+ [Menerapkan versi paket melalui pekerjaan AWS IoT](deploying-package-version.md)
+ [Mengaitkan versi paket ke suatu AWS IoT hal](associating-package-version.md)

# Membuat paket perangkat lunak dan versi paket
<a name="creating-package-and-version"></a>

Anda dapat menggunakan langkah-langkah berikut untuk membuat paket dan hal versi awal melalui Konsol Manajemen AWS.

**Untuk membuat paket perangkat lunak**

1. Masuk ke AWS akun Anda dan arahkan ke [AWS IoT konsol](https://console.aws.amazon.com/iot/home). 

1.  Pada panel navigasi, pilih **Paket perangkat lunak**. 

1.  Pada halaman **paket AWS IoT perangkat lunak**, pilih **Buat paket**. Kotak dialog **Aktifkan dependensi untuk manajemen paket** muncul. 

1.  Di bawah **Pengindeksan armada**, pilih **Tambahkan paket dan versi perangkat lunak perangkat**. Ini diperlukan untuk Katalog Paket Perangkat Lunak dan menyediakan pengindeksan armada dan metrik tentang armada Anda. 

1. [Opsional] Jika Anda ingin AWS IoT lowongan memperbarui bayangan bernama cadangan saat pekerjaan berhasil diselesaikan, pilih **Perbarui bayangan otomatis dari pekerjaan**. Jika Anda tidak ingin AWS IoT pekerjaan melakukan pembaruan ini, biarkan kotak centang ini tidak dipilih.

1.  [Opsional] Untuk memberikan AWS IoT lowongan hak untuk memperbarui bayangan bernama yang dicadangkan, di bawah **Pilih peran**, pilih **Buat peran**. Jika Anda tidak ingin AWS IoT lowongan melakukan pembaruan ini, peran ini tidak diperlukan. 

1. Buat atau pilih peran.

   1. Jika Anda **tidak memiliki peran** untuk tujuan ini: Saat kotak dialog **Buat peran** muncul, masukkan **nama Peran**, lalu pilih **Buat**.

   1. Jika **Anda memiliki peran** untuk tujuan ini: Untuk **peran Pilih, pilih peran** Anda, lalu pastikan kotak centang **Lampirkan kebijakan ke peran IAM** dipilih.

1. Pilih **Konfirmasi**. Halaman **Buat paket baru** muncul.

1. Di bawah **Package detail**, masukkan **nama Package**.

1. Di bawah **Package description**, masukkan informasi untuk membantu Anda mengidentifikasi dan mengelola paket ini.

1. [Opsional] Anda dapat menggunakan tag untuk membantu Anda mengkategorikan dan mengelola paket ini. Untuk menambahkan tag, perluas **Tag**, pilih **Tambahkan tag**, dan masukkan pasangan nilai kunci. Anda dapat memasukkan hingga 50 tag. Untuk informasi selengkapnya, lihat [Menandai AWS IoT sumber daya Anda](https://docs.aws.amazon.com/iot/latest/developerguide/tagging-iot.html).

**Untuk menambahkan versi paket saat membuat paket baru**

1. Di bawah **Versi awal**, masukkan **nama Versi**.

   Sebaiknya gunakan [SemVer format](https://semver.org/) (misalnya,`1.0.0.0`) untuk mengidentifikasi versi paket Anda secara unik. Anda juga dapat menggunakan strategi pemformatan berbeda yang lebih sesuai dengan kasus penggunaan Anda. Untuk informasi selengkapnya, lihat [Siklus hidup versi paket](preparing-to-use-software-package-catalog.md#package-version-lifecycle). 

1. Di bawah **Deskripsi versi**, masukkan informasi yang akan membantu Anda mengidentifikasi dan mengelola versi paket ini.
**catatan**  
Kotak centang **versi Default** dinonaktifkan karena versi paket dibuat dalam `draft` keadaan. Anda dapat memberi nama versi default setelah Anda membuat versi paket dan ketika Anda mengubah status menjadi`published`. Untuk informasi selengkapnya, lihat [Siklus hidup versi paket](preparing-to-use-software-package-catalog.md#package-version-lifecycle).

1. [Opsional] Untuk membantu Anda mengelola versi ini atau untuk mengkomunikasikan informasi ke perangkat Anda, masukkan satu atau beberapa pasangan nama-nilai untuk atribut **Versi**. Pilih **Tambahkan atribut** untuk setiap pasangan nama-nilai yang Anda masukkan. Untuk informasi selengkapnya, lihat [Atribut versi](preparing-to-use-software-package-catalog.md#version-attributes).

1. [Opsional] Anda dapat menggunakan tag untuk membantu Anda mengkategorikan dan mengelola paket ini. Untuk menambahkan tag, perluas **Tag**, pilih **Tambahkan** tag, dan masukkan pasangan nilai kunci. Anda dapat memasukkan hingga 50 tag. Untuk informasi selengkapnya, lihat [Menandai AWS IoT sumber daya Anda](https://docs.aws.amazon.com/iot/latest/developerguide/tagging-iot.html).

1. Pilih **Berikutnya**.

**Kaitkan Tagihan Materi Perangkat Lunak ke Versi Package (Opsional)**

1. Pada **Langkah 3: Versi SBOMs (Opsional)** di jendela **konfigurasi SBOM**, pilih format file SBOM default dan mode validasi yang digunakan untuk memvalidasi tagihan materi perangkat lunak Anda sebelum dikaitkan dengan versi paket Anda.

1. Di jendela **Tambahkan file SBOM**, masukkan Nama Sumber Daya Amazon (ARN) yang mewakili bucket Amazon S3 berversi Anda dan format file SBOM pilihan jika jenis default tidak berfungsi.
**catatan**  
Anda dapat menambahkan satu file SBOM atau satu file zip yang berisi beberapa SBOMs jika Anda memiliki lebih dari satu tagihan materi perangkat lunak untuk versi paket Anda. 

1. Di jendela **file Added SBOM**, Anda dapat melihat file SBOM yang Anda tambahkan untuk versi paket Anda.

1. Pilih **Buat paket dan versi**. Halaman versi paket muncul dan Anda dapat melihat status validasi file SBOM Anda di jendela file **SBOM Ditambahkan**. Status awal adalah `In progress` saat file SBOM mengalami validasi. 
**catatan**  
Status validasi file SBOM adalah`Invalid file`,,,`Not started`, `In progress` `Validated (SPDX)``Validated (CycloneDX)`, dan alasan kegagalan validasi.

# Menerapkan versi paket melalui pekerjaan AWS IoT
<a name="deploying-package-version"></a>

Anda dapat menggunakan langkah-langkah berikut untuk menyebarkan versi paket melalui. Konsol Manajemen AWS

**Prasyarat:**

Sebelum memulai, lakukan hal berikut:
+ Daftarkan AWS IoT hal-hal dengan AWS IoT Core. Untuk petunjuk arah untuk menambahkan perangkat Anda AWS IoT Core, lihat [Membuat objek benda](https://docs.aws.amazon.com/iot/latest/developerguide/create-iot-resources.html#create-aws-thing).
+ [Opsional] Buat grup AWS IoT benda atau grup benda dinamis untuk menargetkan perangkat yang akan Anda gunakan versi paket. Untuk petunjuk arah untuk membuat grup benda, lihat [Membuat grup benda statis](https://docs.aws.amazon.com/iot/latest/developerguide/thing-groups.html#create-thing-group). Untuk petunjuk arah untuk membuat grup benda dinamis, lihat [Membuat grup hal dinamis](https://docs.aws.amazon.com/iot/latest/developerguide/dynamic-thing-groups.html#create-dynamic-thing-group).
+ Buat paket perangkat lunak dan versi paket. Untuk informasi selengkapnya, lihat [Membuat paket perangkat lunak dan versi paket](creating-package-and-version.md).
+ Buat dokumen pekerjaan. Untuk informasi selengkapnya, lihat [Mempersiapkan dokumen pekerjaan dan versi paket untuk penerapan](https://docs.aws.amazon.com/iot/latest/developerguide/preparing-jobs-for-service-package-catalog.html#preparing-to-deploy).

**Untuk menyebarkan pekerjaan AWS IoT**

1. Di [AWS IoT konsol](https://console.aws.amazon.com/iot/home), pilih **Paket perangkat lunak**.

1. Pilih paket perangkat lunak yang ingin Anda gunakan. Halaman **detail paket perangkat lunak** muncul.

1. Pilih versi paket yang ingin Anda terapkan, di bawah **Versi**, dan pilih **Terapkan versi pekerjaan**.

1. Jika ini adalah pertama kalinya Anda menerapkan pekerjaan melalui portal ini, kotak dialog yang menjelaskan persyaratan akan muncul. Tinjau informasi dan pilih **Akui**.

1. Masukkan nama untuk penyebaran atau tinggalkan nama yang dibuat secara otomatis di bidang **Nama**.

1. [Opsional] Di bidang **Deskripsi**, masukkan deskripsi yang mengidentifikasi tujuan atau isi penyebaran, atau tinggalkan informasi yang dibuat secara otomatis. 

   **Catatan:** Kami menyarankan agar Anda tidak menggunakan informasi identitas pribadi di kolom Nama dan deskripsi Job.

1. [Opsional] Tambahkan tag apa pun untuk dikaitkan dengan pekerjaan ini.

1. Pilih **Berikutnya**.

1. Di bawah **target Job**, pilih hal-hal atau kelompok hal yang harus menerima pekerjaan.

1. Di bidang **File Job**, tentukan file JSON dokumen pekerjaan.

1. **Integrasi Open Jobs dengan layanan Package Catalog**.

1. Pilih paket dan versi yang ditentukan dalam dokumen pekerjaan Anda.
**catatan**  
Anda diminta untuk memilih paket dan versi paket yang sama yang ditentukan dalam dokumen pekerjaan. Anda dapat memasukkan lebih banyak, tetapi pekerjaan akan mengeluarkan instruksi hanya untuk paket dan versi yang disertakan dalam dokumen pekerjaan. Untuk informasi selengkapnya, lihat [Penamaan paket dan versi saat menerapkan](https://docs.aws.amazon.com/iot/latest/developerguide/preparing-jobs-for-service-package-catalog.html#naming-package-versions).

1. Pilih **Berikutnya**.

1. Pada halaman konfigurasi Job, pilih salah satu jenis pekerjaan berikut di kotak dialog konfigurasi Job:
   + **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 pekerjaan opsional berikut dan buat pilihan Anda sesuai. Untuk informasi selengkapnya, lihat [Peluncuran Job, penjadwalan, dan membatalkan konfigurasi serta batas waktu [eksekusi Job](https://docs.aws.amazon.com/iot/latest/developerguide/jobs-configurations-details.html#job-timeout-retry) dan konfigurasi](https://docs.aws.amazon.com/iot/latest/developerguide/jobs-configurations-details.html#job-rollout-abort-scheduling) coba lagi.
   + Konfigurasi peluncuran
   + Konfigurasi penjadwalan
   + Konfigurasi batas waktu eksekusi Job
   + Konfigurasi coba lagi eksekusi Job
   + Batalkan konfigurasi

1. Tinjau pilihan pekerjaan dan kemudian pilih **Kirim**.

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

# Mengaitkan versi paket ke suatu AWS IoT hal
<a name="associating-package-version"></a>

Setelah Anda menginstal perangkat lunak pada perangkat Anda, Anda dapat mengaitkan versi paket ke AWS IoT sesuatu yang dicadangkan bernama shadow. Jika AWS IoT pekerjaan telah dikonfigurasi untuk memperbarui bayangan bernama yang dicadangkan setelah pekerjaan diterapkan dan berhasil diselesaikan, Anda tidak perlu menyelesaikan prosedur ini. Untuk informasi selengkapnya, lihat [Cadangan bernama bayangan](preparing-to-use-software-package-catalog.md#reserved-named-shadow). 

**Prasyarat:**

Sebelum memulai, lakukan hal berikut:
+ Buat AWS IoT sesuatu, atau benda, dan bangun telemetri melalui. AWS IoT Core Untuk informasi selengkapnya, lihat [Memulai dengan AWS IoT Core](https://docs.aws.amazon.com/iot/latest/developerguide/iot-gs.html). 
+  Buat paket perangkat lunak dan versi paket. Untuk informasi selengkapnya, lihat [Membuat paket perangkat lunak dan versi paket](creating-package-and-version.md). 
+  Instal perangkat lunak versi paket pada perangkat. 

**catatan**  
Mengaitkan versi paket ke AWS IoT sesuatu tidak memperbarui atau menginstal perangkat lunak pada perangkat fisik. Versi paket harus digunakan ke perangkat. 

**Untuk mengaitkan versi paket ke suatu AWS IoT hal**

1. Pada panel navigasi [AWS IoT konsol](https://console.aws.amazon.com/iot/home), perluas menu **Semua perangkat** dan pilih **Things**.

1. Identifikasi AWS IoT hal yang ingin Anda perbarui dari daftar dan pilih nama benda untuk menampilkan halaman detailnya.

1. Di bagian **Detail**, pilih **Paket dan versi**.

1.  Pilih **Tambahkan ke paket dan versi**. 

1.  Untuk **Pilih paket perangkat, pilih paket** perangkat lunak yang Anda inginkan. 

1.  Untuk **Pilih versi**, pilih versi perangkat lunak yang Anda inginkan. 

1.  Pilih **Tambahkan paket perangkat**. 

    Paket dan versi muncul di daftar **Paket dan versi yang dipilih**. 

1.  Ulangi langkah-langkah ini untuk setiap paket dan versi yang ingin Anda kaitkan dengan hal ini. 

1.  Setelah selesai, pilih **Tambahkan paket dan detail versi**. Halaman **Detail Thing** terbuka dan Anda dapat melihat paket dan versi baru dalam daftar. 