Buat deployment - AWS IoT Greengrass

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

Buat deployment

Anda dapat membuat deployment yang menargetkan objek atau grup objek.

Ketika Anda membuat deployment, Anda mengonfigurasi komponen perangkat lunak yang akan di-deploy dan bagaimana tugas deployment keluar ke target perangkat. Anda dapat menentukan deployment dalam file JSON yang Anda berikan ke AWS CLI.

Target deployment menentukan perangkat yang Anda inginkan untuk menjalankan komponen Anda. Untuk men-deploy ke satu perangkat inti, tentukan objek. Untuk men-deploy ke beberapa perangkat inti, tentukan grup objek yang mencakup perangkat tersebut. Untuk informasi lebih lanjut tentang cara mengonfigurasi grup objek, lihat Grup objek statis dan Grup objek dinamis di Panduan Developer AWS IoT.

Ikuti langkah-langkah di bagian ini untuk membuat penyebaran ke target. Untuk informasi selengkapnya tentang cara memperbarui komponen perangkat lunak pada target yang memiliki deployment, lihat Revisi deployment.

Awas

CreateDeploymentOperasi dapat menghapus komponen dari perangkat inti. Jika komponen ada di penerapan sebelumnya dan bukan penerapan baru, perangkat inti akan menghapus pemasangan komponen tersebut. Untuk menghindari mencopot pemasangan komponen, pertama-tama gunakan ListDeploymentsoperasi untuk memeriksa apakah target penerapan sudah memiliki penerapan yang ada. Kemudian, gunakan GetDeploymentoperasi untuk memulai dari penerapan yang ada saat Anda membuat penerapan baru.

Untuk membuat deployment (AWS CLI)
  1. Buat file bernama deployment.json, lalu salin objek JSON berikut ke dalam file. Ganti targetArn dengan ARN objek AWS IoT atau grup objek yang ditargetkan untuk deployment. ARN objek dan grup objek memiliki format berikut:

    • Objek: arn:aws:iot:region:account-id:thing/thingName

    • Grup objek: arn:aws:iot:region:account-id:thinggroup/thingGroupName

    { "targetArn": "targetArn" }
  2. Periksa apakah target penerapan memiliki penerapan yang sudah ada yang ingin Anda revisi. Lakukan hal-hal berikut:

    1. Jalankan perintah berikut untuk membuat daftar penerapan untuk target penyebaran. Ganti targetArn dengan ARN target objek AWS IoT atau grup objek.

      aws greengrassv2 list-deployments --target-arn targetArn

      Tanggapan berisi daftar dengan deployment terbaru untuk target. Jika responsnya kosong, target tidak memiliki penerapan yang ada, dan Anda dapat melompat keTahap 3. Jika tidak, salin deploymentId dari respons untuk digunakan pada langkah berikutnya.

      catatan

      Anda juga dapat merevisi deployment selain revisi terbaru untuk target. Tentukan --history-filter ALL untuk mencantumkan semua deployment untuk target. Kemudian, salin ID penerapan yang ingin Anda revisi.

    2. Jalankan perintah berikut untuk mendapatkan detail penerapan. Detail ini mencakup metadata, komponen, dan konfigurasi pekerjaan. Ganti deploymentId dengan ID dari langkah sebelumnya.

      aws greengrassv2 get-deployment --deployment-id deploymentId

      Tanggapan berisi detail deployment.

    3. Salin salah satu pasangan kunci-nilai berikut dari respons perintah sebelumnya ke dalam. deployment.json Anda dapat mengubah nilai-nilai ini untuk penerapan baru.

      • deploymentName— Nama penyebaran.

      • components— Komponen penyebaran. Untuk menghapus komponen, hapus dari objek ini.

      • deploymentPolicies— Kebijakan penyebaran.

      • iotJobConfiguration— Konfigurasi pekerjaan penerapan.

      • tags— Tag penyebaran.

  3. (Opsional) Tentukan nama untuk penerapan. Ganti DeploymentName dengan nama penyebaran.

    { "targetArn": "targetArn", "deploymentName": "deploymentName" }
  4. Tambahkan setiap komponen untuk men-deploy perangkat target. Untuk melakukannya, tambahkan pasangan nilai kunci ke objek components, di mana kunci adalah nama komponen, dan nilai adalah objek yang berisi detail untuk komponen tersebut. Tentukan detail berikut untuk setiap komponen yang Anda tambahkan:

    • version — Versi komponen yang akan di-deploy.

    • configurationUpdatePembaruan konfigurasi yang akan di-deploy. Pembaruan adalah operasi patch yang memodifikasi konfigurasi komponen yang ada pada setiap perangkat target, atau konfigurasi default komponen jika tidak ada pada perangkat target. Anda dapat menentukan pembaruan konfigurasi berikut:

      • Pembaruan reset (reset) — (Opsional) Daftar pointer JSON yang menentukan nilai konfigurasi untuk di-reset ke nilai default-nya pada perangkat target. Perangkat lunak inti AWS IoT Greengrass memberlakukan pembaruan reset sebelum menerapkan pembaruan merge. Untuk informasi selengkapnya, lihat Pembaruan reset.

      • Pembaruan merge (merge) - (Opsional) Sebuah dokumen JSON yang menentukan nilai konfigurasi yang akan digabungkan ke perangkat target. Anda harus membuat serial dokumen JSON sebagai string. Untuk informasi selengkapnya, lihat Pembaruan merge.

    • runWith— (Opsional) Opsi proses sistem yang digunakan perangkat lunak AWS IoT Greengrass Core untuk menjalankan proses komponen ini pada perangkat inti. Jika Anda menghilangkan parameter dalam runWith objek, perangkat lunak AWS IoT Greengrass Core menggunakan nilai default yang Anda konfigurasikan pada komponen inti Greengrass.

      Anda dapat menentukan salah satu opsi berikut:

      • posixUser— Pengguna sistem POSIX dan, secara opsional, kelompok untuk digunakan untuk menjalankan komponen ini pada perangkat inti Linux. Pengguna, dan grup jika ditentukan, harus ada di setiap perangkat inti Linux. Tentukan pengguna dan grup yang dipisahkan dengan titik dua (:) dalam format berikut: user:group. Grup ini opsional. Jika Anda tidak menentukan grup, perangkat lunak AWS IoT Greengrass Core menggunakan grup utama untuk pengguna. Untuk informasi selengkapnya, lihat Konfigurasikan pengguna yang menjalankan komponen.

      • windowsUser— Pengguna Windows yang digunakan untuk menjalankan komponen ini pada perangkat inti Windows. Pengguna harus ada di setiap perangkat inti Windows, dan nama serta kata sandinya harus disimpan dalam instance Credentials Manager LocalSystem akun. Untuk informasi selengkapnya, lihat Konfigurasikan pengguna yang menjalankan komponen.

        Fitur ini tersedia untuk v2.5.0 dan yang lebih baru dari komponen inti Greengrass.

      • systemResourceLimits— Batas sumber daya sistem untuk diterapkan pada proses komponen ini. Anda dapat menerapkan batas sumber daya sistem ke komponen Lambda generik dan non-kontainer. Untuk informasi selengkapnya, lihat Konfigurasikan batas sumber daya sistem untuk komponen.

        Anda dapat menentukan salah satu opsi berikut:

        • cpusJumlah maksimum waktu CPU yang dapat digunakan oleh proses komponen ini pada perangkat inti. Total waktu CPU perangkat inti setara dengan jumlah inti CPU perangkat. Misalnya, pada perangkat inti dengan 4 core CPU, Anda dapat mengatur nilai ini 2 untuk membatasi proses komponen ini hingga 50 persen penggunaan setiap inti CPU. Pada perangkat dengan 1 inti CPU, Anda dapat mengatur nilai ini 0.25 untuk membatasi proses komponen ini hingga 25 persen penggunaan CPU. Jika Anda menetapkan nilai ini ke angka yang lebih besar dari jumlah inti CPU, perangkat lunak AWS IoT Greengrass Core tidak membatasi penggunaan CPU komponen.

        • memoryJumlah maksimum RAM (dalam kilobyte) yang dapat digunakan oleh proses komponen ini pada perangkat inti.

        Fitur ini tersedia untuk v2.4.0 dan yang lebih baru dari komponen inti Greengrass. AWS IoT Greengrasssaat ini tidak mendukung fitur ini di perangkat inti Windows.

     

    contoh Contoh pembaruan konfigurasi dasar

    Obejk components contoh berikut menentukan untuk men-deploy komponen, com.example.PythonRuntime, yang mengharapkan parameter konfigurasi bernama pythonVersion.

    { "targetArn": "targetArn", "deploymentName": "deploymentName", "components": { "com.example.PythonRuntime": { "componentVersion": "1.0.0", "configurationUpdate": { "merge": "{\"pythonVersion\":\"3.7\"}" } } } }
    contoh Contoh pembaruan konfigurasi dengan pembaruan reset dan merge

    Pertimbangkan komponen contoh dasbor industri, com.example.IndustrialDashboard, yang memiliki konfigurasi default berikut.

    { "name": null, "mode": "REQUEST", "network": { "useHttps": true, "port": { "http": 80, "https": 443 }, }, "tags": [] }

    Pembaruan konfigurasi berikut menentukan petunjuk berikut:

    1. Reset pengaturan HTTPS ke nilai default (true).

    2. Setel ulang daftar tag industri ke daftar kosong.

    3. Gabungkan daftar tag industri yang mengidentifikasi aliran data suhu dan tekanan untuk dua boiler.

    { "reset": [ "/network/useHttps", "/tags" ], "merge": { "tags": [ "/boiler/1/temperature", "/boiler/1/pressure", "/boiler/2/temperature", "/boiler/2/pressure" ] } }

    Contoh objek components berikut menentukan untuk men-deploy komponen dasbor industri ini dan pembaruan konfigurasi.

    { "targetArn": "targetArn", "deploymentName": "deploymentName", "components": { "com.example.IndustrialDashboard": { "componentVersion": "1.0.0", "configurationUpdate": { "reset": [ "/network/useHttps", "/tags" ], "merge": "{\"tags\":[\"/boiler/1/temperature\",\"/boiler/1/pressure\",\"/boiler/2/temperature\",\"/boiler/2/pressure\"]}" } } } }
  5. (Opsional) Tentukan kebijakan deployment untuk deployment ini. Anda dapat mengonfigurasi ketika perangkat inti dapat dengan aman menerapkan deployment atau apa yang harus dilakukan jika perangkat inti gagal untuk menerapkan deployment tersebut. Untuk melakukannya, tambahkan objek deploymentPolicies pada deployment.json, lalu lakukan langkah-langkah berikut:

    1. (Opsional) Tentukan kebijakan pembaruan komponen (componentUpdatePolicy). Kebijakan ini menentukan apakah deployment memungkinkan komponen menunda pembaruan sampai siap untuk diperbarui. Sebagai contoh, komponen mungkin perlu membersihkan sumber daya atau menyelesaikan tindakan penting sebelum dapat di-restart untuk menerapkan pembaruan. Kebijakan ini juga menentukan jumlah waktu yang harus ditanggapi komponen pada pemberitahuan pembaruan.

      Kebijakan ini merupakan objek dengan parameter berikut:

      • action — (Opsional) Apakah akan memberi tahu komponen atau tidak dan menunggunya melaporkan kapan ia siap untuk diperbarui. Pilih dari salah satu pilihan berikut:

        • NOTIFY_COMPONENTS – Deployment akan memberitahu setiap komponen sebelum menghentikan dan memperbarui komponen itu. Komponen dapat menggunakan operasi IPC SubscribeToComponentUpdates untuk menerima pemberitahuan ini.

        • SKIP_NOTIFY_COMPONENTS – Deployment tidak memberitahu komponen atau menunggunya sampai aman untuk diperbarui.

        Default ke NOTIFY_COMPONENTS.

      • timeoutInSeconds Jumlah waktu, dalam hitungan detik, ketika setiap komponen merespons notifikasi pembaruan dengan perintah operasi IPC DeferComponentUpdate. Jika komponen tidak merespons dalam jumlah waktu ini, maka deployment akan berlangsung pada perangkat inti.

        Default ke 60 detik.

    2. (Opsional) Tentukan kebijakan validasi konfigurasi (configurationValidationPolicy). Kebijakan ini menentukan berapa lama setiap komponen harus memvalidasi pembaruan konfigurasi dari suatu deployment. Komponen dapat menggunakan operasi IPC SubscribeToValidateConfigurationUpdates untuk berlangganan pemberitahuan untuk pembaruan konfigurasinya sendiri. Kemudian, komponen dapat menggunakan operasi IPC SendConfigurationValidityReport untuk memberitahu perangkat lunak inti AWS IoT Greengrass jika pembaruan konfigurasi valid. Jika pembaruan konfigurasi tidak valid, deployment akan gagal.

      Kebijakan ini merupakan objek dengan parameter berikut:

      • timeoutInSeconds (Opsional) Jumlah waktu, dalam hitungan detik, ketika setiap komponen harus memvalidasi pembaruan konfigurasi. Jika komponen tidak merespons dalam jumlah waktu ini, maka deployment akan berlangsung pada perangkat inti.

        Default ke 30 detik.

    3. (Opsional) Tentukan kebijakan penanganan kegagalan (failureHandlingPolicy). Kebijakan ini adalah string yang menentukan apakah akan memutar kembali perangkat atau tidak jika deployment tersebut gagal. Pilih dari salah satu pilihan berikut:

      • ROLLBACK — Jika deployment gagal pada perangkat inti, maka perangkat lunak inti AWS IoT Greengrass akan memutar kembali perangkat inti ke konfigurasi sebelumnya.

      • DO_NOTHING — Jika deployment gagal pada perangkat inti, maka perangkat lunak inti AWS IoT Greengrass akan membuat konfigurasi baru. Hal ini dapat mengakibatkan komponen rusak jika konfigurasi baru tidak valid.

      Default ke ROLLBACK.

    Deployment Anda di deployment.json mungkin terlihat serupa dengan contoh berikut:

    { "targetArn": "targetArn", "deploymentName": "deploymentName", "components": { "com.example.IndustrialDashboard": { "componentVersion": "1.0.0", "configurationUpdate": { "reset": [ "/network/useHttps", "/tags" ], "merge": "{\"tags\":[\"/boiler/1/temperature\",\"/boiler/1/pressure\",\"/boiler/2/temperature\",\"/boiler/2/pressure\"]}" } } }, "deploymentPolicies": { "componentUpdatePolicy": { "action": "NOTIFY_COMPONENTS", "timeoutInSeconds": 30 }, "configurationValidationPolicy": { "timeoutInSeconds": 60 }, "failureHandlingPolicy": "ROLLBACK" } }
  6. (Opsional) Tentukan bagaimana deployment berhenti, keluar, atau habis waktu. AWS IoT Greengrass menggunakan tugas AWS IoT Core untuk mengirim deployment ke perangkat inti, sehingga opsi ini identik dengan opsi konfigurasi untuk tugas AWS IoT Core. Untuk informasi selengkapnya, lihat Peluncuran tugas dan batalkan konfigurasi di Panduan Developer AWS IoT.

    Untuk menentukan pilihan tugas, tambahkan objek iotJobConfiguration pada deployment.json. Kemudian, tentukan pilihan yang akan dikonfigurasi.

    Deployment Anda di deployment.json mungkin terlihat serupa dengan contoh berikut:

    { "targetArn": "targetArn", "deploymentName": "deploymentName", "components": { "com.example.IndustrialDashboard": { "componentVersion": "1.0.0", "configurationUpdate": { "reset": [ "/network/useHttps", "/tags" ], "merge": "{\"tags\":[\"/boiler/1/temperature\",\"/boiler/1/pressure\",\"/boiler/2/temperature\",\"/boiler/2/pressure\"]}" } } }, "deploymentPolicies": { "componentUpdatePolicy": { "action": "NOTIFY_COMPONENTS", "timeoutInSeconds": 30 }, "configurationValidationPolicy": { "timeoutInSeconds": 60 }, "failureHandlingPolicy": "ROLLBACK" }, "iotJobConfiguration": { "abortConfig": { "criteriaList": [ { "action": "CANCEL", "failureType": "ALL", "minNumberOfExecutedThings": 100, "thresholdPercentage": 5 } ] }, "jobExecutionsRolloutConfig": { "exponentialRate": { "baseRatePerMinute": 5, "incrementFactor": 2, "rateIncreaseCriteria": { "numberOfNotifiedThings": 10, "numberOfSucceededThings": 5 } }, "maximumPerMinute": 50 }, "timeoutConfig": { "inProgressTimeoutInMinutes": 5 } } }
  7. (Opsional) Tambahkan tag (tags) untuk deployment itu. Untuk informasi selengkapnya, lihat Beri tag pada sumber daya AWS IoT Greengrass Version 2 Anda.

  8. Jalankan perintah berikut untuk membuat deployment dari deployment.json.

    aws greengrassv2 create-deployment --cli-input-json file://deployment.json

    Tanggapan meliputi deploymentId yang menentukan deployment ini. Anda dapat menggunakan ID deployment untuk memeriksa status deployment. Lihat informasi yang lebih lengkap di Periksa status deployment.