

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

# Publikasikan komponen untuk diterapkan ke perangkat inti Anda
<a name="publish-components"></a>

Setelah Anda membangun atau menyelesaikan versi komponen, Anda dapat mempublikasikannya ke AWS IoT Greengrass layanan. Kemudian, Anda dapat menerapkannya ke perangkat inti Greengrass.

Jika Anda menggunakan [Greengrass Development Kit CLI (GDK CLI](greengrass-development-kit-cli.md)[) untuk mengembangkan dan membangun komponen, Anda [dapat menggunakan](#publish-component-gdk-cli) CLI GDK untuk](create-components.md) mempublikasikan komponen ke. AWS Cloud Jika tidak, [gunakan perintah shell bawaan dan AWS CLI](#publish-component-shell-commands) untuk mempublikasikan komponen.

Anda juga dapat menggunakan AWS CloudFormation untuk membuat komponen dan AWS sumber daya lainnya dari template. Untuk informasi lebih lanjut, lihat [Apa itu AWS CloudFormation?](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html) dan [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-greengrassv2-componentversion.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-greengrassv2-componentversion.html) di *Panduan Pengguna AWS CloudFormation *.

**Topics**
+ [Publikasikan komponen (GDK CLI)](#publish-component-gdk-cli)
+ [Publikasikan komponen (perintah shell)](#publish-component-shell-commands)

## Publikasikan komponen (GDK CLI)
<a name="publish-component-gdk-cli"></a>

Ikuti petunjuk di bagian ini untuk mempublikasikan komponen menggunakan CLI GDK. CLI GDK mengunggah artefak build ke bucket S3, memperbarui URIs artefak dalam resep, dan membuat komponen dari resep. Anda menentukan bucket S3 dan Region yang akan digunakan dalam file konfigurasi [CLI GDK](gdk-cli-configuration-file.md).

<a name="gdk-cli-s3-bucket-name-formation"></a>Jika Anda menggunakan GDK CLI v1.1.0 atau yang lebih baru, Anda dapat menentukan argumen untuk menentukan `--bucket` bucket S3 tempat CLI GDK mengunggah artefak komponen. <a name="gdk-cli-s3-bucket-name-formation-format"></a>Jika Anda tidak menentukan argumen ini, CLI GDK akan mengunggah ke bucket S3 yang namanya, di *bucket* mana *region* dan `bucket-region-accountId` merupakan nilai yang Anda tentukan, *accountId* dan merupakan ID `gdk-config.json` Anda. Akun AWS  CLI GDK membuat bucket jika tidak ada.

**penting**  <a name="publish-component-s3-bucket-token-exchange-role-permissions"></a>
Peran perangkat inti tidak mengizinkan akses ke bucket S3 secara default. Jika ini pertama kalinya Anda menggunakan bucket S3, Anda harus menambahkan izin ke peran untuk mengizinkan perangkat inti mengambil artefak komponen dari bucket S3 ini. Untuk informasi selengkapnya, lihat [Izinkan akses ke bucket S3 untuk artefak komponen](device-service-role.md#device-service-role-access-s3-bucket).

**Untuk mempublikasikan komponen Greengrass (GDK CLI)**

1. Buka folder komponen di prompt perintah atau terminal.

1. Jika Anda belum melakukannya, buat komponen Greengrass. Perintah [build komponen](greengrass-development-kit-cli-component.md#greengrass-development-kit-cli-component-build) menghasilkan resep dan artefak di `greengrass-build` folder di folder komponen. Jalankan perintah berikut.

   ```
   gdk component build
   ```

1. Publikasikan komponen ke AWS Cloud. Perintah [component publish](greengrass-development-kit-cli-component.md#greengrass-development-kit-cli-component-publish) mengunggah artefak komponen ke Amazon S3 dan memperbarui resep komponen dengan URI masing-masing artefak. Kemudian, itu menciptakan komponen dalam AWS IoT Greengrass layanan.
**catatan**  <a name="publish-component-s3-bucket-artifact-digest-warning"></a>
AWS IoT Greengrass menghitung intisari setiap artefak saat Anda membuat komponen. Ini berarti bahwa Anda tidak dapat memodifikasi file artefak dalam bucket S3 Anda setelah Anda membuat komponen. Jika Anda melakukannya, deployment yang mencakup komponen ini akan gagal, karena file digest tidak cocok. Jika Anda mengubah file artefak, Anda harus membuat versi baru komponen.

   Jika Anda menentukan `NEXT_PATCH` versi komponen dalam file konfigurasi CLI GDK, CLI GDK menggunakan versi tambalan berikutnya yang belum ada di layanan. AWS IoT Greengrass 

   Jalankan perintah berikut.

   ```
   gdk component publish
   ```

   Output memberi tahu Anda versi komponen yang dibuat CLI GDK.

   Setelah mempublikasikan komponen, Anda dapat menerapkan komponen ke perangkat inti. Untuk informasi selengkapnya, lihat [Menyebarkan AWS IoT Greengrass komponen ke perangkat](manage-deployments.md).

## Publikasikan komponen (perintah shell)
<a name="publish-component-shell-commands"></a>

Gunakan prosedur berikut untuk mempublikasikan komponen menggunakan perintah shell dan AWS Command Line Interface (AWS CLI). Ketika Anda mempublikasikan komponen, Anda melakukan hal berikut:

1. Publikasikan artefak komponen ke bucket S3.

1. Tambahkan setiap URI Amazon S3 artefak ke resep komponen.

1. Buat versi komponen AWS IoT Greengrass dari resep komponen.

**catatan**  <a name="component-version-uniqueness-note"></a>
<a name="component-version-uniqueness-para"></a>Setiap versi komponen yang Anda upload harus unik. Pastikan Anda mengunggah versi komponen yang benar, karena Anda tidak dapat mengeditnya setelah mengunggahnya.

Anda dapat mengikuti langkah-langkah ini untuk mempublikasikan komponen dari komputer pengembangan Anda atau perangkat inti Greengrass Anda.

**Untuk mempublikasikan komponen (perintah shell)**

1. Jika komponen menggunakan versi yang ada di AWS IoT Greengrass layanan, maka Anda harus mengubah versi komponen. Buka resep dalam editor teks, naikkan versi, dan simpan file. Pilih versi baru yang mencerminkan perubahan yang Anda buat ke komponen.
**catatan**  <a name="semver-note"></a>
<a name="semver-para"></a>AWS IoT Greengrass menggunakan versi semantik untuk komponen. Versi semantik mengikuti sistem nomor *mayor*.*minor*.*patch*. Sebagai contoh, versi `1.0.0` merupakan rilis mayor pertama untuk sebuah komponen. Untuk informasi lebih lanjut, lihat [spesifikasi versi semantik](https://semver.org/).

1. Jika komponen Anda memiliki artefak, lakukan hal berikut:

   1. Publikasikan artefak komponen ke bucket S3 di file Anda. Akun AWS
**Tip**  <a name="artifact-path-tip"></a>
Kami merekomendasikan agar Anda menyertakan nama komponen dan versi di jalur artefak di bucket S3. Skema penamaan ini dapat membantu Anda mempertahankan artefak yang digunakan oleh versi komponen sebelumnya, sehingga Anda dapat terus mendukung versi komponen sebelumnya.

      Jalankan perintah berikut untuk mempublikasikan file artefak ke bucket S3. Ganti amzn-s3-demo-bucket dengan nama bucket, dan ganti *artifacts/com.example.HelloWorld/1.0.0/artifact.py* dengan path ke file artefak.

      ```
      aws s3 cp artifacts/com.example.HelloWorld/1.0.0/artifact.py s3://amzn-s3-demo-bucket/artifacts/com.example.HelloWorld/1.0.0/artifact.py
      ```
**penting**  <a name="publish-component-s3-bucket-token-exchange-role-permissions"></a>
Peran perangkat inti tidak mengizinkan akses ke bucket S3 secara default. Jika ini pertama kalinya Anda menggunakan bucket S3, Anda harus menambahkan izin ke peran untuk mengizinkan perangkat inti mengambil artefak komponen dari bucket S3 ini. Untuk informasi selengkapnya, lihat [Izinkan akses ke bucket S3 untuk artefak komponen](device-service-role.md#device-service-role-access-s3-bucket).

   1. Tambahkan daftar bernama `Artifacts` ke resep komponen jika tidak ada. Daftar `Artifacts` muncul di setiap manifes, yang mendefinisikan persyaratan komponen pada setiap platform yang didukungnya (atau persyaratan default komponen untuk semua platform).

   1. Tambahkan setiap artefak ke daftar artefak, atau perbarui URI artefak yang ada. URI Amazon S3 terdiri atas nama bucket dan path ke objek artefak dalam bucket. Amazon S3 artefak Anda akan URIs terlihat mirip dengan contoh berikut.

      ```
      s3://amzn-s3-demo-bucket/artifacts/com.example.HelloWorld/1.0.0/artifact.py
      ```

   Setelah Anda menyelesaikan langkah ini, resep Anda harus memiliki daftar `Artifacts` yang terlihat seperti berikut ini.

------
#### [ JSON ]

   ```
   {
     ...
     "Manifests": [
       {
         "Lifecycle": {
           ...
         },
         "Artifacts": [
           {
             "URI": "s3://amzn-s3-demo-bucket/artifacts/MyGreengrassComponent/1.0.0/artifact.py",
             "Unarchive": "NONE"
           }
         ]
       }
     ]
   }
   ```

**catatan**  
Anda dapat menambahkan `"Unarchive": "ZIP"` opsi untuk artefak ZIP untuk mengonfigurasi perangkat lunak AWS IoT Greengrass Core untuk membuka zip artefak saat komponen digunakan.

------
#### [ YAML ]

   ```
   ...
   Manifests:
     - Lifecycle:
         ...
       Artifacts:
         - URI: s3://amzn-s3-demo-bucket/artifacts/MyGreengrassComponent/1.0.0/artifact.py
           Unarchive: NONE
   ```

**catatan**  
Anda dapat menggunakan `Unarchive: ZIP` opsi untuk mengonfigurasi perangkat lunak AWS IoT Greengrass Core untuk membuka zip artefak ZIP saat komponen digunakan. Untuk informasi selengkapnya tentang cara menggunakan artefak ZIP dalam komponen, lihat variabel resep [Artefacts:decompressedPath](component-recipe-reference.md#component-recipe-artifacts-decompressed-path).

------

   Untuk informasi lebih lanjut tentang resep, lihat [AWS IoT Greengrass referensi resep komponen](component-recipe-reference.md).

1. Gunakan AWS IoT Greengrass konsol untuk membuat komponen dari file resep.

   Jalankan perintah berikut untuk membuat komponen dari file resep. Perintah ini membuat komponen dan menerbitkannya sebagai AWS IoT Greengrass komponen pribadi di Anda Akun AWS. Ganti *path/to/recipeFile* dengan path ke file resep.

   ```
   aws greengrassv2 create-component-version --inline-recipe fileb://path/to/recipeFile
   ```

   Salin `arn` dari respons untuk memeriksa keadaan komponen pada langkah berikutnya.
**catatan**  <a name="publish-component-s3-bucket-artifact-digest-warning"></a>
AWS IoT Greengrass menghitung intisari setiap artefak saat Anda membuat komponen. Ini berarti bahwa Anda tidak dapat memodifikasi file artefak dalam bucket S3 Anda setelah Anda membuat komponen. Jika Anda melakukannya, deployment yang mencakup komponen ini akan gagal, karena file digest tidak cocok. Jika Anda mengubah file artefak, Anda harus membuat versi baru komponen.

1. Setiap komponen dalam AWS IoT Greengrass layanan memiliki status. Jalankan perintah berikut untuk mengonfirmasi status versi komponen yang Anda terbitkan dalam prosedur ini. Ganti *com.example.HelloWorld* dan *1.0.0* dengan versi komponen untuk kueri. Ganti `arn` dengan ARN dari langkah sebelumnya.

   ```
   aws greengrassv2 describe-component --arn "arn:aws:greengrass:region:account-id:components:com.example.HelloWorld:versions:1.0.0"
   ```

   Operasi ini mengembalikan respons yang berisi metadata komponen. Metadata berisi objek `status` yang berisi keadaan komponen dan kesalahan apa pun, jika berlaku.

   Ketika keadaan komponen adalah `DEPLOYABLE`, Anda dapat men-deploy komponen ke perangkat. Untuk informasi selengkapnya, lihat [Menyebarkan AWS IoT Greengrass komponen ke perangkat](manage-deployments.md).