Perbarui OTA AWS IoT Greengrass perangkat lunak Core - AWS IoT Greengrass

AWS IoT Greengrass Version 1 memasuki fase umur panjang pada 30 Juni 2023. Untuk informasi selengkapnya, lihat kebijakan AWS IoT Greengrass V1 pemeliharaan. Setelah tanggal ini, tidak AWS IoT Greengrass V1 akan merilis pembaruan yang menyediakan fitur, penyempurnaan, perbaikan bug, atau patch keamanan. Perangkat yang berjalan AWS IoT Greengrass V1 tidak akan terganggu dan akan terus beroperasi dan terhubung ke cloud. Kami sangat menyarankan Anda bermigrasi ke AWS IoT Greengrass Version 2, yang menambahkan fitur baru yang signifikan dan dukungan untuk platform tambahan.

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

Perbarui OTA AWS IoT Greengrass perangkat lunak Core

Paket perangkat lunak AWS IoT Greengrass Core mencakup agen pembaruan yang dapat melakukan pembaruan AWS IoT Greengrass perangkat lunak over-the-air (OTA). Anda dapat menggunakan pembaruan OTA untuk menginstal versi terbaru AWS IoT Greengrass perangkat lunak Core atau perangkat lunak agen pembaruan OTA pada satu atau lebih core. Dengan pembaruan OTA, perangkat inti Anda tidak harus hadir secara fisik.

Kami merekomendasikan agar Anda menggunakan pembaruan OTA bila memungkinkan. Mereka menyediakan mekanisme yang dapat Anda gunakan untuk melacak status pembaruan dan sejarah pembaruan. Jika terjadi gagal pembaruan, agen pembaruan OTA akan kembali ke versi perangkat lunak sebelumnya.

catatan

pembaruan OTA tidak didukung saat Anda menggunakan apt untuk menginstal AWS IoT Greengrass perangkat lunak Core. Untuk instalasi ini, kami sarankan Anda menggunakan apt untuk meng-upgrade perangkat lunak. Untuk informasi selengkapnya, lihat Instal AWS IoT Greengrass perangkat lunak core dari repositori APT.

pembaruan OTA membuatnya lebih efisien untuk:

  • Memperbaiki kerentanan keamanan.

  • Mengatasi masalah stabilitas perangkat lunak.

  • Men-deploy fitur baru atau yang lebih baik.

Fitur ini terintegrasi dengan AWS IoT tugas.

Persyaratan

Persyaratan berikut berlaku untuk pembaruan OTA AWS IoT Greengrass perangkat lunak.

  • Greengrass core harus memiliki setidaknya 400 MB ruang disk yang tersedia di penyimpanan lokal. Agen pembaruan OTA memerlukan sekitar tiga kali persyaratan penggunaan waktu aktif AWS IoT Greengrass perangkat lunak Core. Untuk informasi selengkapnya, lihat Kuota layanan untuk inti Greengrass di halaman. Referensi Umum Amazon Web Services

  • Greengrass core harus memiliki koneksi ke AWS Cloud.

  • Greengrass core harus dikonfigurasi dengan benar dan ditetapkan dengan sertifikat dan kunci untuk otentikasi dengan AWS IoT Core dan AWS IoT Greengrass. Untuk informasi selengkapnya, lihat Sertifikat X.509.

  • Greengrass core tidak dapat dikonfigurasi untuk menggunakan proksi jaringan.

    catatan

    Dimulai di AWS IoT Greengrass v1.9.3, pembaruan OTA didukung pada core yang mengonfigurasi lalu lintas MQTT menggunakan port 443 bukannya port default 8883. Namun, agen pembaruan OTA tidak mendukung pembaruan melalui proksi jaringan. Untuk informasi selengkapnya, lihat Connect pada port 443 atau melalui proksi jaringan.

  • Boot terpercaya tidak dapat diaktifkan di partisi yang berisi AWS IoT Greengrass perangkat lunak Core.

    catatan

    Anda dapat menginstal dan menjalankan AWS IoT Greengrass perangkat lunak Core pada partisi yang telah dipercaya boot diaktifkan, tetapi pembaruan OTA tidak didukung.

  • AWS IoT Greengrass harus memiliki izin baca/tulis pada partisi yang berisi AWS IoT Greengrass perangkat lunak Core.

  • Jika Anda menggunakan sistem init untuk mengelola Core Greengrass Anda, Anda harus mengonfigurasi pembaruan OTA untuk mengintegrasikan dengan sistem init. Untuk informasi selengkapnya, lihat Integrasi dengan sistem init.

  • Anda harus membuat peran yang digunakan untuk presign URL Amazon S3 ke artefak pembaruan perangkat lunak AWS IoT Greengrass ini. Peran signer ini mengizinkan AWS IoT Core untuk mengakses artefak pembaruan perangkat lunak yang disimpan di Amazon S3 atas nama Anda. Untuk informasi selengkapnya, lihat Izin IAM untuk pembaruan OTA.

Izin IAM untuk pembaruan OTA

Ketika AWS IoT Greengrass merilis versi baru dari perangkat lunak Core AWS IoT Greengrass ini, AWS IoT Greengrass memperbarui artefak perangkat lunak yang disimpan di Amazon S3 yang digunakan untuk pembaruan OTA.

Anda Akun AWS harus menyertakan peran signer URL Amazon S3 yang dapat digunakan untuk mengakses artefak ini. Peran harus memiliki kebijakan izin yang mengizinkan s3:GetObject tindakan pada bucket di target Wilayah AWSs. Peran ini juga harus memiliki kebijakan kepercayaan yang mengizinkan iot.amazonaws.com untuk mengambil peran sebagai entitas terpercaya.

Kebijakan perizinan

Untuk izin peran, Anda dapat menggunakan kebijakan terkelola AWS atau buat kebijakan kustom.

  • Menggunakan kebijakan AWS terkelola

    Kebijakan yang UpdateArtifactAccess dikelola GreenGrassota disediakan oleh. AWS IoT Greengrass Gunakan kebijakan ini jika Anda ingin mengizinkan akses di semua Amazon Web Services Region didukung oleh AWS IoT Greengrass, baik saat ini maupun masa depan.

  • Membuat kebijakan kustom

    Anda harus membuat kebijakan kustom jika Anda ingin secara eksplisit menentukan Wilayah Amazon Web Services di mana core Anda di-deploy. Contoh kebijakan berikut mengizinkan akses ke pembaruan perangkat lunak AWS IoT Greengrass di enam Wilayah.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "AllowAccessToGreengrassOTAUpdateArtifacts", "Effect": "Allow", "Action": [ "s3:GetObject" ], "Resource": [ "arn:aws:s3:::us-east-1-greengrass-updates/*", "arn:aws:s3:::us-west-2-greengrass-updates/*", "arn:aws:s3:::ap-northeast-1-greengrass-updates/*", "arn:aws:s3:::ap-southeast-2-greengrass-updates/*", "arn:aws:s3:::eu-central-1-greengrass-updates/*", "arn:aws:s3:::eu-west-1-greengrass-updates/*" ] } ] }
Kebijakan kepercayaan

Kebijakan kepercayaan yang melekat pada peran harus mengizinkan sts:AssumeRole tindakan dan menentukan iot.amazonaws.com sebagai pelaku utama. Ini mengizinkan AWS IoT Core untuk menganggap peran sebagai entitas terpercaya. Berikut ini adalah contoh dokumen kebijakan:

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

Selain itu, pengguna yang memulai pembaruan OTA harus memiliki izin untuk menggunakan greengrass:CreateSoftwareUpdateJob dan iot:CreateJob, dan menggunakan iam:PassRole untuk lulus izin dari peran signer. Berikut ini adalah contoh kebijakan IAM:

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "greengrass:CreateSoftwareUpdateJob" ], "Effect": "Allow", "Resource": "*" }, { "Effect": "Allow", "Action": [ "iot:CreateJob" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "iam:PassRole" ], "Resource": "arn-of-s3-url-signer-role" } ] }

Pertimbangan-pertimbangan

Sebelum Anda meluncurkan pembaruan OTA perangkat lunak Core Greengrass, waspadai dampak pada perangkat dalam grup Greengrass Anda, baik pada perangkat core dan pada perangkat klien yang terhubung secara lokal ke core itu:

  • Core menutup selama pembaruan.

  • Setiap fungsi Lambda berjalan pada core dimatikan. Jika fungsi tersebut tulis ke sumber daya lokal, mereka mungkin meninggalkan sumber daya tersebut dalam keadaan salah kecuali dimatikan dengan benar.

  • Selama downtime core, semua koneksinya dengan AWS Cloud hilang. Pesan yang diarahkan melalui core oleh perangkat klien hilang.

  • Cache kredensia hilang.

  • Antrian yang memegang pekerjaan tertunda untuk fungsi Lambda hilang.

  • Fungsi Lambda yang berumur panjang kehilangan informasi status dinamis mereka dan semua pekerjaan yang tertunda dijatuhkan.

Informasi status berikut dipertahankan selama pembaruan OTA:

  • Konfigurasi core

  • Konfigurasi grup Greengrass

  • Bayangan lokal

  • Greengrass log

  • Log agen pembaruan OTA

Agen pembaruan OTA Greengrass

Agen pembaruan OTA Greengrass adalah komponen perangkat lunak pada perangkat yang menangani pembaruan pekerjaan yang dibuat dan di-deploy di cloud. Agen pembaruan OTA didistribusikan dalam paket perangkat lunak yang sama sebagai AWS IoT Greengrass perangkat lunak Core. Agen tersebut berada di /greengrass-root/ota/ota_agent/ggc-ota. Ini menulis log ke /var/log/greengrass/ota/ggc_ota.txt.

catatan

Greengrass-root mewakili jalan di mana AWS IoT Greengrass perangkat lunak Core diinstal pada perangkat Anda. Biasanya, ini adalah /greengrass direktori.

Anda dapat memulai agen pembaruan OTA dengan mengeksekusi biner secara manual atau dengan mengintegrasikannya sebagai bagian dari skrip init, seperti file layanan systemd. Jika Anda menjalankan biner secara manual, itu harus dijalankan sebagai root. Ketika ini mulai, agen pembaruan OTA mendengarkan tugas pembaruan perangkat lunak AWS IoT Greengrass dari AWS IoT Core dan mengeksekusi mereka secara berurutan. Agen pembaruan OTA mengabaikan semua lainnya AWS IoT jenis tugas.

Kutipan berikut menunjukkan contoh file layanan systemd untuk memulai, berhenti, dan restart agen pembaruan OTA:

[Unit] Description=Greengrass OTA Daemon [Service] Type=forking Restart=on-failure ExecStart=/greengrass/ota/ota_agent/ggc-ota [Install] WantedBy=multi-user.target

Core yang merupakan target pembaruan tidak harus menjalankan dua instans agen pembaruan OTA. Melakukan hal itu membuat kedua agen untuk memproses tugas yang sama, yang membuat konflik.

Integrasi dengan sistem init

Selama pembaruan OTA, agen pembaruan OTA restart binari pada perangkat core. Jika bineri berjalan, ini dapat menyebabkan konflik ketika sistem init memantau keadaan perangkat lunak Core AWS IoT Greengrass atau agen selama pembaruan. Untuk membantu mengintegrasikan mekanisme pembaruan OTA dengan strategi pemantauan init Anda, Anda dapat menulis skrip shell yang berjalan sebelum dan sesudah pembaruan. Sebagai contoh, Anda dapat menggunakan ggc_pre_update.sh skrip untuk membuat cadangan data atau menghentikan proses sebelum perangkat dimatikan.

Untuk memberitahu agen pembaruan OTA untuk menjalankan skrip ini, Anda harus menyertakan "managedRespawn" : true bendera di file config.json. Pengaturan ini ditunjukkan dalam contoh berikut:

{ "coreThing": { … }, "runtime": { … }, "managedRespawn": true … }

Respawn terkelola dengan pembaruan OTA

Persyaratan berikut berlaku untuk pembaruan OTA dengan managedRespawn diatur ke true:

  • Skrip shell berikut harus hadir di /greengrass-root/usr/scripts direktori:

    • ggc_pre_update.sh

    • ggc_post_update.sh

    • ota_pre_update.sh

    • ota_post_update.sh

  • Skrip harus mengembalikan kode kembali sukses.

  • Skrip harus dimiliki oleh root dan executable oleh root saja.

  • Skrip ggc_pre_update.sh harus menghentikan Greengrass daemon.

  • Skrip ggc_post_update.sh harus mulai Greengrass daemon.

catatan

Karena agen pembaruan OTA mengelola proses sendiri, ota_pre_update.sh dan ota_post_update.sh skrip tidak perlu menghentikan atau memulai layanan OTA.

Agen pembaruan OTA menjalankan skrip dari /greengrass-root/usr/scripts. Pohon direktori akan terlihat seperti berikut:

<greengrass_root> |-- certs |-- config | |-- config.json |-- ggc |-- usr/scripts | |-- ggc_pre_update.sh | |-- ggc_post_update.sh | |-- ota_pre_update.sh | |-- ota_post_update.sh |-- ota

Ketika managedRespawn diatur ke true, agen pembaruan OTA memeriksa direktori /greengrass-root/usr/scripts untuk skrip ini sebelum dan sesudah pembaruan perangkat lunak. Jika skrip tidak ada, pembaruan gagal. AWS IoT Greengrass tidak memvalidasi isi skrip ini. Sebagai praktik terbaik, verifikasi bahwa skrip Anda berfungsi dengan benar dan mengeluarkan kode keluar yang sesuai untuk kesalahan.

Untuk pembaruan OTA dari perangkat lunak Core AWS IoT Greengrass ini:
  • Sebelum memulai pembaruan, agen menjalankan ggc_pre_update.sh skrip. Gunakan skrip ini untuk perintah yang perlu dijalankan sebelum agen pembaruan OTA dimulai AWS IoT Greengrass updafe perangkat lunak core, seperti mencadangkan data atau menghentikan proses yang sedang berjalan. Contoh berikut menunjukkan skrip sederhana untuk menghentikan Greengrass daemon.

    #!/bin/bash set -euo pipefail systemctl stop greengrass
  • Setelah menyelesaikan pembaruan, agen menjalankan skrip ggc_post_update.sh ini. Gunakan skrip ini untuk perintah yang perlu dijalankan setelah agen pembaruan OTA memulai pembaruan perangkat lunak core AWS IoT Greengrass ini, seperti untuk me-restart proses. Contoh berikut menunjukkan skrip sederhana untuk memulai Greengrass daemon.

    #!/bin/bash set -euo pipefail systemctl start greengrass
Untuk pembaruan OTA dari agen pembaruan OTA:
  • Sebelum memulai pembaruan, agen menjalankan ota_pre_update.sh skrip. Gunakan skrip ini untuk perintah yang perlu dijalankan sebelum agen pembaruan OTA memperbarui sendiri, seperti untuk membuat cadangan data atau menghentikan proses yang berjalan.

  • Setelah menyelesaikan pembaruan, agen menjalankan skrip ota_post_update.sh ini. Gunakan skrip ini untuk perintah yang perlu dijalankan setelah agen pembaruan OTA memperbarui sendiri, seperti untuk me-restart proses.

catatan

Jika managedRespawn diatur ke false, agen pembaruan OTA tidak menjalankan skrip.

Buat pembaruan OTA

Ikuti langkah-langkah ini untuk melakukan pembaruan OTA dari perangkat lunak AWS IoT Greengrass pada satu atau lebih core:

  1. Pastikan bahwa core Anda memenuhi persyaratan untuk pembaruan OTA.

    catatan

    Jika Anda mengonfigurasi sistem init untuk mengelola perangkat lunak Core AWS IoT Greengrass atau agen pembaruan OTA, verifikasi hal berikut pada core Anda:

    • File config.json menentukan "managedRespawn" : true.

    • Direktori /greengrass-root/usr/scripts berisi skrip berikut:

      • ggc_pre_update.sh

      • ggc_post_update.sh

      • ota_pre_update.sh

      • ota_post_update.sh

    Untuk informasi selengkapnya, lihat Integrasi dengan sistem init.

  2. Di terminal perangkat core, mulai agen pembaruan OTA.

    cd /greengrass-root/ota/ota_agent sudo ./ggc-ota
    catatan

    greengrass-root mewakili jalan di mana AWS IoT Greengrass perangkat lunak core diinstal pada perangkat Anda. Biasanya, ini adalah /greengrass direktori.

    Jangan mulai beberapa contoh agen pembaruan OTA pada core karena dapat menyebabkan konflik.

  3. Gunakan AWS IoT Greengrass API untuk membuat pekerjaan pembaruan perangkat lunak.

    1. Panggil CreateSoftwareUpdateJobAPI. Dalam contoh prosedur ini, kami menggunakan AWS CLI Perintah.

      Perintah berikut membuat tugas yang memperbarui perangkat lunak Core AWS IoT Greengrass pada satu core. Ganti nilai contoh dan kemudian jalankan perintah.

      Linux or macOS terminal
      aws greengrass create-software-update-job \ --update-targets-architecture x86_64 \ --update-targets [\"arn:aws:iot:region:123456789012:thing/myCoreDevice\"] \ --update-targets-operating-system ubuntu \ --software-to-update core \ --s3-url-signer-role arn:aws:iam::123456789012:role/myS3UrlSignerRole \ --update-agent-log-level WARN \ --amzn-client-token myClientToken1
      Windows command prompt
      aws greengrass create-software-update-job ^ --update-targets-architecture x86_64 ^ --update-targets [\"arn:aws:iot:region:123456789012:thing/myCoreDevice\"] ^ --update-targets-operating-system ubuntu ^ --software-to-update core ^ --s3-url-signer-role arn:aws:iam::123456789012:role/myS3UrlSignerRole ^ --update-agent-log-level WARN ^ --amzn-client-token myClientToken1

      Perintah mengembalikan respons berikut.

      { "IotJobId": "GreengrassUpdateJob_c3bd7f36-ee80-4d42-8321-a1da0EXAMPLE", "IotJobArn": "arn:aws:iot:region:123456789012:job/GreengrassUpdateJob_c3bd7f36-ee80-4d42-8321-a1da0EXAMPLE", "PlatformSoftwareVersion": "1.10.1" }
    2. Salin IoTJobId dari respon.

    3. Panggil DescribeJobAWS IoT CoreAPI untuk melihat status pekerjaan. Ganti nilai contoh dengan ID tugas Anda dan kemudian jalankan perintah.

      aws iot describe-job --job-id GreengrassUpdateJob_c3bd7f36-ee80-4d42-8321-a1da0EXAMPLE

      Perintah mengembalikan objek respon yang berisi informasi tentang tugas, termasuk status dan jobProcessDetails.

      { "job": { "jobArn": "arn:aws:iot:region:123456789012:job/GreengrassUpdateJob_c3bd7f36-ee80-4d42-8321-a1da0EXAMPLE", "jobId": "GreengrassUpdateJob_c3bd7f36-ee80-4d42-8321-a1da0EXAMPLE", "targetSelection": "SNAPSHOT", "status": "IN_PROGRESS", "targets": [ "arn:aws:iot:region:123456789012:thing/myCoreDevice" ], "description": "This job was created by Greengrass to update the Greengrass Cores in the targets with version 1.10.1 of the core software running on x86_64 architecture.", "presignedUrlConfig": { "roleArn": "arn:aws::iam::123456789012:role/myS3UrlSignerRole", "expiresInSec": 3600 }, "jobExecutionsRolloutConfig": {}, "createdAt": 1588718249.079, "lastUpdatedAt": 1588718253.419, "jobProcessDetails": { "numberOfCanceledThings": 0, "numberOfSucceededThings": 0, "numberOfFailedThings": 0, "numberOfRejectedThings": 0, "numberOfQueuedThings": 1, "numberOfInProgressThings": 0, "numberOfRemovedThings": 0, "numberOfTimedOutThings": 0 }, "timeoutConfig": {} } }

    Untuk bantuan pemecahan masalah, lihat Pemecahan Masalah AWS IoT Greengrass.

API CreateSoftwareUpdateJob

Anda dapat menggunakan API CreateSoftwareUpdateJob untuk pembaruan perangkat lunak Core AWS IoT Greengrass atau perangkat lunak agen pembaruan OTA pada perangkat core Anda. API ini membuat tugas snapshot AWS IoT yang memberitahu perangkat ketika pembaruan tersedia. Setelah Anda memanggil CreateSoftwareUpdateJob, Anda dapat menggunakan perintah tugas AWS IoT lainnya untuk melacak pembaruan perangkat lunak. Untuk informasi selengkapnya, lihat Tugas di AWS IoT Panduan Developer.

Contoh berikut menunjukkan cara menggunakan AWS CLI untuk membuat tugas yang memperbarui perangkat lunak Core AWS IoT Greengrass pada perangkat core:

aws greengrass create-software-update-job \ --update-targets-architecture x86_64 \ --update-targets [\"arn:aws:iot:region:123456789012:thing/myCoreDevice\"] \ --update-targets-operating-system ubuntu \ --software-to-update core \ --s3-url-signer-role arn:aws:iam::123456789012:role/myS3UrlSignerRole \ --update-agent-log-level WARN \ --amzn-client-token myClientToken1

Perintah create-software-update-job mengembalikan respons JSON yang berisi tugas ID, tugas ARN, dan versi perangkat lunak yang diinstal oleh pembaruan:

{ "IotJobId": "GreengrassUpdateJob_c3bd7f36-ee80-4d42-8321-a1da0EXAMPLE", "IotJobArn": "arn:aws:iot:region:123456789012:job/GreengrassUpdateJob_c3bd7f36-ee80-4d42-8321-a1da0EXAMPLE", "PlatformSoftwareVersion": "1.9.2" }

Untuk langkah-langkah yang menunjukkan bagaimana menggunakan create-software-update-job untuk memperbarui perangkat core, lihat Buat pembaruan OTA.

Perintah create-software-update-job memiliki parameter berikut:

--update-targets-architecture

Arsitektur perangkat core.

Nilai yang benar: armv7l, armv6l, x86_64, atau aarch64

--update-targets

Core untuk core. Daftar ini dapat berisi ARN dari core individu dan ARN dari grup benda yang anggotanya adalah core. Untuk informasi selengkapnya tentang grup, lihat Grup hal statis di AWS IoT Panduan Developer.

--update-targets-operating-system

Sistem operasi perangkat core.

Nilai yang benar: ubuntu, amazon_linux, raspbian, atau openwrt

--software-to-update

Tentukan apakah perangkat lunak core atau perangkat lunak agen pembaruan OTA harus diperbarui.

Nilai yang valid: core or ota_agent

--s3-url-signer-role

ARN dari IAM role digunakan untuk presign URL Amazon S3 yang tertaut ke artefak pembaruan perangkat lunak AWS IoT Greengrass ini. Kebijakan izin terlampir peran harus mengizinkan s3:GetObject tindakan pada bucket dalam target Wilayah AWSs. Peran juga harus mengizinkan iot.amazonaws.com untuk menganggap peran sebagai entitas terpercaya. Untuk informasi selengkapnya, lihat Izin IAM untuk pembaruan OTA.

--amzn-client-token

(Opsional) Token klien yang digunakan untuk membuat permintaan idempoten. Sediakan token unik untuk mencegah duplikat pembaruan yang dibuat karena retries internal.

--update-agent-log-level

(Opsional) Tingkat pencatatan untuk pernyataan log yang dihasilkan oleh agen pembaruan OTA. Default-nya adalah ERROR.

Nilai yang benar: NONE, TRACE, DEBUG, VERBOSE, INFO, WARN, ERROR, atau FATAL

catatan

CreateSoftwareUpdateJob menerima permintaan hanya untuk arsitektur didukung dan kombinasi sistem operasi berikut:

  • ubuntu/x86_64

  • ubuntu/aarch64

  • amazon_linux/x86_64

  • raspbian/armv7l

  • raspbian/armv6l

  • openwrt/aarch64

  • openwrt/armv7l