Langkah 4: Kembangkan dan uji komponen di perangkat Anda - AWS IoT Greengrass

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

Langkah 4: Kembangkan dan uji komponen di perangkat Anda

Komponen adalah modul perangkat lunak yang berjalan pada perangkat AWS IoT Greengrass inti. Komponen memungkinkan Anda untuk membuat dan mengelola aplikasi yang kompleks sebagai blok bangunan diskrit yang dapat Anda gunakan kembali dari satu perangkat inti Greengrass ke yang lain. Setiap komponen terdiri atas resep dan artifact.

  • Resep

    Setiap komponen berisi file resep, yang mendefinisikan metadata nya. Resep ini juga menentukan parameter konfigurasi komponen, dependensi komponen, siklus hidup, dan kompatibilitas platform. Siklus hidup komponen menentukan perintah yang menginstal, menjalankan, dan menutup komponen. Untuk informasi selengkapnya, lihat AWS IoT Greengrass referensi resep komponen.

    Anda bisa menentukan resep dalam format JSON atau YAML.

  • Artefak

    Komponen dapat memiliki sejumlah artifact, yang merupakan komponen biner. Artifact dapat mencakup skrip, kode yang dikompilasi, sumber daya statis, dan file lain yang dikonsumsi komponen. Komponen juga dapat mengonsumsi artifact dari dependensi komponen.

Dengan AWS IoT Greengrass, Anda dapat menggunakan CLI Greengrass untuk mengembangkan dan menguji komponen secara lokal pada perangkat inti Greengrass tanpa interaksi dengan Cloud. AWS Saat menyelesaikan komponen lokal, Anda dapat menggunakan resep komponen dan artefak untuk membuat komponen tersebut di AWS IoT Greengrass layanan di AWS Cloud, lalu menerapkannya ke semua perangkat inti Greengrass Anda. Untuk informasi selengkapnya tentang komponen, lihatKembangkan AWS IoT Greengrass komponen.

Di bagian ini, Anda mempelajari cara membuat dan menjalankan komponen Hello World dasar secara lokal di perangkat inti Anda.

Untuk mengembangkan komponen Hello World di perangkat Anda
  1. Buat folder untuk komponen Anda dengan subfolder untuk resep dan artefak. Jalankan perintah berikut pada perangkat inti Greengrass Anda untuk membuat folder ini dan mengubah ke folder komponen. Ganti ~/greengrassv2 atau %USERPROFILE%\ greengrassv2 dengan path ke folder yang akan digunakan untuk pengembangan lokal.

    Linux or Unix
    mkdir -p ~/greengrassv2/{recipes,artifacts} cd ~/greengrassv2
    Windows Command Prompt (CMD)
    mkdir %USERPROFILE%\greengrassv2\\recipes, %USERPROFILE%\greengrassv2\\artifacts cd %USERPROFILE%\greengrassv2
    PowerShell
    mkdir ~/greengrassv2/recipes, ~/greengrassv2/artifacts cd ~/greengrassv2
  2. Gunakan editor teks untuk membuat file resep yang mendefinisikan metadata, parameter, dependensi, siklus hidup, dan kemampuan platform komponen Anda. Sertakan versi komponen dalam nama file resep agar Anda dapat mengidentifikasi resep yang mencerminkan versi komponen. Anda dapat memilih format YAML atau JSON untuk resep Anda.

    Misalnya, pada sistem berbasis Linux, Anda dapat menjalankan perintah berikut untuk menggunakan GNU nano untuk membuat file.

    JSON
    nano recipes/com.example.HelloWorld-1.0.0.json
    YAML
    nano recipes/com.example.HelloWorld-1.0.0.yaml
    catatan

    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.

  3. Tempel resep berikut ke file.

    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}"

    Bagian ComponentConfiguration resep ini menentukan parameter, Message, yang default -nya adalah world. Bagian Manifests menentukan manifes, yang merupakan serangkaian instruksi siklus hidup dan artifact untuk platform. Anda dapat menentukan beberapa manifes untuk menentukan petunjuk pemasangan yang berbeda untuk berbagai platform, misalnya. Dalam manifes, bagian Lifecycle memerintahkan perangkat inti Greengrass untuk menjalankan skrip Hello World dengan nilai parameter Message sebagai argumen.

  4. Jalankan perintah berikut untuk membuat folder untuk komponen artifact.

    Linux or Unix
    mkdir -p artifacts/com.example.HelloWorld/1.0.0
    Windows Command Prompt (CMD)
    mkdir artifacts\com.example.HelloWorld\1.0.0
    PowerShell
    mkdir artifacts\com.example.HelloWorld\1.0.0
    penting

    Anda harus menggunakan format berikut untuk jalur folder artifact. Sertakan nama dan versi komponen yang Anda tentukan dalam resep.

    artifacts/componentName/componentVersion/
  5. Gunakan editor teks untuk membuat file artefak skrip Python untuk komponen Hello World Anda.

    Misalnya, pada sistem berbasis Linux, Anda dapat menjalankan perintah berikut untuk menggunakan GNU nano untuk membuat file.

    nano artifacts/com.example.HelloWorld/1.0.0/hello_world.py

    Copy dan paste script Python berikut ke dalam file.

    import sys message = "Hello, %s!" % sys.argv[1] # Print the message to stdout, which Greengrass saves in a log file. print(message)
  6. Gunakan AWS IoT Greengrass CLI lokal untuk mengelola komponen pada perangkat inti Greengrass Anda.

    Jalankan perintah berikut untuk menyebarkan komponen ke AWS IoT Greengrass inti. Ganti /greengrass/v2 atau C:\greengrass\v2 dengan folder AWS IoT Greengrass V2 root Anda, dan ganti ~/greengrassv2 atau% USERPROFILE%\ greengrassv2 dengan folder pengembangan komponen Anda.

    Linux or Unix
    sudo /greengrass/v2/bin/greengrass-cli deployment create \ --recipeDir ~/greengrassv2/recipes \ --artifactDir ~/greengrassv2/artifacts \ --merge "com.example.HelloWorld=1.0.0"
    Windows Command Prompt (CMD)
    C:\greengrass\v2\bin\greengrass-cli deployment create ^ --recipeDir %USERPROFILE%\greengrassv2\recipes ^ --artifactDir %USERPROFILE%\greengrassv2\artifacts ^ --merge "com.example.HelloWorld=1.0.0"
    PowerShell
    C:\greengrass\v2\bin\greengrass-cli deployment create ` --recipeDir ~/greengrassv2/recipes ` --artifactDir ~/greengrassv2/artifacts ` --merge "com.example.HelloWorld=1.0.0"

    Perintah ini menambahkan komponen yang menggunakan resep di recipes dan skrip Python di artifacts. Opsi --merge menambahkan atau memperbarui komponen dan versi yang Anda tentukan.

  7. Perangkat lunak AWS IoT Greengrass Core menyimpan stdout dari proses komponen ke file log di folder. logs Jalankan perintah berikut untuk memverifikasi bahwa komponen Hello World berjalan dan mencetak pesan.

    Linux or Unix
    sudo tail -f /greengrass/v2/logs/com.example.HelloWorld.log
    Windows Command Prompt (CMD)
    type C:\greengrass\v2\logs\com.example.HelloWorld.log

    typePerintah menulis konten file ke terminal. Jalankan perintah ini beberapa kali untuk mengamati perubahan dalam file.

    PowerShell
    gc C:\greengrass\v2\logs\com.example.HelloWorld.log -Tail 10 -Wait

    Anda akan melihat pesan yang mirip dengan contoh berikut ini.

    Hello, world!
    catatan

    Jika file tidak ada, penyebaran lokal mungkin belum lengkap. Jika file tidak ada dalam waktu 15 detik, deployment mungkin gagal. Hal ini dapat terjadi jika resep Anda tidak valid, misalnya. Jalankan perintah berikut untuk melihat file log AWS IoT Greengrass inti. File ini mencakup log dari layanan deployment perangkat inti Greengrass.

    Linux or Unix
    sudo tail -f /greengrass/v2/logs/greengrass.log
    Windows Command Prompt (CMD)
    type C:\greengrass\v2\logs\greengrass.log

    typePerintah menulis konten file ke terminal. Jalankan perintah ini beberapa kali untuk mengamati perubahan dalam file.

    PowerShell
    gc C:\greengrass\v2\logs\greengrass.log -Tail 10 -Wait
  8. Ubah komponen lokal untuk mengiterasi dan menguji kode Anda. Buka hello_world.py di editor teks, dan tambahkan kode berikut pada baris 4 untuk mengedit pesan yang dicatat oleh AWS IoT Greengrass inti.

    message += " Greetings from your first Greengrass component."

    Skrip hello_world.py sekarang akan berisi konten berikut.

    import sys message = "Hello, %s!" % sys.argv[1] message += " Greetings from your first Greengrass component." # Print the message to stdout, which Greengrass saves in a log file. print(message)
  9. Jalankan perintah berikut untuk memperbarui komponen dengan perubahan Anda.

    Linux or Unix
    sudo /greengrass/v2/bin/greengrass-cli deployment create \ --recipeDir ~/greengrassv2/recipes \ --artifactDir ~/greengrassv2/artifacts \ --merge "com.example.HelloWorld=1.0.0"
    Windows Command Prompt (CMD)
    C:\greengrass\v2\bin\greengrass-cli deployment create ^ --recipeDir %USERPROFILE%\greengrassv2\recipes ^ --artifactDir %USERPROFILE%\greengrassv2\artifacts ^ --merge "com.example.HelloWorld=1.0.0"
    PowerShell
    C:\greengrass\v2\bin\greengrass-cli deployment create ` --recipeDir ~/greengrassv2/recipes ` --artifactDir ~/greengrassv2/artifacts ` --merge "com.example.HelloWorld=1.0.0"

    Perintah ini memperbarui com.example.HelloWorld komponen dengan artefak Hello World terbaru.

  10. Jalankan perintah berikut untuk me-restart komponen. Ketika Anda me-restart komponen, perangkat inti menggunakan perubahan terakhir.

    Linux or Unix
    sudo /greengrass/v2/bin/greengrass-cli component restart \ --names "com.example.HelloWorld"
    Windows Command Prompt (CMD)
    C:\greengrass\v2\bin\greengrass-cli component restart ^ --names "com.example.HelloWorld"
    PowerShell
    C:\greengrass\v2\bin\greengrass-cli component restart ` --names "com.example.HelloWorld"
  11. Periksa log lagi untuk memverifikasi bahwa komponen Hello World mencetak pesan baru.

    Linux or Unix
    sudo tail -f /greengrass/v2/logs/com.example.HelloWorld.log
    Windows Command Prompt (CMD)
    type C:\greengrass\v2\logs\com.example.HelloWorld.log

    typePerintah menulis konten file ke terminal. Jalankan perintah ini beberapa kali untuk mengamati perubahan dalam file.

    PowerShell
    gc C:\greengrass\v2\logs\com.example.HelloWorld.log -Tail 10 -Wait

    Anda akan melihat pesan yang mirip dengan contoh berikut ini.

    Hello, world! Greetings from your first Greengrass component.
  12. Anda dapat memperbarui parameter konfigurasi komponen untuk menguji konfigurasi yang berbeda. Ketika Anda men-deploy komponen, Anda dapat menentukan pembaruan konfigurasi, yang menentukan cara mengubah konfigurasi komponen pada perangkat inti. Anda dapat menentukan nilai konfigurasi yang akan di-reset ke nilai default dan nilai-nilai konfigurasi baru yang akan digabungkan ke perangkat inti. Untuk informasi selengkapnya, lihat Perbarui konfigurasi komponen.

    Lakukan hal-hal berikut:

    1. Gunakan editor teks untuk membuat file yang dipanggil hello-world-config-update.json untuk memuat pembaruan konfigurasi

      Misalnya, pada sistem berbasis Linux, Anda dapat menjalankan perintah berikut untuk menggunakan GNU nano untuk membuat file.

      nano hello-world-config-update.json
    2. Salin dan tempel objek JSON berikut ke dalam file. Objek JSON ini menentukan pembaruan konfigurasi yang menggabungkan nilai friend ke parameter Message untuk memperbarui nilainya. Pembaruan konfigurasi ini tidak menentukan nilai apa pun yang akan di-reset. Anda tidak perlu mengatur ulang parameter Message karena pembaruan merge menggantikan nilai yang ada.

      { "com.example.HelloWorld": { "MERGE": { "Message": "friend" } } }
    3. Jalankan perintah berikut untuk men-deploy pembaruan konfigurasi pada komponen Hello World.

      Linux or Unix
      sudo /greengrass/v2/bin/greengrass-cli deployment create \ --merge "com.example.HelloWorld=1.0.0" \ --update-config hello-world-config-update.json
      Windows Command Prompt (CMD)
      C:\greengrass\v2\bin\greengrass-cli deployment create ^ --merge "com.example.HelloWorld=1.0.0" ^ --update-config hello-world-config-update.json
      PowerShell
      C:\greengrass\v2\bin\greengrass-cli deployment create ` --merge "com.example.HelloWorld=1.0.0" ` --update-config hello-world-config-update.json
    4. Periksa log lagi untuk memverifikasi bahwa komponen Hello World mengeluarkan pesan baru.

      Linux or Unix
      sudo tail -f /greengrass/v2/logs/com.example.HelloWorld.log
      Windows Command Prompt (CMD)
      type C:\greengrass\v2\logs\com.example.HelloWorld.log

      typePerintah menulis konten file ke terminal. Jalankan perintah ini beberapa kali untuk mengamati perubahan dalam file.

      PowerShell
      gc C:\greengrass\v2\logs\com.example.HelloWorld.log -Tail 10 -Wait

      Anda akan melihat pesan yang mirip dengan contoh berikut ini.

      Hello, friend! Greetings from your first Greengrass component.
  13. Setelah Anda selesai menguji komponen, lepaskan komponen tersebut dari perangkat inti Anda. Jalankan perintah berikut.

    Linux or Unix
    sudo /greengrass/v2/bin/greengrass-cli deployment create --remove="com.example.HelloWorld"
    Windows Command Prompt (CMD)
    C:\greengrass\v2\bin\greengrass-cli deployment create --remove="com.example.HelloWorld"
    PowerShell
    C:\greengrass\v2\bin\greengrass-cli deployment create --remove="com.example.HelloWorld"
    penting

    Langkah ini diperlukan bagi Anda untuk men-deploy komponen kembali ke perangkat inti setelah Anda mengunggahnya ke AWS IoT Greengrass. Jika tidak, deployment akan gagal dengan kesalahan kompatibilitas versi karena deployment lokal menentukan versi yang berbeda dari komponen.

    Jalankan perintah berikut dan verifikasi bahwa perintah com.example.HelloWorld tidak muncul dalam daftar komponen di perangkat Anda.

    Linux or Unix
    sudo /greengrass/v2/bin/greengrass-cli component list
    Windows Command Prompt (CMD)
    C:\greengrass\v2\bin\greengrass-cli component list
    PowerShell
    C:\greengrass\v2\bin\greengrass-cli component list

Komponen Hello World Anda selesai, dan sekarang Anda dapat mengunggahnya ke layanan AWS IoT Greengrass cloud. Kemudian, Anda dapat menerapkan komponen ke perangkat inti Greengrass.