

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

# AWS IoT Greengrass referensi resep komponen
<a name="component-recipe-reference"></a>

Komponen resep adalah file yang mendefinisikan komponen detail, dependensi, artefak, dan siklus hidup. *Siklus aktif* komponen menentukan perintah yang akan dijalankan untuk menginstal, menjalankan, dan menutup komponen, misalnya. AWS IoT Greengrass Inti menggunakan siklus hidup yang Anda tentukan dalam resep untuk menginstal dan menjalankan komponen. AWS IoT Greengrass Layanan menggunakan resep untuk mengidentifikasi dependensi dan artefak untuk diterapkan ke perangkat inti Anda saat Anda menerapkan komponen.

Dalam resep itu, Anda dapat menentukan dependensi dan siklus hidup yang unik untuk setiap platform yang didukung komponen. Anda dapat menggunakan kemampuan ini untuk men-deploy komponen ke perangkat dengan beberapa platform yang memiliki persyaratan yang berbeda. Anda juga dapat menggunakan ini untuk AWS IoT Greengrass mencegah menginstal komponen pada perangkat yang tidak mendukungnya.

Setiap resep berisi daftar *manifes*. Setiap manifes menentukan seperangkat persyaratan platform dan siklus hidup dan artefak yang akan digunakan untuk perangkat inti yang platformnya memenuhi persyaratan tersebut. Perangkat inti menggunakan manifes pertama dengan persyaratan platform yang dipenuhi oleh perangkat. Tentukan manifes tanpa persyaratan platform apa pun agar cocok dengan setiap perangkat inti.

Anda juga dapat menentukan siklus hidup global yang tidak ada dalam manifes. Dalam siklus hidup global, Anda dapat menggunakan *tombol pilihan* yang mengidentifikasi sub-bagian dari siklus hidup. Kemudian, Anda dapat menentukan kunci pilihan ini dalam manifes untuk menggunakan bagian dari siklus hidup global selain siklus hidup manifes. Perangkat inti hanya menggunakan tombol pemilihan manifes jika manifes tidak menentukan siklus hidup. Anda dapat menggunakan pilihan `all` dalam manifes untuk mencocokkan bagian siklus hidup global tanpa kunci seleksi.

Setelah perangkat lunak AWS IoT Greengrass Core memilih manifes yang cocok dengan perangkat inti, perangkat tersebut melakukan hal berikut untuk mengidentifikasi langkah-langkah siklus hidup yang akan digunakan:
+ Jika manifes yang dipilih menentukan siklus hidup, perangkat inti akan menggunakan siklus hidup tersebut.
+ Jika manifes yang dipilih tidak menentukan siklus hidup, perangkat inti akan menggunakan siklus hidup global. Perangkat inti melakukan hal berikut untuk mengidentifikasi bagian siklus hidup global mana yang akan digunakan:
  + Jika manifes mendefinisikan kunci pilihan, perangkat inti akan menggunakan bagian siklus hidup global yang berisi kunci pilihan manifes.
  + Jika manifes tidak mendefinisikan kunci pilihan, perangkat inti akan menggunakan bagian siklus hidup global yang tidak memiliki kunci pilihan. Perilaku ini setara dengan manifes yang menentukan pilihan `all`.

**penting**  <a name="recipe-core-device-manifest-requirement"></a>
Sebuah perangkat inti harus cocok setidaknya dengan satu persyaratan platform manifes untuk menginstal komponen. Jika tidak ada manifes yang cocok dengan perangkat AWS IoT Greengrass inti, maka perangkat lunak Core tidak menginstal komponen dan penerapan gagal.

Anda bisa menentukan resep dalam format [JSON](https://en.wikipedia.org/wiki/JSON) atau [YAML](https://en.wikipedia.org/wiki/YAML). Bagian contoh resep mencakup resep dalam setiap format.

**Topics**
+ [Validasi resep](#recipe-validation)
+ [Format resep](#recipe-format)
+ [Variabel resep](#recipe-variables)
+ [Contoh resep](#recipe-examples)

## Validasi resep
<a name="recipe-validation"></a>

Greengrass memvalidasi resep komponen JSON atau YAMAL saat membuat versi komponen. Validasi resep ini memeriksa resep komponen JSON atau YAMG Anda untuk kesalahan umum untuk mencegah potensi masalah penerapan. Validasi memeriksa resep untuk kesalahan umum (misalnya, koma, tanda kurung gigi, dan bidang yang hilang) dan untuk memastikan resepnya terbentuk dengan baik.

Jika Anda menerima pesan kesalahan validasi resep, periksa resep Anda apakah ada koma, tanda kurung gigi, atau bidang yang hilang. Verifikasi bahwa Anda tidak melewatkan bidang apa pun dengan melihat [format resep](#recipe-format).

## Format resep
<a name="recipe-format"></a>

Bila Anda menentukan resep untuk komponen, Anda menentukan informasi berikut dalam dokumen resep. Struktur yang sama berlaku untuk resep dalam format YAML dan JSON.

`RecipeFormatVersion`  
Versi templat untuk resep itu. Pilih opsi berikut:  
+ `2020-01-25`

`ComponentName`  
Nama komponen yang ditentukan oleh resep ini. Nama komponen harus unik di Anda Akun AWS di setiap Wilayah.  
**Kiat**  
+ Gunakan format nama domain terbalik untuk menghindari tabrakan nama dalam perusahaan Anda. Misalnya, jika perusahaan Anda memiliki `example.com` dan Anda mengerjakan proyek energi matahari, Anda dapat menamai komponen Hello World Anda `com.example.solar.HelloWorld`. Hal ini membantu menghindari tabrakan nama komponen dalam perusahaan Anda.
+ Hindari awalan `aws.greengrass` dalam nama komponen Anda. AWS IoT Greengrass menggunakan awalan ini untuk [Komponen publik](public-components.md) yang disediakannya. Jika Anda memilih nama yang sama sebagai komponen publik, komponen Anda menggantikan komponen tersebut. Kemudian, AWS IoT Greengrass sediakan komponen Anda alih-alih komponen publik saat menyebarkan komponen dengan ketergantungan pada komponen publik tersebut. Fitur ini memungkinkan Anda untuk menimpa perilaku komponen publik, tetapi juga dapat merusak komponen lain jika Anda tidak berniat untuk menimpa komponen publik.

`ComponentVersion`  
Versi komponen. Nilai maksimum untuk nilai mayor, minor, dan patch adalah 999999.  
<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/).

`ComponentDescription`  
(Opsional) Deskripsi komponen.

`ComponentPublisher`  
Penerbit atau penulis komponen.

`ComponentConfiguration`  
(Opsional) Sebuah objek yang menentukan konfigurasi atau parameter untuk komponen. Anda menentukan konfigurasi default, dan kemudian ketika Anda men-deploy komponen, Anda dapat menentukan objek konfigurasi yang akan disediakan ke komponen. Konfigurasi komponen mendukung parameter bersusun dan struktur. Objek ini berisi informasi berikut:    
`DefaultConfiguration`  
Objek yang menentukan konfigurasi default untuk komponen. Anda menentukan struktur objek ini.  
<a name="configuration-value-type-note"></a>AWS IoT Greengrass menggunakan JSON untuk nilai konfigurasi. JSON menentukan jenis nomor tetapi tidak membedakan antara bilangan bulat dan float. Akibatnya, nilai konfigurasi mungkin berubah menjadi float di AWS IoT Greengrass. Untuk memastikan bahwa komponen Anda menggunakan jenis data yang benar, kami sarankan Anda menentukan nilai konfigurasi numerik sebagai string. Kemudian, buat komponen Anda mengurainya sebagai bilangan bulat atau float. Hal ini memastikan bahwa nilai konfigurasi Anda memiliki tipe yang sama dalam konfigurasi dan pada perangkat inti Anda.

`ComponentDependencies`  <a name="recipe-reference-component-dependencies"></a>
(Opsional) Sebuah kamus objek yang masing-masing mendefinisikan dependensi komponen untuk komponen tersebut. Kunci untuk setiap objek mengidentifikasi nama ketergantungan komponen. AWS IoT Greengrass menginstal dependensi komponen saat komponen diinstal. AWS IoT Greengrass menunggu dependensi dimulai sebelum memulai komponen. Setiap objek berisi informasi berikut.    
`VersionRequirement`  
Kendala versi semantik npm-style yang menentukan versi komponen yang kompatibel untuk dependensi ini. Anda dapat menentukan versi atau rentang versi. Untuk informasi lebih lanjut, lihat [kalkulator versi semantik npm](https://semver.npmjs.com/).  
`DependencyType`  
(Opsional) Jenis dependensi ini. Pilih salah satu dari opsi berikut:  
+ `SOFT` — Komponen tidak me-restart jika dependensi mengubah keadaan.
+ `HARD` — Komponen me-restart jika dependensi mengubah keadaan.
Default ke `HARD`.

`ComponentType`  
(Opsional) Jenis komponen.  
Kami tidak menyarankan Anda menentukan jenis komponen dalam resep. AWS IoT Greengrass menetapkan tipe untuk Anda saat Anda membuat komponen.
Jenis ini dapat berupa salah satu dari jenis-jenis berikut:  
+ `aws.greengrass.generic` — Komponen menjalankan perintah atau menyediakan artefak.
+ `aws.greengrass.lambda` – Komponen menjalankan fungsi Lambda menggunakan [Komponen peluncur Lambda](lambda-launcher-component.md). Parameter `ComponentSource` menentukan ARN fungsi Lambda yang dijalankan oleh komponen ini.

  Kami tidak menyarankan Anda menggunakan opsi ini, karena opsi ini diatur oleh AWS IoT Greengrass saat Anda membuat komponen dari fungsi Lambda. Untuk informasi selengkapnya, lihat [Jalankan AWS Lambda fungsi](run-lambda-functions.md).
+ `aws.greengrass.plugin` – Komponen ini berjalan pada komponen plugin dalam Java Virtual Machine (JVM) yang sama seperti inti Greengrass. Jika Anda men-deploy atau me-restart komponen plugin, inti Greengrass akan me-restart.

  Komponen plugin menggunakan file log yang sama seperti inti Greengrass. Untuk informasi selengkapnya, lihat [Memantau AWS IoT Greengrass log](monitor-logs.md).

  Kami tidak menyarankan Anda menggunakan opsi ini dalam resep komponen, karena ini ditujukan untuk komponen yang AWS disediakan yang ditulis di Java yang secara langsung berinteraksi dengan inti Greengrass. Untuk informasi lebih lanjut tentang komponen publik mana yang merupakan plugin, lihat [Komponen yang disediakan oleh AWS](public-components.md).
+ `aws.greengrass.nucleus` — Komponen nukleus. Untuk informasi selengkapnya, lihat [Inti Greengrass](greengrass-nucleus-component.md).

  Kami tidak menyarankan Anda menggunakan opsi ini dalam resep komponen. Opsi ini ditujukan untuk komponen inti Greengrass, yang menyediakan fungsionalitas minimum perangkat lunak inti AWS IoT Greengrass .
Default-nya adalah `aws.greengrass.generic` saat Anda membuat komponen dari resep, atau `aws.greengrass.lambda` saat Anda membuat komponen dari fungsi Lambda.  
Untuk informasi selengkapnya, lihat [Jenis komponen](develop-greengrass-components.md#component-types).

`ComponentSource`  
(Opsional) ARN fungsi Lambda yang dijalankan komponen.  
Kami tidak menyarankan Anda menentukan sumber komponen dalam resep. AWS IoT Greengrass menetapkan parameter ini untuk Anda saat Anda membuat komponen dari fungsi Lambda. Untuk informasi selengkapnya, lihat [Jalankan AWS Lambda fungsi](run-lambda-functions.md).

  `Manifests`   
Daftar objek yang masing-masing menentukan siklus hidup, parameter, dan persyaratan komponen untuk platform. Jika perangkat inti cocok dengan persyaratan platform beberapa manifes, AWS IoT Greengrass gunakan manifes pertama yang cocok dengan perangkat inti. Untuk memastikan bahwa perangkat inti menggunakan manifes yang benar, tentukan manifes dengan persyaratan platform ketat terlebih dahulu. Manifes yang berlaku untuk semua platform harus menjadi manifes terakhir dalam daftar.  
Sebuah perangkat inti harus cocok setidaknya dengan satu persyaratan platform manifes untuk menginstal komponen. Jika tidak ada manifes yang cocok dengan perangkat AWS IoT Greengrass inti, maka perangkat lunak Core tidak menginstal komponen dan penerapan gagal.
Setiap objek berisi informasi berikut:    
`Name`  
(Opsional) Nama yang bersahabat untuk platform yang ditentukan leh manifes ini.  
Jika Anda menghilangkan parameter ini, AWS IoT Greengrass buat nama dari platform `os` dan`architecture`.  
  `Platform`   
(Opsional) Sebuah objek yang menentukan platform yang padanya manifes ini berlaku. Hilangkan parameter ini untuk menentukan manifes yang berlaku untuk semua platform.  
Objek ini menentukan pasangan kunci-nilai tentang platform di mana perangkat inti berjalan. Saat Anda menerapkan komponen ini, perangkat lunak AWS IoT Greengrass Core membandingkan pasangan nilai kunci ini dengan atribut platform pada perangkat inti. Perangkat lunak AWS IoT Greengrass Core selalu mendefinisikan `os` dan`architecture`, dan mungkin mendefinisikan atribut tambahan. Anda dapat menentukan atribut platform kustom untuk perangkat inti ketika Anda men-deploy komponen inti Greengrass. Untuk informasi lebih lanjut, lihat bagian [platform menimpa parameter](greengrass-nucleus-component.md#greengrass-nucleus-component-configuration-platform-overrides) dari [komponen nukleus Greengrass](greengrass-nucleus-component.md).  
Untuk setiap pasangan kunci-nilai, Anda dapat menentukan salah satu nilai berikut:  
+ Nilai yang tepat, seperti `linux` atau`windows`. Nilai yang tepat harus dimulai dengan huruf atau angka.
+ `*`, yang cocok dengan nilai apa pun. Hal ini juga cocok ketika nilai tidak ada.
+ Sebuah ekspresi reguler gaya Java, seperti `/windows|linux/`. Ekspresi reguler harus dimulai dan diakhiri dengan karakter garis miring (`/`). Misalnya, ekspresi reguler `/.+/` cocok dengan nilai non-kosong.
Objek ini berisi informasi berikut:    
`runtime`  
Runtime [inti Greengrass](https://docs.aws.amazon.com/greengrass/v2/developerguide/how-it-works.html#concept-overview) untuk platform yang didukung manifes ini. Saat mendefinisikan beberapa manifes dengan platform`runtime`, Nilai runtime yang didukung dalam resep adalah `aws_nucleus_lite` dan `*` hanya. Untuk menargetkan perangkat klasik, bidang runtime TIDAK HARUS ditentukan dalam resep. Runtime Greengrass Nucleus yang didukung mencakup nilai-nilai berikut:  
+ `*`
+ `aws_nucleus_lite`  
`os`  
(Opsional) Nama sistem operasi untuk platform yang didukung oleh manifes ini. Platform umum mencakup nilai-nilai berikut:  
+ `linux`
+ `windows`
+ `darwin` (macOS)  
`architecture`  
(Opsional) Arsitektur prosesor untuk platform yang didukung oleh manifes ini. Arsitektur umum mencakup nilai-nilai berikut:  
+ `amd64`
+ `arm`
+ `aarch64`
+ `x86`  
`architecture.detail`  
(Opsional) Detail arsitektur prosesor untuk platform yang didukung manifes ini. Rincian arsitektur umum mencakup nilai-nilai berikut:  
+ `arm61`
+ `arm71`
+ `arm81`  
`key`  
(Opsional) Atribut platform yang Anda tetapkan untuk manifes ini. Ganti *Key* dengan nama atribut platform. Perangkat lunak AWS IoT Greengrass Core mencocokkan atribut platform ini dengan pasangan kunci-nilai yang Anda tentukan dalam konfigurasi komponen inti Greengrass. Untuk informasi lebih lanjut, lihat bagian [platform menimpa parameter](greengrass-nucleus-component.md#greengrass-nucleus-component-configuration-platform-overrides) dari [komponen nukleus Greengrass](greengrass-nucleus-component.md).  
Gunakan format nama domain terbalik untuk menghindari tabrakan nama dalam perusahaan Anda. Misalnya, jika perusahaan Anda memiliki `example.com` dan Anda mengerjakan proyek radio, Anda dapat memberi nama atribut platform kustom `com.example.radio.RadioModule`. Hal ini membantu menghindari tabrakan nama atribut platform dalam perusahaan Anda.
Misalnya, Anda dapat menentukan atribut platform, `com.example.radio.RadioModule`, untuk menentukan manifes yang berbeda berdasarkan modul radio yang tersedia pada perangkat inti. Setiap manifes dapat mencakup artefak yang berbeda yang berlaku pada konfigurasi perangkat keras yang berbeda, agar Anda men-deploy serangkaian perangkat lunak minimal ke perangkat inti.  
  `Lifecycle`   
Objek atau string yang mendefinisikan cara menginstal dan menjalankan komponen pada platform yang didefinisikan oleh manifes ini. Anda juga dapat menentukan [siklus hidup global](#global-lifecycle-definition) yang berlaku untuk semua platform. Perangkat inti hanya menggunakan siklus hidup global jika manifes yang akan digunakan tidak menentukan siklus hidup.  
Anda mendefinisikan siklus hidup ini dalam manifes. Langkah-langkah siklus hidup yang Anda tentukan di sini hanya berlaku untuk platform yang ditentukan oleh manifes ini. Anda juga dapat menentukan [siklus hidup global](#global-lifecycle-definition) yang berlaku untuk semua platform.
Objek atau string ini berisi informasi berikut:    
  `Setenv`   
(Opsional) Kamus variabel lingkungan untuk menyediakan semua skrip siklus hidup. Anda dapat mengganti variabel lingkungan ini dengan `Setenv` dalam setiap skrip siklus hidup.  
  `install`   
(Opsional) Objek atau string yang mendefinisikan skrip untuk dijalankan ketika komponen diinstal. Perangkat lunak AWS IoT Greengrass Core juga menjalankan langkah siklus hidup ini setiap kali perangkat lunak diluncurkan.  
Jika skrip `install` keluar dengan kode sukses, komponen tersebut akan memasuki keadaan `INSTALLED`.  
Objek atau string ini berisi informasi berikut:    
`Script`  <a name="recipe-lifecycle-script"></a>
Skrip yang akan dijalankan.  
`RequiresPrivilege`  <a name="recipe-lifecycle-requiresprivilege"></a>
(Opsional) Anda dapat menjalankan skrip dengan hak istimewa root. Jika Anda menyetel opsi ini`true`, maka perangkat lunak AWS IoT Greengrass Core menjalankan skrip siklus hidup ini sebagai root, bukan sebagai pengguna sistem yang Anda konfigurasikan untuk menjalankan komponen ini. Default ke `false`.  
`Skipif`  <a name="recipe-lifecycle-skipif"></a>
(Opsional) Periksa untuk menentukan apakah akan menjalankan skrip atau tidak. Anda dapat menentukan untuk memeriksa apakah executable berada di jalur atau apakah file ada. Jika outputnya benar, maka perangkat lunak AWS IoT Greengrass Core melewatkan langkahnya. Pilih salah satu cek berikut:  
+ `onpath runnable` — Periksa apakah runnable berada di jalur sistem. Misalnya, gunakan **onpath python3** untuk melewati langkah siklus hidup ini jika Python 3 tersedia.
+ `exists file` — Periksa apakah file ada. Misalnya, gunakan **exists /tmp/my-configuration.db** untuk melewati langkah siklus hidup ini jika `/tmp/my-configuration.db` ada.  
`Timeout`  <a name="recipe-lifecycle-timeout"></a>
(Opsional) Jumlah maksimum waktu dalam detik yang dapat dijalankan skrip sebelum perangkat lunak inti AWS IoT Greengrass mengakhiri proses.  
Default: 120 detik.  
`Setenv`  <a name="recipe-lifecycle-environment"></a>
(Opsional) Kamus variabel lingkungan untuk menyediakan skrip. Variabel lingkungan ini menimpa variabel yang Anda berikan di `Lifecycle.Setenv`.  
  `run`   
(Opsional) Objek atau string yang mendefinisikan skrip untuk dijalankan ketika komponen dimulai.  
Komponen memasuki keadaan `RUNNING` saat langkah siklus hidup ini berjalan. Jika skrip `run` keluar dengan kode sukses, komponen tersebut akan memasuki keadaan `STOPPING`. Jika `shutdown` skrip ditentukan, itu berjalan; jika tidak komponen memasuki `FINISHED` status.  
Komponen yang bergantung pada komponen ini dimulai saat langkah siklus hidup ini berjalan. Untuk menjalankan proses latar belakang, seperti layanan yang digunakan komponen dependen, gunakan langkah siklus hidup `startup` sebagai gantinya.  
Saat Anda menerapkan komponen dengan `run` siklus hidup, perangkat inti dapat melaporkan penerapan selengkap segera setelah skrip siklus hidup ini berjalan. Akibatnya, penerapan dapat selesai dan berhasil bahkan jika skrip `run` siklus hidup gagal segera setelah dijalankan. Jika Anda ingin status penerapan bergantung pada hasil skrip awal komponen, gunakan langkah `startup` siklus hidup sebagai gantinya.  
Anda dapat menentukan hanya satu `startup` atau `run` siklus hidup.
Objek atau string ini berisi informasi berikut:    
`Script`  <a name="recipe-lifecycle-script"></a>
Skrip yang akan dijalankan.  
`RequiresPrivilege`  <a name="recipe-lifecycle-requiresprivilege"></a>
(Opsional) Anda dapat menjalankan skrip dengan hak istimewa root. Jika Anda menyetel opsi ini`true`, maka perangkat lunak AWS IoT Greengrass Core menjalankan skrip siklus hidup ini sebagai root, bukan sebagai pengguna sistem yang Anda konfigurasikan untuk menjalankan komponen ini. Default ke `false`.  
`Skipif`  <a name="recipe-lifecycle-skipif"></a>
(Opsional) Periksa untuk menentukan apakah akan menjalankan skrip atau tidak. Anda dapat menentukan untuk memeriksa apakah executable berada di jalur atau apakah file ada. Jika output benar, maka Perangkat lunak inti AWS IoT Greengrass melewati langkah itu. Pilih salah satu cek berikut:  
+ `onpath runnable` — Periksa apakah runnable berada di jalur sistem. Misalnya, gunakan **onpath python3** untuk melewati langkah siklus hidup ini jika Python 3 tersedia.
+ `exists file` — Periksa apakah file ada. Misalnya, gunakan **exists /tmp/my-configuration.db** untuk melewati langkah siklus hidup ini jika `/tmp/my-configuration.db` ada.  
`Timeout`  <a name="recipe-lifecycle-timeout"></a>
(Opsional) Jumlah waktu maksimum dalam hitungan detik skrip dapat dijalankan sebelum perangkat lunak AWS IoT Greengrass Inti menghentikan proses.  
Langkah siklus hidup ini tidak berbatas waktu secara default. Jika Anda menghilangkan batas waktu ini, skrip `run` akan berjalan sampai skrip tersebut keluar.  
`Setenv`  <a name="recipe-lifecycle-environment"></a>
(Opsional) Kamus variabel lingkungan untuk menyediakan skrip. Variabel lingkungan ini menimpa variabel yang Anda berikan di `Lifecycle.Setenv`.  
  `startup`   
(Opsional) Objek atau string yang mendefinisikan proses latar belakang untuk dijalankan ketika komponen dimulai.  
Gunakan `startup` untuk menjalankan perintah yang harus keluar dengan sukses atau memperbarui status komponen `RUNNING` sebelum komponen dependen dapat dimulai. Gunakan operasi [UpdateState](ipc-component-lifecycle.md#ipc-operation-updatestate)IPC untuk mengatur status komponen ke `RUNNING` atau `ERRORED` ketika komponen memulai skrip yang tidak keluar. Misalnya, Anda dapat menentukan langkah `startup` yang memulai proses MySQL dengan `/etc/init.d/mysqld start`.  
Komponen memasuki keadaan `STARTING` saat langkah siklus hidup ini berjalan. Jika skrip `startup` keluar dengan kode sukses, komponen tersebut akan memasuki keadaan `RUNNING`. Kemudian, komponen dependen bisa dimulai.  
Saat Anda menerapkan komponen dengan `startup` siklus hidup, perangkat inti dapat melaporkan penerapan sebagai selesai setelah skrip siklus hidup ini keluar atau melaporkan statusnya. Dengan kata lain, status penerapan adalah `IN_PROGRESS` sampai semua skrip startup komponen keluar atau melaporkan status.  
Anda dapat menentukan hanya satu `startup` atau `run` siklus hidup.
Objek atau string ini berisi informasi berikut:    
`Script`  <a name="recipe-lifecycle-script"></a>
Skrip yang akan dijalankan.  
`RequiresPrivilege`  <a name="recipe-lifecycle-requiresprivilege"></a>
(Opsional) Anda dapat menjalankan skrip dengan hak istimewa root. Jika Anda menyetel opsi ini`true`, maka perangkat lunak AWS IoT Greengrass Core menjalankan skrip siklus hidup ini sebagai root, bukan sebagai pengguna sistem yang Anda konfigurasikan untuk menjalankan komponen ini. Default ke `false`.  
`Skipif`  <a name="recipe-lifecycle-skipif"></a>
(Opsional) Periksa untuk menentukan apakah akan menjalankan skrip atau tidak. Anda dapat menentukan untuk memeriksa apakah executable berada di jalur atau apakah file ada. Jika output benar, maka Perangkat lunak inti AWS IoT Greengrass melewati langkah itu. Pilih salah satu cek berikut:  
+ `onpath runnable` — Periksa apakah runnable berada di jalur sistem. Misalnya, gunakan **onpath python3** untuk melewati langkah siklus hidup ini jika Python 3 tersedia.
+ `exists file` — Periksa apakah file ada. Misalnya, gunakan **exists /tmp/my-configuration.db** untuk melewati langkah siklus hidup ini jika `/tmp/my-configuration.db` ada.  
`Timeout`  <a name="recipe-lifecycle-timeout"></a>
(Opsional) Jumlah maksimum waktu dalam detik yang dapat dijalankan skrip sebelum perangkat lunak inti AWS IoT Greengrass mengakhiri proses.  
Default: 120 detik.  
`Setenv`  <a name="recipe-lifecycle-environment"></a>
(Opsional) Kamus variabel lingkungan untuk menyediakan skrip. Variabel lingkungan ini menimpa variabel yang Anda berikan di `Lifecycle.Setenv`.  
  `shutdown`   
(Opsional) Objek atau string yang mendefinisikan skrip untuk dijalankan ketika komponen dimatikan. Gunakan siklus hidup shutdown untuk mengeksekusi kode yang ingin Anda jalankan saat komponen dalam status. `STOPPING` Siklus hidup shutdown dapat digunakan untuk menghentikan proses yang dimulai oleh skrip atau. `startup` `run`  
Jika Anda memulai proses latar belakang di `startup`, gunakan langkah `shutdown` untuk menghentikan proses itu ketika komponen dimatikan. Misalnya, Anda dapat menentukan langkah `shutdown` yang menghentikan proses MySQL dengan `/etc/init.d/mysqld stop`.  
`shutdown`Skrip berjalan setelah komponen memasuki `STOPPING` status. Jika skrip berhasil diselesaikan, komponen memasuki `FINISHED` status.  
Objek atau string ini berisi informasi berikut:    
`Script`  <a name="recipe-lifecycle-script"></a>
Skrip yang akan dijalankan.  
`RequiresPrivilege`  <a name="recipe-lifecycle-requiresprivilege"></a>
(Opsional) Anda dapat menjalankan skrip dengan hak istimewa root. Jika Anda menyetel opsi ini`true`, maka perangkat lunak AWS IoT Greengrass Core menjalankan skrip siklus hidup ini sebagai root, bukan sebagai pengguna sistem yang Anda konfigurasikan untuk menjalankan komponen ini. Default ke `false`.  
`Skipif`  <a name="recipe-lifecycle-skipif"></a>
(Opsional) Periksa untuk menentukan apakah akan menjalankan skrip atau tidak. Anda dapat menentukan untuk memeriksa apakah executable berada di jalur atau apakah file ada. Jika output benar, maka Perangkat lunak inti AWS IoT Greengrass melewati langkah itu. Pilih salah satu cek berikut:  
+ `onpath runnable` — Periksa apakah runnable berada di jalur sistem. Misalnya, gunakan **onpath python3** untuk melewati langkah siklus hidup ini jika Python 3 tersedia.
+ `exists file` — Periksa apakah file ada. Misalnya, gunakan **exists /tmp/my-configuration.db** untuk melewati langkah siklus hidup ini jika `/tmp/my-configuration.db` ada.  
`Timeout`  
(Opsional) Jumlah waktu maksimum dalam hitungan detik skrip dapat dijalankan sebelum perangkat lunak AWS IoT Greengrass Inti menghentikan proses.  
Default: 15 detik.  
`Setenv`  <a name="recipe-lifecycle-environment"></a>
(Opsional) Kamus variabel lingkungan untuk menyediakan skrip. Variabel lingkungan ini menimpa variabel yang Anda berikan di `Lifecycle.Setenv`.  
  `recover`   
(Opsional) Objek atau string yang mendefinisikan skrip untuk dijalankan ketika komponen mengalami kesalahan.  
Langkah ini berjalan ketika komponen memasuki keadaan `ERRORED`. Jika komponen tersebut memasuki keadaan `ERRORED` tiga kali tanpa berhasil pulih, komponen tersebut akan berubah ke keadaan `BROKEN`. Untuk memperbaiki komponen `BROKEN`, Anda harus men-deploy komponen itu lagi.  
Objek atau string ini berisi informasi berikut:    
`Script`  <a name="recipe-lifecycle-script"></a>
Skrip yang akan dijalankan.  
`RequiresPrivilege`  <a name="recipe-lifecycle-requiresprivilege"></a>
(Opsional) Anda dapat menjalankan skrip dengan hak istimewa root. Jika Anda menyetel opsi ini`true`, maka perangkat lunak AWS IoT Greengrass Core menjalankan skrip siklus hidup ini sebagai root, bukan sebagai pengguna sistem yang Anda konfigurasikan untuk menjalankan komponen ini. Default ke `false`.  
`Skipif`  <a name="recipe-lifecycle-skipif"></a>
(Opsional) Periksa untuk menentukan apakah akan menjalankan skrip atau tidak. Anda dapat menentukan untuk memeriksa apakah executable berada di jalur atau apakah file ada. Jika output benar, maka Perangkat lunak inti AWS IoT Greengrass melewati langkah itu. Pilih salah satu cek berikut:  
+ `onpath runnable` — Periksa apakah runnable berada di jalur sistem. Misalnya, gunakan **onpath python3** untuk melewati langkah siklus hidup ini jika Python 3 tersedia.
+ `exists file` — Periksa apakah file ada. Misalnya, gunakan **exists /tmp/my-configuration.db** untuk melewati langkah siklus hidup ini jika `/tmp/my-configuration.db` ada.  
`Timeout`  
(Opsional) Jumlah waktu maksimum dalam hitungan detik skrip dapat dijalankan sebelum perangkat lunak AWS IoT Greengrass Inti menghentikan proses.  
Default: 60 detik.  
`Setenv`  <a name="recipe-lifecycle-environment"></a>
(Opsional) Kamus variabel lingkungan untuk menyediakan skrip. Variabel lingkungan ini menimpa variabel yang Anda berikan di `Lifecycle.Setenv`.  
  `bootstrap`   
(Opsional) Objek atau string yang mendefinisikan skrip yang memerlukan perangkat lunak AWS IoT Greengrass inti atau perangkat inti untuk memulai ulang. Hal ini memungkinkan Anda mengembangkan komponen yang melakukan restart setelah menginstal pembaruan sistem operasi atau pembaruan waktu aktif, misalnya.  
Untuk menginstal pembaruan atau dependensi yang tidak memerlukan perangkat lunak atau perangkat AWS IoT Greengrass inti untuk memulai ulang, gunakan siklus hidup [penginstalan](#install-lifecycle-definition).
Langkah siklus hidup ini berjalan sebelum langkah siklus hidup penginstalan dalam kasus berikut ketika perangkat lunak AWS IoT Greengrass Core menyebarkan komponen:  
+ Komponen men-deploy ke perangkat inti untuk pertama kalinya.
+ Versi komponen berubah.
+ Bootstrap script berubah sebagai hasil dari pembaruan konfigurasi komponen.
Setelah perangkat lunak AWS IoT Greengrass Core menyelesaikan langkah bootstrap untuk semua komponen yang memiliki langkah bootstrap dalam penerapan, perangkat lunak dimulai ulang.  
Anda harus mengkonfigurasi perangkat lunak AWS IoT Greengrass Core sebagai layanan sistem untuk memulai ulang perangkat lunak AWS IoT Greengrass Core atau perangkat inti. Jika Anda tidak mengonfigurasi perangkat lunak AWS IoT Greengrass Core sebagai layanan sistem, perangkat lunak tidak akan dimulai ulang. Untuk informasi selengkapnya, lihat [Konfigurasikan inti Greengrass sebagai layanan sistem](configure-greengrass-core-v2.md#configure-system-service).
Objek atau string ini berisi informasi berikut:    
`BootstrapOnRollback`  
Ketika fitur ini diaktifkan, hanya `BootstrapOnRollback` akan berjalan untuk komponen yang telah menyelesaikan atau mencoba menjalankan langkah-langkah siklus hidup bootstrap sebagai bagian dari penerapan target yang gagal. Fitur ini tersedia untuk Greengrass nucleus versi 2.12.0 dan yang lebih baru.
(Opsional) Anda dapat menjalankan langkah-langkah siklus hidup bootstrap sebagai bagian dari penerapan rollback. Jika Anda menyetel opsi ini`true`, langkah-langkah siklus hidup bootstrap yang ditentukan dalam penerapan rollback akan berjalan. Ketika penerapan gagal, versi sebelumnya dari siklus hidup bootstrap komponen akan berjalan lagi selama penerapan rollback.  
Default ke `false`.  
`Script`  
Skrip yang akan dijalankan. Kode keluar dari skrip ini mendefinisikan instruksi restart. Gunakan kode keluar berikut:  
+ `0`— Jangan me-restart perangkat lunak AWS IoT Greengrass Core atau perangkat inti. Perangkat lunak AWS IoT Greengrass Core masih restart setelah semua komponen bootstrap.
+ `100`— Permintaan untuk me-restart perangkat lunak AWS IoT Greengrass Core.
+ `101` — Permintaan untuk me-restart perangkat inti.
Kode keluar 100 sampai 199 dicadangkan untuk perilaku khusus. Kode keluar lainnya mewakili kesalahan skrip.  
`RequiresPrivilege`  <a name="recipe-lifecycle-requiresprivilege"></a>
(Opsional) Anda dapat menjalankan skrip dengan hak istimewa root. Jika Anda menyetel opsi ini`true`, maka perangkat lunak AWS IoT Greengrass Core menjalankan skrip siklus hidup ini sebagai root, bukan sebagai pengguna sistem yang Anda konfigurasikan untuk menjalankan komponen ini. Default ke `false`.  
`Timeout`  <a name="recipe-lifecycle-timeout"></a>
(Opsional) Jumlah maksimum waktu dalam detik yang dapat dijalankan skrip sebelum perangkat lunak inti AWS IoT Greengrass mengakhiri proses.  
Default: 120 detik.  
`Setenv`  <a name="recipe-lifecycle-environment"></a>
(Opsional) Kamus variabel lingkungan untuk menyediakan skrip. Variabel lingkungan ini menimpa variabel yang Anda berikan di `Lifecycle.Setenv`.  
  `Selections`   
(Opsional) Daftar kunci pilihan yang menentukan bagian [Siklus hidup global](#global-lifecycle-definition) yang akan dijalankan untuk manifes ini. Dalam siklus hidup global, Anda dapat menentukan langkah-langkah siklus hidup dengan kunci pilihan pada tingkat mana pun untuk memilih sub-bagian dari siklus hidup. Kemudian, perangkat inti menggunakan bagian-bagian yang cocok dengan kunci pilihan dalam manifes ini. Untuk informasi lebih lanjut, lihat bagian [contoh siklus hidup global](#global-lifecycle-definition).  
Perangkat inti hanya menggunakan siklus hidup global hanya jika manifes ini tidak menentukan siklus hidup.
Anda dapat menentukan kunci pilihan `all` untuk menjalankan bagian dari siklus hidup global yang tidak memiliki kunci pilihan.  
  `Artifacts`   
(Opsional) Daftar objek yang masing-masing menentukan artefak biner untuk komponen pada platform yang ditentukan oleh manifes ini. Misalnya, Anda dapat menentukan kode atau citra sebagai artefak.  
Saat komponen digunakan, perangkat lunak AWS IoT Greengrass Core mengunduh artefak ke folder pada perangkat inti. Anda juga dapat menentukan artefak sebagai file arsip yang diekstraki oleh perangkat lunak setelah mengunduhnya.  
Anda dapat menggunakan [variabel resep](#recipe-variables) untuk mendapatkan jalur ke folder tempat artefak menginstal pada perangkat inti.  
+ File normal — Gunakan [variabel resep artifacts:path](#component-recipe-artifacts-path) untuk mendapatkan jalur ke folder yang berisi artefak. Sebagai contoh, tentukan `{artifacts:path}/my_script.py` dalam resep untuk mendapatkan jalur ke artefak yang memiliki URI `s3://amzn-s3-demo-bucket/path/to/my_script.py`.
+ Arsip yang diekstraksi — Gunakan [variabel resep artifacts:decompressedPath](#component-recipe-artifacts-decompressed-path) untuk mendapatkan jalur ke folder yang berisi artefak arsip yang diekstraksi. Perangkat lunak AWS IoT Greengrass Core mengekstrak setiap arsip ke folder dengan nama yang sama dengan arsip. Sebagai contoh, tentukan `{artifacts:decompressedPath}/my_archive/my_script.py` dalam resep untuk mendapatkan jalur ke artefak arsip `my_script.py` yang memiliki URI `s3://amzn-s3-demo-bucket/path/to/my_archive.zip`.
Ketika Anda mengembangkan komponen dengan artefak arsip pada perangkat inti lokal, Anda mungkin tidak memiliki URI untuk artefak itu. Untuk menguji komponen Anda dengan `Unarchive` yang mengekstraksi artefak, tentukan URI tempat nama file cocok dengan nama file artefak arsip Anda. Anda dapat menentukan URI di mana Anda mengharapkan untuk mengunggah artefak arsip, atau Anda dapat menentukan URI placeholder yang baru. Misalnya, untuk mengekstraksi artefak `my_archive.zip` selama deployment lokal, Anda dapat menentukan `s3://amzn-s3-demo-bucket/my_archive.zip`.
Setiap objek berisi informasi berikut:    
`Uri`  
URI artefak dalam bucket S3. Perangkat lunak AWS IoT Greengrass Core mengambil artefak dari URI ini saat komponen diinstal, kecuali artefak sudah ada di perangkat. Setiap artefak harus memiliki nama file yang unik dalam setiap manifes.  
`Unarchive`  
(Opsional) Jenis arsip yang akan dibongkar. Pilih dari salah satu pilihan berikut:  
+ `NONE` – File ini bukanlah arsip yang akan dibongkar. Perangkat lunak inti AWS IoT Greengrass menginstal artefak ke folder pada perangkat inti. Anda dapat menggunakan [variabel resep artifacts:path](#component-recipe-artifacts-path) untuk mendapatkan jalur ke folder ini.
+ `ZIP` – File ini adalah arsip ZIP. Perangkat lunak AWS IoT Greengrass Core mengekstrak arsip ke folder dengan nama yang sama dengan arsip. Anda dapat menggunakan [variabel resep artifacts:decompressedPath](#component-recipe-artifacts-decompressed-path) untuk mendapatkan jalur ke folder ini.
Default ke `NONE`.  
  `Permission`   
(Opsional) Sebuah objek yang mendefinisikan izin akses yang akan ditentukan untuk file artefak ini. Anda dapat mengatur izin membaca dan izin mengeksekusi.  
Anda tidak dapat mengatur izin tulis, karena perangkat lunak AWS IoT Greengrass Core tidak mengizinkan komponen untuk mengedit file artefak di folder artefak. Untuk mengedit file artefak dalam komponen, salin ke lokasi lain atau publikasikan dan deploy file artefak yang baru.
Jika Anda mendefinisikan artefak sebagai arsip untuk dibongkar, maka perangkat lunak AWS IoT Greengrass Core menetapkan izin akses ini pada file yang dibongkar dari arsip. Perangkat lunak AWS IoT Greengrass Core menetapkan izin akses folder `ALL` untuk `Read` dan`Execute`. Hal ini memungkinkan komponen untuk melihat file yang dibongkar dalam folder. Untuk mengatur izin pada masing-masing file dari arsip, Anda dapat mengatur izin di [skrip install lifecycle](#install-lifecycle-definition).  
Objek ini berisi informasi berikut:    
`Read`  
(Opsional) Izin baca yang akan ditetapkan untuk file artefak ini. Untuk mengizinkan komponen lain untuk mengakses artefak ini, seperti komponen yang bergantung pada komponen ini, tentukan `ALL`. Pilih dari salah satu pilihan berikut:  
+ `NONE` – File ini tidak dapat dibaca.
+ `OWNER` – File ini dapat dibaca oleh pengguna sistem yang Anda konfigurasikan untuk menjalankan komponen ini.
+ `ALL` – File ini dapat dibaca oleh semua pengguna.
Default ke `OWNER`.  
`Execute`  
(Opsional) Izin run yang akan ditetapkan untuk file artefak ini. Izin `Execute` menyiratkan izin `Read`. Misalnya, jika Anda menentukan `ALL` untuk `Execute`, maka semua pengguna dapat membaca dan menjalankan file artefak ini.  
Pilih dari salah satu pilihan berikut:  
+ `NONE` – File ini tidak dapat dijalankan.
+ `OWNER` – File ini dapat dibaca oleh pengguna sistem yang Anda konfigurasikan untuk menjalankan komponen ini.
+ `ALL` – File ini dapat dijalankan oleh semua pengguna.
Default ke `NONE`.  
`Digest`  
(Hanya baca) Cryptographic digest hash dari artefak. Saat Anda membuat komponen, AWS IoT Greengrass gunakan algoritma hash untuk menghitung hash dari file artefak. Kemudian, ketika Anda men-deploy komponen, inti Greengrass menghitung hash dari artefak terunduh dan membandingkan hash dengan digest ini untuk memverifikasi artefak sebelum instalasi. Jika hash tidak cocok dengan digest, deployment gagal.  
Jika Anda menyetel parameter ini, AWS IoT Greengrass ganti nilai yang Anda tetapkan saat membuat komponen.  
`Algorithm`  
(Read-only) Algoritma hash yang AWS IoT Greengrass digunakan untuk menghitung hash intisari artefak.  
Jika Anda menyetel parameter ini, AWS IoT Greengrass ganti nilai yang Anda tetapkan saat membuat komponen.

  `Lifecycle`   
Objek yang mendefinisikan cara menginstal dan menjalankan komponen. Perangkat inti hanya menggunakan siklus hidup global hanya jika [manifes](#manifest-definition) yang akan digunakan tidak menentukan siklus hidup.  
Anda mendefinisikan siklus hidup ini di luar manifes. Anda juga dapat menentukan [manifest siklus hidup](#manifest-lifecycle-definition) yang berlaku untuk platform yang sesuai dengan manifes itu.
Dalam siklus hidup global, Anda dapat menentukan siklus hidup yang berjalan untuk [kunci pilihan](#manifest-selections-definition) tertentu yang Anda tentukan di setiap manifes. Kunci pilihan adalah string yang mengidentifikasi bagian dari siklus hidup global yang akan dijalankan untuk setiap manifes.  
Kunci pilihan `all` adalah default pada setiap bagian tanpa kunci seleksi. Artinya Anda dapat menggunakan pilihan `all` dalam manifes untuk menjalankan bagian siklus hidup global tanpa kunci seleksi. Anda tidak perlu menentukan opsi kunci pilihan `all` dalam siklus hidup global.  
Jika manifes tidak menentukan siklus hidup atau kunci pilihan, default perangkat inti akan menggunakan pilihan `all`. Ini berarti bahwa dalam kasus ini, perangkat inti menggunakan bagian siklus hidup global yang tidak menggunakan kunci pilihan.  
Objek ini berisi informasi yang sama seperti [manifes siklus hidup](#manifest-lifecycle-definition), namun Anda dapat menentukan kunci pilihan pada tingkat mana pun untuk memilih sub-bagian dari siklus hidup.  
Kami menyarankan Anda menggunakan hanya huruf kecil untuk setiap kunci pilihan untuk menghindari pertentangan antara kunci pilihan dan kunci siklus hidup. Kunci siklus hidup dimulai dengan huruf kapital.

**Example Contoh siklus hidup global dengan kunci pilihan tingkat atas**  

```
Lifecycle:
  key1:
    install:
      SkipIf: either onpath executable or exists file
      Script: command1
  key2:
    install:
      Script: command2
  all:
    install:
      Script: command3
```

**Example Contoh siklus hidup global dengan kunci pilihan tingkat bawah**  

```
Lifecycle:
  install:
    Script:
      key1: command1
      key2: command2
      all: command3
```

**Example Contoh siklus hidup global dengan berbagai tingkatan kunci pilihan**  

```
Lifecycle:
  key1:
    install:
      SkipIf: either onpath executable or exists file
      Script: command1
  key2:
    install:
      Script: command2
  all:
    install:
      Script:
        key3: command3
        key4: command4
        all: command5
```

## Variabel resep
<a name="recipe-variables"></a>

Variabel resep mengekspos informasi dari komponen saat ini dan inti yang dapat Anda gunakan dalam resep Anda. Misalnya, Anda dapat menggunakan variabel resep untuk meneruskan parameter konfigurasi komponen ke aplikasi yang Anda jalankan dalam skrip siklus hidup.

Anda dapat menggunakan variabel resep di bagian resep komponen berikut:
+ Definisi siklus hidup.
+ Definisi konfigurasi komponen, jika Anda menggunakan [Greengrass](greengrass-nucleus-component.md) nucleus v2.6.0 atau yang lebih baru dan mengatur opsi konfigurasi ke. [interpolateComponentConfiguration](greengrass-nucleus-component.md#greengrass-nucleus-component-configuration-interpolate-component-configuration)`true` Anda juga dapat menggunakan variabel resep saat [menerapkan pembaruan konfigurasi komponen](update-component-configurations.md#merge-configuration-update-recipe-variables).

Variabel resep menggunakan sintaks `{recipe_variable}`. Kawat lengkung menunjukkan variabel resep.

AWS IoT Greengrass mendukung variabel resep berikut:

`component_dependency_name:configuration:json_pointer`  
Nilai parameter konfigurasi untuk komponen yang didefinisikan oleh resep ini atau untuk komponen yang komponen ini tergantung padanya.  
Anda dapat menggunakan variabel ini untuk memberikan parameter pada skrip yang Anda jalankan dalam siklus hidup komponen.  
AWS IoT Greengrass mendukung variabel resep ini hanya dalam definisi siklus hidup komponen.
Variabel resep ini memiliki masukan berikut:  
+ <a name="recipe-variable-component-dependency-name"></a>`component_dependency_name` — (Opsional) Nama dependensi komponen pada kueri. Hilangkan segmen ini untuk melakukan kueri atas komponen yang menentukan resep ini. Anda hanya dapat menentukan dependensi langsung.
+ `json_pointer` - Pointer JSON pada nilai konfigurasi yang akan dievaluasi. JSON pointer dimulai dengan garis miring `/`. Untuk mengidentifikasi nilai dalam konfigurasi komponen bersusun, gunakan garis miring ke depan (`/`) untuk memisahkan kunci-kunci untuk setiap tingkat dalam konfigurasi. Anda dapat menggunakan nomor sebagai kunci untuk menentukan indeks dalam daftar. Untuk informasi selengkapnya, lihat [spesifikasi pointer JSON](https://tools.ietf.org/html/rfc6901).

  AWS IoT Greengrass Core menggunakan pointer JSON untuk resep dalam format YAMAL.
Pointer JSON dapat mereferensikan jenis node berikut:  
+ Sebuah simpul nilai. AWS IoT Greengrass Core menggantikan variabel resep dengan representasi string dari nilai. Nilai kosong berubah ke `null` sebagai string.
+ Sebuah simpul objek. AWS IoT Greengrass Core menggantikan variabel resep dengan representasi string JSON serial dari objek itu.
+ Tidak ada simpul. AWS IoT Greengrass Core tidak menggantikan variabel resep.
Misalnya, variabel resep `{configuration:/Message}` mengambil nilai kunci `Message` dalam konfigurasi komponen tersebut. Variabel resep `{com.example.MyComponentDependency:configuration:/server/port}` mengambil nilai `port` di konfigurasi objek `server` dari dependensi komponen.

  `component_dependency_name:artifacts:path`   
Jalur akar artefak untuk komponen yang didefinisikan oleh resep ini atau untuk komponen yang komponen ini tergantung padanya.  
Saat komponen diinstal, salin AWS IoT Greengrass artefak komponen ke folder yang diekspos variabel ini. Anda dapat menggunakan variabel ini untuk mengidentifikasi lokasi skrip yang akan dijalankan dalam siklus hidup komponen, misalnya.  
<a name="recipe-variable-artifact-folder-permissions"></a>Folder di jalur ini bersifat hanya-baca. Untuk mengubah file artefak, salin file ke lokasi lain, seperti direktori kerja saat ini (`$PWD` atau `.`). Kemudian, ubah file di sana.  
<a name="recipe-variable-component-dependency-artifact-file-permissions"></a>Untuk membaca atau menjalankan artefak dari dependensi komponen, izin `Read` atau `Execute` artefak itu harus `ALL`. Untuk informasi lebih lanjut, lihat [izin artefak](#component-artifact-permission) yang Anda tentukan dalam resep komponen.  
Variabel resep ini memiliki masukan berikut:  
+ <a name="recipe-variable-component-dependency-name"></a>`component_dependency_name` — (Opsional) Nama dependensi komponen pada kueri. Hilangkan segmen ini untuk melakukan kueri atas komponen yang menentukan resep ini. Anda hanya dapat menentukan dependensi langsung.

  `component_dependency_name:artifacts:decompressedPath`   
Jalur akar artefak dari artefak arsip yang terdekompresi untuk komponen yang didefinisikan oleh resep ini atau untuk komponen yang komponen ini tergantung padanya.  
Saat komponen diinstal, AWS IoT Greengrass buka artefak arsip komponen ke folder yang diekspos variabel ini. Anda dapat menggunakan variabel ini untuk mengidentifikasi lokasi skrip yang akan dijalankan dalam siklus hidup komponen, misalnya.  
Setiap artefak di-unzip ke folder dalam jalur dekompresi, di mana folder itu memiliki nama yang sama dengan artefak dikurangi ekstensinya. Sebagai contoh, sebuah artefak ZIP bernama `models.zip` dibongkar ke folder `{artifacts:decompressedPath}/models`.  
<a name="recipe-variable-artifact-folder-permissions"></a>Folder di jalur ini bersifat hanya-baca. Untuk mengubah file artefak, salin file ke lokasi lain, seperti direktori kerja saat ini (`$PWD` atau `.`). Kemudian, ubah file di sana.  
<a name="recipe-variable-component-dependency-artifact-file-permissions"></a>Untuk membaca atau menjalankan artefak dari dependensi komponen, izin `Read` atau `Execute` artefak itu harus `ALL`. Untuk informasi lebih lanjut, lihat [izin artefak](#component-artifact-permission) yang Anda tentukan dalam resep komponen.  
Variabel resep ini memiliki masukan berikut:  
+ <a name="recipe-variable-component-dependency-name"></a>`component_dependency_name` — (Opsional) Nama dependensi komponen pada kueri. Hilangkan segmen ini untuk melakukan kueri atas komponen yang menentukan resep ini. Anda hanya dapat menentukan dependensi langsung.

  `component_dependency_name:work:path`   
Fitur ini tersedia untuk v2.0.4 dan versi yang lebih baru dari [komponen inti Greengrass](greengrass-nucleus-component.md).  
Jalur akar artefak untuk komponen yang didefinisikan oleh resep ini atau untuk komponen yang komponen ini tergantung padanya. Nilai variabel resep ini setara dengan output dari variabel lingkungan `$PWD` dan perintah [pwd](https://en.wikipedia.org/wiki/Pwd) ketika dijalankan dari konteks komponen.  
Anda dapat menggunakan variabel resep ini untuk berbagi file antara komponen dan dependensi.  
Folder di jalur ini dapat dibaca dan ditulis oleh komponen yang didefinisikan oleh resep ini dan oleh komponen lain yang dijalankan sebagai pengguna dan kelompok yang sama.  
Variabel resep ini memiliki masukan berikut:  
+ <a name="recipe-variable-component-dependency-name"></a>`component_dependency_name` — (Opsional) Nama dependensi komponen pada kueri. Hilangkan segmen ini untuk melakukan kueri atas komponen yang menentukan resep ini. Anda hanya dapat menentukan dependensi langsung.

`kernel:rootPath`  
Jalur akar AWS IoT Greengrass inti.

`iot:thingName`  
Fitur ini tersedia untuk v2.3.0 dan versi kemudian dari [komponen inti Greengrass](greengrass-nucleus-component.md).  
Nama AWS IoT benda perangkat inti.

## Contoh resep
<a name="recipe-examples"></a>

Anda dapat mereferensikan contoh resep berikut untuk membantu Anda membuat resep untuk komponen Anda.

AWS IoT Greengrass mengkurasi indeks komponen Greengrass, yang disebut Greengrass Software Catalog. Katalog ini melacak komponen Greengrass yang dikembangkan oleh komunitas Greengrass. Dari katalog ini, Anda dapat mengunduh, memodifikasi, dan menyebarkan komponen untuk membuat aplikasi Greengrass Anda. Untuk informasi selengkapnya, lihat [Komponen komunitas](greengrass-software-catalog.md).

**Topics**
+ [Resep komponen Hello World](#recipe-example-hello-world)
+ [Contoh komponen waktu aktif Python](#recipe-example-python-runtime)
+ [Komponen resep yang menentukan beberapa kolom](#recipe-example-all-fields)

### Resep komponen Hello World
<a name="recipe-example-hello-world"></a>

Resep berikut menjelaskan komponen Hello World yang menjalankan skrip Python. Komponen ini mendukung semua platform dan menerima `Message` parameter yang AWS IoT Greengrass diteruskan sebagai argumen ke skrip Python. Ini adalah resep untuk komponen Hello World di [Memulai tutorial](getting-started.md).

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

```
{
  "RecipeFormatVersion": "2020-01-25",
  "ComponentName": "com.example.HelloWorld",
  "ComponentVersion": "1.0.0",
  "ComponentDescription": "My first AWS IoT Greengrass component.",
  "ComponentPublisher": "Amazon",
  "ComponentConfiguration": {
    "DefaultConfiguration": {
      "Message": "world"
    }
  },
  "Manifests": [
    {
      "Platform": {
        "os": "linux"
      },
      "Lifecycle": {
        "run": "python3 -u {artifacts:path}/hello_world.py {configuration:/Message}"
      }
    },
    {
      "Platform": {
        "os": "windows"
      },
      "Lifecycle": {
        "run": "py -3 -u {artifacts:path}/hello_world.py {configuration:/Message}"
      }
    }
  ]
}
```

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

```
---
RecipeFormatVersion: '2020-01-25'
ComponentName: com.example.HelloWorld
ComponentVersion: '1.0.0'
ComponentDescription: My first AWS IoT Greengrass component.
ComponentPublisher: Amazon
ComponentConfiguration:
  DefaultConfiguration:
    Message: world
Manifests:
  - Platform:
      os: linux
    Lifecycle:
      run: |
        python3 -u {artifacts:path}/hello_world.py "{configuration:/Message}"
  - Platform:
      os: windows
    Lifecycle:
      run: |
        py -3 -u {artifacts:path}/hello_world.py "{configuration:/Message}"
```

------

### Contoh komponen waktu aktif Python
<a name="recipe-example-python-runtime"></a>

Resep berikut menjelaskan komponen yang menginstal Python. Komponen ini mendukung perangkat Linux 64-bit.

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

```
{
  "RecipeFormatVersion": "2020-01-25",
  "ComponentName": "com.example.PythonRuntime",
  "ComponentDescription": "Installs Python 3.7",
  "ComponentPublisher": "Amazon",
  "ComponentVersion": "3.7.0",
  "Manifests": [
    {
      "Platform": {
        "os": "linux",
        "architecture": "amd64"
      },
      "Lifecycle": {
        "install": "apt-get update\napt-get install python3.7"
      }
    }
  ]
}
```

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

```
---
RecipeFormatVersion: '2020-01-25'
ComponentName: com.example.PythonRuntime
ComponentDescription: Installs Python 3.7
ComponentPublisher: Amazon
ComponentVersion: '3.7.0'
Manifests:
  - Platform:
      os: linux
      architecture: amd64
    Lifecycle:
      install: |
        apt-get update
        apt-get install python3.7
```

------

### Komponen resep yang menentukan beberapa kolom
<a name="recipe-example-all-fields"></a>

Resep komponen berikut menggunakan beberapa kolom resep.

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

```
{
  "RecipeFormatVersion": "2020-01-25",
  "ComponentName": "com.example.FooService",
  "ComponentDescription": "Complete recipe for AWS IoT Greengrass components",
  "ComponentPublisher": "Amazon",
  "ComponentVersion": "1.0.0",
  "ComponentConfiguration": {
    "DefaultConfiguration": {
      "TestParam": "TestValue"
    }
  },
  "ComponentDependencies": {
    "BarService": {
      "VersionRequirement": "^1.1.0",
      "DependencyType": "SOFT"
    },
    "BazService": {
      "VersionRequirement": "^2.0.0"
    }
  },
  "Manifests": [
    {
      "Platform": {
        "os": "linux",
        "architecture": "amd64"
      },
      "Lifecycle": {
        "install": {
          "Skipif": "onpath git",
          "Script": "sudo apt-get install git"
        },
        "Setenv": {
          "environment_variable1": "variable_value1",
          "environment_variable2": "variable_value2"
        }
      },
      "Artifacts": [
        {
          "Uri": "s3://amzn-s3-demo-bucket/hello_world.zip",
          "Unarchive": "ZIP"
        },
        {
          "Uri": "s3://amzn-s3-demo-bucket/hello_world_linux.py"
        }
      ]
    },
    {
      "Lifecycle": {
        "install": {
          "Skipif": "onpath git",
          "Script": "sudo apt-get install git",
          "RequiresPrivilege": "true"
        }
      },
      "Artifacts": [
        {
          "Uri": "s3://amzn-s3-demo-bucket/hello_world.py"
        }
      ]
    }
  ]
}
```

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

```
---
RecipeFormatVersion: '2020-01-25'
ComponentName: com.example.FooService
ComponentDescription: Complete recipe for AWS IoT Greengrass components
ComponentPublisher: Amazon
ComponentVersion: 1.0.0
ComponentConfiguration:
  DefaultConfiguration:
    TestParam: TestValue
ComponentDependencies:
  BarService:
    VersionRequirement: ^1.1.0
    DependencyType: SOFT
  BazService:
    VersionRequirement: ^2.0.0
Manifests:
  - Platform:
      os: linux
      architecture: amd64
    Lifecycle:
      install:
        SkipIf: onpath git
        Script: sudo apt-get install git
      SetEnv:
        environment_variable1: variable_value1
        environment_variable2: variable_value2
    Artifacts:
      - Uri: 's3://amzn-s3-demo-bucket/hello_world.zip'
        Unarchive: ZIP
      - Uri: 's3://amzn-s3-demo-bucket/hello_world_linux.py'
  - Lifecycle:
      install:
        SkipIf: onpath git
        Script: sudo apt-get install git
        RequiresPrivilege: 'true'
    Artifacts:
      - Uri: 's3://amzn-s3-demo-bucket/hello_world.py'
```

------