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.
Mengonfigurasi AWS IoT Greengrass core
Sebuah AWS IoT Greengrass core adalah AWS IoT hal (perangkat) yang bertindak sebagai hub atau gateway di lingkungan edge. Seperti perangkat AWS IoT lain, core yang ada di registri, memiliki perangkat bayangan, dan menggunakan sertifikat perangkat untuk mengotentikasi dengan AWS IoT Core dan AWS IoT Greengrass. Perangkat core menjalankan AWS IoT Greengrass perangkat lunak Core, yang memungkinkannya untuk mengelola proses lokal untuk grup Greengrass, seperti komunikasi, sinkronisasi bayangan, dan pertukaran token.
Perangkat lunak core AWS IoT Greengrass menyediakan fungsi berikut:
-
Deployment dan menjalankan lokal konektor dan fungsi Lambda.
-
Memproses aliran data secara lokal dengan ekspor otomatis ke AWS Cloud.
-
Olahpesan MQTT melalui jaringan lokal antara perangkat, konektor, dan fungsi Lambda menggunakan langganan terkelola.
-
Olahpesan MQTT antara AWS IoT dan perangkat, konektor, dan fungsi Lambda dapat menggunakan langganan terkelola.
-
Koneksi aman antara perangkat dan AWS Cloud menggunakan autentikasi dan otorisasi perangkat.
-
Sinkronisasi bayangan lokal perangkat. Bayangan dapat dikonfigurasi untuk disinkronkan dengan AWS Cloud.
-
Akses terkontrol ke perangkat lokal dan sumber daya volume.
-
Deployment model machine learning dengan pelatihan cloud untuk menjalankan inferensi lokal.
-
Deteksi alamat IP otomatis yang mengaktifkan perangkat untuk menemukan perangkat Core Greengrass.
-
Deployment pusat dar konfigurasi grup yang baru atau diperbarui. Setelah data konfigurasi diunduh, perangkat core di-restart secara otomatis.
-
Pembaruan perangkat lunak over-the-air (OTA) yang aman dari fungsi Lambda yang ditentukan pengguna.
-
Aman, rahasia lokal yang terenkripsi dan akses yang dikendalikan oleh konektor dan fungsi Lambda.
AWS IoT Greengrass file konfigurasi core
File konfigurasi untuk AWS IoT Greengrass perangkat lunak Core adalah config.json
. Ini terletak di /
direktori.greengrass-root
/config
catatan
greengrass-root
mewakili jalur di mana AWS IoT Greengrass perangkat lunak core diinstal pada perangkat Anda. Biasanya, ini adalah /greengrass
direktori.
Jika Anda menggunakan opsi pembuatan Grup Default dari konsol AWS IoT Greengrass tersebut, maka file config.json
di-deploy ke perangkat core dalam status bekerja.
Anda dapat meninjau isi file ini dengan menjalankan perintah berikut:
cat /
greengrass-root
/config/config.json
Berikut ini adalah contoh config.json
file. Ini adalah versi yang dihasilkan ketika Anda membuat core dari AWS IoT Greengrass konsol.
Titik akhir layanan harus sesuai dengan jenis sertifikat CA root
Titik akhir AWS IoT Core dan AWS IoT Greengrass Anda harus sesuai dengan jenis sertifikat dari sertifikat CA root pada perangkat Anda. Jika jenis titik akhir dan sertifikat tidak sesuai, upaya autentikasi antara perangkat dan AWS IoT Core atau AWS IoT Greengrass akan gagal. Untuk informasi lebih lanjut, lihat Autentikasi Server dalam Panduan Developer AWS IoT.
Jika perangkat Anda menggunakan sertifikat CA akar Amazon Trust Services (ATS), yang merupakan metode pilihan, perangkat ini juga harus menggunakan titik akhir ATS untuk manajemen perangkat dan pengoperasian bidang data. Titik akhir ATS mencakup segmen ats
, seperti yang ditunjukkan dalam sintaks berikut untuk titik akhir AWS IoT Core.
prefix
-ats.iot.region
.amazonaws.com
catatan
Untuk kompatibilitas mundur, AWS IoT Greengrass saat ini mendukung sertifikat CA VeriSign root lama dan titik akhir di beberapa s. Wilayah AWS Jika Anda menggunakan sertifikat CA VeriSign root lama, sebaiknya Anda membuat endpoint ATS dan menggunakan sertifikat CA root ATS sebagai gantinya. Jika tidak, pastikan untuk menggunakan titik akhir warisan yang sesuai. Untuk informasi selengkapnya, lihat Titik akhir warisan yang didukung di. Referensi Umum Amazon Web Services
Titik akhir di config.json
Pada perangkat core Greengrass, titik akhir ditentukan di coreThing
objek di config.json file. Properti iotHost
mewakili titik akhir AWS IoT Core ini. Properti ggHost
mewakili titik akhir AWS IoT Greengrass ini. Di contoh potongan berikut, properti ini menentukan titik akhir ATS.
{ "coreThing" : { ... "iotHost" : "abcde1234uwxyz-ats.iot.us-west-2.amazonaws.com", "ggHost" : "greengrass-ats.iot.us-west-2.amazonaws.com", ... },
- AWS IoT Coretitik akhir
-
Anda bisa mendapatkan titik akhir AWS IoT Core Anda dengan menjalankan perintah CLI aws iot describe-endpoint dengan yang sesuai parameter
--endpoint-type
ini.-
Untuk mengembalikan titik akhir yang ditandatangani ATS, jalankan:
aws iot describe-endpoint --endpoint-type iot:Data-ATS
-
Untuk mengembalikan titik akhir yang VeriSign ditandatangani lama, jalankan:
aws iot describe-endpoint --endpoint-type iot:Data
-
- AWS IoT Greengrasstitik akhir
-
Titik akhir AWS IoT Greengrass Anda adalah titik akhir
iotHost
dengan prefiks host digantikan oleh greengrass. Sebagai contoh, titik akhir ATS signed adalahgreengrass-ats.iot.
. Ini menggunakan Wilayah yang sama sebagai titik akhir AWS IoT Core Anda.region
.amazonaws.com
Connect pada port 443 atau melalui proksi jaringan
Fitur ini tersedia untuk AWS IoT Greengrass Core v1.7 dan yang lebih baru.
core Greengrass berkomunikasi dengan AWS IoT Core menggunakan protokol pesan MQTT dengan autentikasi klien TLS. Dengan konvensi, MQTT atas TLS menggunakan port 8883. Namun, sebagai upaya keamanan, lingkungan yang terbatas mungkin akan membatasi lalu lintas masuk dan keluar untuk kisaran kecil port TCP. Sebagai contoh, firewall perusahaan mungkin akan membuka port 443 untuk lalu lintas HTTPS, tetapi menutup port lain yang digunakan untuk protokol yang kurang umum, seperti port 8883 untuk lalu lintas MQTT. Lingkungan lain yang membatasi mungkin mengharuskan semua lalu lintas melalui proksi HTTP sebelum terhubung ke internet.
Untuk mengaktifkan komunikasi dalam skenario ini, AWS IoT Greengrass mengizinkan konfigurasi berikut:
-
MQTT dengan autentikasi klien TLS melalui port 443. Jika jaringan Anda mengizinkan koneksi ke port 443, Anda dapat mengonfigurasi core untuk menggunakan port 443 untuk lalu lintas MQTT menggantikan port default 8883. Ini bisa menjadi koneksi langsung ke port 443 atau koneksi melalui server proksi jaringan.
AWS IoT Greengrass menggunakan metode Application Layer Protocol Network
(ALPN) TLS ekstensi untuk mengaktifkan konektor ini. Seperti konfigurasi default, MQTT melalui TLS pada port 443 menggunakan autentikasi klien berbasis sertifikat. Ketika dikonfigurasi untuk menggunakan koneksi langsung ke port 443, inti mendukung pembaruan over-the-air (OTA) untuk AWS IoT Greengrass perangkat lunak. Dukungan ini memerlukan AWS IoT Greengrass Core v1.9.3 atau yang lebih baru.
-
Komunikasi HTTPS melalui port 443. AWS IoT Greengrass mengirimkan lalu lintas HTTPS melalui port 8443 secara default, tetapi Anda dapat mengonfigurasinya untuk menggunakan port 443.
-
Koneksi melalui proksi jaringan. Anda dapat mengonfigurasi server proksi jaringan untuk bertindak sebagai perantara untuk menghubungkan ke core Greengrass. Hanya autentikasi dasar dan HTTP dan HTTPS proxy yang didukung.
Konfigurasi proksi dilewatkan ke fungsi Lambda yang ditetapkan pengguna melalui
http_proxy
,https_proxy
, danno_proxy
variabel lingkungan. Fungsi user-defined Lambda harus menggunakan pengaturan passed-in ini untuk terhubung melalui proksi. Perpustakaan umum yang digunakan oleh fungsi Lambda untuk membuat koneksi (seperti paketrequests
boto3 atau cURL dan python) biasanya menggunakan variabel lingkungan ini secara default. Jika fungsi Lambda juga menentukan variabel lingkungan yang sama, AWS IoT Greengrass tidak menimpa mereka.penting
core Greengrass yang dikonfigurasi untuk menggunakan proksi jaringan tidak mendukung pembaruan OTA.
Untuk mengonfigurasi MQTT melalui port 443
Fitur ini memerlukan AWS IoT Greengrass Core v1.7 atau yang lebih baru.
Prosedur ini memungkinkan core Greengrass untuk menggunakan port 443 untuk pesan MQTT dengan AWS IoT Core.
-
Jalankan perintah berikut untuk menghentikan Greengrass daemon:
cd /
greengrass-root
/ggc/core/ sudo ./greengrassd stop -
Buka
untuk diedit sebagai pengguna su.greengrass-root
/config/config.json -
Di
coreThing
objek, tambahkaniotMqttPort
properti dan atur nilai untuk443
, seperti yang ditunjukkan di contoh berikut.{ "coreThing" : { "caPath" : "root.ca.pem", "certPath" : "12345abcde.cert.pem", "keyPath" : "12345abcde.private.key", "thingArn" : "arn:aws:iot:us-west-2:123456789012:thing/core-thing-name", "iotHost" : "abcd123456wxyz-ats.iot.us-west-2.amazonaws.com",
"iotMqttPort" : 443,
"ggHost" : "greengrass-ats.iot.us-west-2.amazonaws.com", "keepAlive" : 600 }, ... } -
Mulai daemon.
cd /
greengrass-root
/ggc/core/ sudo ./greengrassd start
Untuk mengonfigurasi HTTPS melalui port 443
Fitur ini memerlukan AWS IoT Greengrass Core v1.8 atau yang lebih baru.
Prosedur ini mengonfigurasi core untuk menggunakan port 443 untuk komunikasi HTTPS.
-
Jalankan perintah berikut untuk menghentikan Greengrass daemon:
cd /
greengrass-root
/ggc/core/ sudo ./greengrassd stop -
Buka
untuk diedit sebagai pengguna su.greengrass-root
/config/config.json -
Di
coreThing
objek, tambahkaniotHttpPort
danggHttpPort
properti, seperti yang ditunjukkan di contoh berikut.{ "coreThing" : { "caPath" : "root.ca.pem", "certPath" : "12345abcde.cert.pem", "keyPath" : "12345abcde.private.key", "thingArn" : "arn:aws:iot:us-west-2:123456789012:thing/core-thing-name", "iotHost" : "abcd123456wxyz-ats.iot.us-west-2.amazonaws.com",
"iotHttpPort" : 443,
"ggHost" : "greengrass-ats.iot.us-west-2.amazonaws.com","ggHttpPort" : 443,
"keepAlive" : 600 }, ... } -
Mulai daemon.
cd /
greengrass-root
/ggc/core/ sudo ./greengrassd start
Untuk mengonfigurasi proksi jaringan
Fitur ini memerlukan AWS IoT Greengrass Core v1.7 atau yang lebih baru.
Prosedur ini mengizinkan AWS IoT Greengrass untuk terhubung ke internet melalui proksi jaringan HTTP atau HTTPS.
-
Jalankan perintah berikut untuk menghentikan Greengrass daemon:
cd /
greengrass-root
/ggc/core/ sudo ./greengrassd stop -
Buka
untuk diedit sebagai pengguna su.greengrass-root
/config/config.json -
Di
coreThing
objek, tambahkan objek networkProxy, seperti yang ditunjukkan dalam contoh berikut.{ "coreThing" : { "caPath" : "root.ca.pem", "certPath" : "12345abcde.cert.pem", "keyPath" : "12345abcde.private.key", "thingArn" : "arn:aws:iot:us-west-2:123456789012:thing/core-thing-name", "iotHost" : "abcd123456wxyz-ats.iot.us-west-2.amazonaws.com", "ggHost" : "greengrass-ats.iot.us-west-2.amazonaws.com", "keepAlive" : 600,
"networkProxy": { "noProxyAddresses" : "http://128.12.34.56,www.mywebsite.com", "proxy" : { "url" : "https://my-proxy-server:1100", "username" : "Mary_Major", "password" : "pass@word1357" } }
}, ... } -
Mulai daemon.
cd /
greengrass-root
/ggc/core/ sudo ./greengrassd start
objek networkProxy
Gunakan networkProxy
objek untuk menentukan informasi tentang proksi jaringan. Objek ini memiliki sifat berikut.
Bidang | Deskripsi |
---|---|
noProxyAddresses |
Opsional. Daftar comma-separated alamat IP atau nama host yang dibebaskan dari proksi. |
proxy |
Proksi untuk terhubung ke. Proksi memiliki sifat berikut.
|
Mengizinkan titik akhir
Komunikasi antara perangkat Greengrass dan AWS IoT Core atau AWS IoT Greengrass harus diautentikasi. Autentikasi ini didasarkan pada sertifikat perangkat X.509 terdaftar dan kunci kriptografi. Untuk mengizinkan permintaan diautentifikasi untuk melewati proksi tanpa enkripsi tambahan, mengizinkan titik akhir berikut.
Titik Akhir | Port | Deskripsi |
---|---|---|
greengrass. |
443 |
Digunakan untuk operasi pesawat kontrol untuk manajemen grup. |
atau
|
MQTT: 8883 atau 443 HTTPS: 8443 atau 443 |
Digunakan untuk operasi pesawat data untuk manajemen perangkat, seperti sinkronisasi bayangan. Izinkan penggunaan salah satu atau kedua titik akhir, tergantung pada apakah perangkat inti dan klien Anda menggunakan sertifikat root CA Amazon Trust Services (pilihan), sertifikat CA root lama, atau keduanya. Untuk informasi selengkapnya, lihat Titik akhir layanan harus sesuai dengan jenis sertifikat CA root. |
atau
|
8443 atau 443 |
Digunakan untuk operasi penemuan perangkat. Izinkan penggunaan salah satu atau kedua titik akhir, tergantung pada apakah perangkat inti dan klien Anda menggunakan sertifikat root CA Amazon Trust Services (pilihan), sertifikat CA root lama, atau keduanya. Untuk informasi selengkapnya, lihat Titik akhir layanan harus sesuai dengan jenis sertifikat CA root. catatanKlien yang terhubung pada port 443 harus mengimplementasikan Application Layer Protocol Negotiation (ALPN) |
*.s3.amazonaws.com |
443 |
Digunakan untuk operasi penyebaran dan over-the-air pembaruan. Format ini mencakup karakter |
logs. |
443 |
Diperlukan jika grup Greengrass dikonfigurasi untuk menulis log. CloudWatch |
Mengonfigurasi direktori tulis untuk AWS IoT Greengrass
Fitur ini tersedia untuk AWS IoT Greengrass Core v1.6 dan yang lebih baru.
Secara default, AWS IoT Greengrass perangkat lunak Core diterapkan di bawah direktori root tunggal di mana AWS IoT Greengrass melakukan semua operasi membaca dan menulis. Namun, Anda dapat mengkonfigurasi AWS IoT Greengrass untuk menggunakan direktori terpisah untuk semua operasi tulis, termasuk membuat direktori dan file. Dalam kasus ini, AWS IoT Greengrass menggunakan dua direktori tingkat atas:
-
Direktori
greengrass-root
ini, yang dapat Anda tinggalkan sebagai baca-tulis atau opsional membuat read-only. Ini berisi AWS IoT Greengrass perangkat lunak Core dan komponen penting lainnya yang harus tetap tidak berubah selama runtime, seperti sertifikat danconfig.json
. -
Direktori tulis yang ditentukan. Ini berisi konten yang dapat ditulis, seperti log, informasi keadaan, dan di-deployed fungsi Lambda yang ditetapkan pengguna.
Konfigurasi ini menghasilkan struktur direktori berikut.
- Direktori root Greengrass
-
greengrass-root
/ |-- certs/ | |-- root.ca.pem | |--hash
.cert.pem | |--hash
.private.key | |--hash
.public.key |-- config/ | |-- config.json |-- ggc/ | |-- packages/ | |--package-version
/ | |-- bin/ | |-- daemon | |-- greengrassd | |-- lambda/ | |-- LICENSE/ | |-- release_notes_package-version
.html | |-- runtime/ | |-- java8
/ | |-- nodejs8.10
/ | |-- python3.8
/ | |-- core/ - Tulis Direktori
-
write-directory
/ |-- packages/ | |--package-version
/ | |-- ggc_root/ | |-- rootfs_nosys/ | |-- rootfs_sys/ | |-- var/ |-- deployment/ | |-- group/ | |-- group.json | |-- lambda/ | |-- mlmodel/ |-- var/ | |-- log/ | |-- state/
Untuk mengonfigurasi direktori tulis
-
Jalankan perintah berikut untuk menghentikan AWS IoT Greengrass daemon:
cd /
greengrass-root
/ggc/core/ sudo ./greengrassd stop -
Buka
untuk diedit sebagai pengguna su.greengrass-root
/config/config.json -
Tambahkan
writeDirectory
sebagai parameter dan tentukan jalur ke direktori target, seperti yang ditunjukkan di contoh berikut.{ "coreThing": { "caPath": "root-CA.pem", "certPath": "hash.pem.crt", ... }, ... "writeDirectory" : "/
write-directory
" }catatan
Anda dapat memperbarui
writeDirectory
pengaturan sesering yang Anda inginkan. Setelah pengaturan diperbarui, AWS IoT Greengrass menggunakan direktori tulis yang baru ditentukan pada permulaan berikutnya, tetapi tidak memigrasi konten dari direktori tulis sebelumnya. -
Sekarang bahwa direktori tulis Anda dikonfigurasi, Anda dapat secara opsional membuat
greengrass-root
directory read-only. Untuk instruksi, lihat. Untuk Membuat Direktori Root Greengrass Hanya Baca.Jika tidak, mulai AWS IoT Greengrass daemon:
cd /
greengrass-root
/ggc/core/ sudo ./greengrassd start
Untuk membuat direktori root Greengrass hanya baca
Ikuti langkah-langkah ini hanya jika Anda ingin membuat direktori root Greengrass hanya baca. Direktori tulis harus dikonfigurasi sebelum Anda mulai.
-
Berikan izin akses ke direktori yang diperlukan:
-
Memberikan izin baca dan tulis ke
config.json
pemilik.sudo chmod 0600 /
greengrass-root
/config/config.json -
Membuat ggc_user pemilik sertifikat dan direktori sistem Lambda.
sudo chown -R ggc_user:ggc_group /
greengrass-root
/certs/ sudo chown -R ggc_user:ggc_group /greengrass-root
/ggc/packages/1.11.6/lambda/catatan
Akun ggc_user dan ggc_group digunakan secara default untuk menjalankan fungsi sistem Lambda. Jika Anda mengonfigurasi tingkat grup identitas akses default untuk menggunakan akun yang berbeda, Anda harus memberikan izin kepada pengguna tersebut (UID) dan grup (GID) sebagai gantinya.
-
-
Membuat
direktori greengrass-root
read-only dengan menggunakan mekanisme pilihan Anda.catatan
Salah satu cara untuk membuat direktori hanya-baca
greengrass-root
adalah untuk memasang direktori sebagai hanya-baca. Namun, untuk menerapkan pembaruan over-the-air (OTA) ke perangkat lunak AWS IoT Greengrass Core di direktori yang dipasang, direktori harus dilepas terlebih dahulu, dan kemudian dipasang kembali setelah pembaruan. Anda dapat menambahkanumount
danmount
operasiota_pre_update
danota_post_update
skrip. Untuk informasi lebih lanjut tentang pembaruan OTA, lihat Agen pembaruan OTA Greengrass dan Respawn terkelola dengan pembaruan OTA. -
Mulai daemon.
cd /
greengrass-root
/ggc/core/ sudo ./greengrassd startJika izin dari langkah 1 tidak diatur dengan benar, daemon tidak akan dimulai.
Konfigurasikan pengaturan MQTT
Di AWS IoT Greengrass lingkungan, perangkat klien lokal, fungsi Lambda, konektor, dan komponen sistem dapat berkomunikasi satu sama lain dan dengan. AWS IoT Core Semua komunikasi berjalan melalui core, yang mengelola langganan yang mengotorisasi komunikasi MQTT antar entitas.
Untuk informasi tentang pengaturan MQTT Anda dapat mengonfigurasi untuk AWS IoT Greengrass, lihat bagian berikut:
catatan
OPC-UA adalah standar pertukaran informasi untuk komunikasi industri. Untuk mengimplementasikan dukungan OPC-UA pada inti Greengrass, Anda dapat menggunakan konektor IoT. SiteWise Konektor mengirimkan data perangkat industri dari server OPC-UA ke properti aset di AWS IoT SiteWise.
Kualitas layanan pesan
AWS IoT Greengrass mendukung kualitas layanan (QoS) tingkat 0 atau 1, tergantung pada konfigurasi Anda dan target dan arah komunikasi. core Greengrass bertindak sebagai klien untuk komunikasi dengan AWS IoT Core dan broker pesan untuk komunikasi di jaringan lokal.
Untuk informasi lebih lanjut tentang MQTT dan QoS, lihat Memulai
- Komunikasi dengan AWS Cloud
-
-
Pesan keluar menggunakan QoS 1
Core mengirimkan pesan ditujukan untuk AWS Cloud target menggunakan QoS 1. AWS IoT Greengrass menggunakan antrean pesan MQTT untuk memproses pesan ini. Jika pengiriman pesan tidak dikonfirmasi oleh AWS IoT, pesan akan spooled untuk dicoba lagi nanti. Pesan tidak dapat dicoba lagi jika antrean penuh. Konfirmasi pengiriman pesan dapat membantu meminimalkan kehilangan data dari konektivitas intermiten.
Karena pesan keluar ke AWS IoT menggunakan QoS 1, tingkat maksimum di mana core Greengrass dapat mengirim pesan tergantung pada latensi antara core dan AWS IoT. Setiap kali core mengirimkan pesan, maka menunggu sampai AWS IoT mengakui pesan sebelum mengirim pesan berikutnya. Misalnya, jika waktu pulang-pergi antara core dan waktunya Wilayah AWS adalah 50 milidetik, core dapat mengirim hingga 20 pesan per detik. Pertimbangkan perilaku ini ketika Anda memilih Wilayah AWS di mana core Anda terhubung. Untuk menyerap data IoT volume tinggi ke AWS Cloud, Anda dapat menggunakan Pengelola aliran.
Untuk informasi selengkapnya tentang antrean pesan MQTT, termasuk cara mengonfigurasi cache penyimpanan lokal yang dapat bertahan pesan yang ditujukan untuk AWS Cloud target, lihat Antrean pesan MQTT untuk target cloud.
-
Pesan masuk menggunakan QoS 0 (default) atau QoS 1
Secara default, core berlangganan dengan QoS 0 untuk pesan dari AWS Cloud sumber. Jika Anda mengaktifkan sesi persisten, core berlangganan dengan QoS 1. Hal ini dapat membantu meminimalkan kehilangan data dari konektivitas intermiten. Untuk mengelola QoS untuk langganan ini, Anda mengkonfigurasi pengaturan persistensi pada komponen sistem spooler lokal.
Untuk informasi lebih lanjut, termasuk cara mengaktifkan core untuk membuat sesi persisten dengan AWS Cloud target, lihat Sesi persisten MQTT dengan AWS IoT Core.
-
- Komunikasi dengan target lokal
-
Semua komunikasi lokal menggunakan QoS 0. Inti membuat satu upaya untuk mengirim pesan ke target lokal, yang dapat berupa fungsi Greengrass Lambda, konektor, atau perangkat klien. Inti tidak menyimpan pesan atau mengonfirmasi pengiriman. Pesan dapat diputus di mana saja antara komponen.
catatan
Meskipun komunikasi langsung antara fungsi Lambda tidak menggunakan pesan MQTT, perilaku adalah sama.
Antrean pesan MQTT untuk target cloud
MQTT pesan yang ditujukan untuk AWS Cloud target antri untuk menunggu pemrosesan. Pesan antrean diproses di urutan pertama dalam, pertama keluar (FIFO). Setelah pesan diproses dan dipublikasikan ke AWS IoT Core, pesan akan dihapus dari antrean.
Secara default, inti Greengrass menyimpan dalam memori pesan yang belum diproses yang ditujukan untuk target. AWS Cloud Anda dapat mengkonfigurasi core untuk menyimpan pesan yang belum diproses dalam cache penyimpanan lokal sebagai gantinya. Tidak seperti penyimpanan dalam memori, cache penyimpanan lokal memiliki kemampuan untuk bertahan di restart core (sebagai contoh, setelah grup deployment atau reboot perangkat), sehingga AWS IoT Greengrass dapat terus memproses pesan. Anda juga dapat mengonfigurasi ukuran penyimpanan.
Awas
Inti Greengrass mungkin mengantri duplikat pesan MQTT ketika kehilangan koneksi, karena ia mencoba ulang operasi publikasi sebelum klien MQTT mendeteksi bahwa itu offline. Untuk menghindari duplikat pesan MQTT untuk target cloud, konfigurasikan keepAlive
nilai inti menjadi kurang dari setengah nilainya. mqttOperationTimeout
Untuk informasi selengkapnya, lihat AWS IoT Greengrass file konfigurasi core.
AWS IoT Greengrass menggunakan komponen sistem spooler (pada GGCloudSpooler
fungsi Lambda) untuk mengelola antrean pesan. Anda dapat menggunakan yang berikut ini GGCloudSpooler
variabel lingkungan untuk mengonfigurasi pengaturan penyimpanan.
-
GG_CONFIG_STORAGE_TYPE. Lokasi antrean pesan. Berikut adalah nilai yang valid:
-
FileSystem
. Menyimpan pesan yang belum diproses dalam cache penyimpanan lokal pada disk perangkat core fisik. Ketika core dimulai ulang, pesan antrean dipertahankan untuk diproses. Pesan akan dihapus setelah pesan diproses. -
Memory
(default). Menyimpan pesan yang belum diproses dalam memori. Ketika restart core, pesan antrean hilang.Opsi ini dioptimalkan untuk perangkat dengan kemampuan perangkat keras terbatas. Saat menggunakan konfigurasi ini, kami sarankan Anda men-deploy grup atau me-restart perangkat ketika gangguan layanan adalah yang terendah.
-
-
GG_CONFIG_MAX_SIZE_BYTES. Ukuran penyimpanannya, dalam byte. Nilai ini dapat berupa integer non-negatif lebih besar dari atau sama dengan 262144 (256 KB); ukuran yang lebih kecil mencegah AWS IoT Greengrass perangkat lunak Core dari awal. Ukuran default-nya adalah 2,5 MB. Bila batas ukuran tercapai, pesan antrean tertua digantikan oleh pesan baru.
catatan
Fitur ini tersedia untuk AWS IoT Greengrass Core v1.6 dan yang lebih baru. Versi sebelumnya menggunakan penyimpanan dalam memori dengan ukuran antrean 2,5 MB. Anda tidak dapat mengonfigurasi pengaturan penyimpanan untuk versi sebelumnya.
Untuk cache pesan di penyimpanan lokal
Anda dapat mengonfigurasi AWS IoT Greengrass untuk cache pesan ke sistem file sehingga mereka bertahan di restart core. Untuk melakukannya, Anda men-deploy versi definisi fungsi di mana GGCloudSpooler
mengatur fungsi menetapkan jenis penyimpanan untuk FileSystem
. Anda harus menggunakan AWS IoT Greengrass API untuk mengonfigurasi cache penyimpanan lokal. Anda tidak dapat melakukan ini di konsol.
Prosedur berikut menggunakan perintah create-function-definition-version
CLI untuk mengkonfigurasi spooler untuk menyimpan pesan antrian ke sistem file. Ini juga mengonfigurasi ukuran antrean 2,6 MB.
-
Dapatkan ID dari grup Greengrass target dan versi grup. Prosedur ini mengasumsikan bahwa ini adalah versi grup dan grup terbaru. Query berikut mengembalikan grup yang paling baru dibuat.
aws greengrass list-groups --query "reverse(sort_by(Groups, &CreationTimestamp))[0]"
Atau, Anda dapat melakukan query berdasarkan nama. Nama grup tidak perlu unik, sehingga beberapa grup mungkin ditampilkan.
aws greengrass list-groups --query "Groups[?Name=='
MyGroup
']"catatan
Anda juga dapat menemukan nilai-nilai ini di konsol AWS IoT tersebut. ID grup ditampilkan pada halaman Pengaturan grup. ID versi grup ditampilkan di tab Deployment grup.
-
Salin nilai
Id
danLatestVersion
dari grup target di dalam output. -
Dapatkan versi grup terbaru.
-
Ganti
id-grup
denganId
yang Anda salin. -
Ganti
latest-group-version-id
denganLatestVersion
yang Anda salin.
aws greengrass get-group-version \ --group-id
group-id
\ --group-version-idlatest-group-version-id
-
-
Dari objek
Definition
dalam output, salinCoreDefinitionVersionArn
dan ARN dari semua komponen grup lainnya kecualiFunctionDefinitionVersionArn
. Anda menggunakan nilai-nilai ini ketika membuat versi grup baru. -
Dari
FunctionDefinitionVersionArn
di output, salin ID dari definisi fungsi. ID adalah GUID yang mengikutifunctions
segmen di dalam ARN, seperti yang ditunjukkan dalam contoh berikut.arn:aws:greengrass:us-west-2:123456789012:/greengrass/definition/functions/bcfc6b49-beb0-4396-b703-6dEXAMPLEcu5/versions/0f7337b4-922b-45c5-856f-1aEXAMPLEsf6
catatan
Atau, Anda dapat membuat definisi fungsi dengan menjalankan
create-function-definition
perintah, dan kemudian menyalin ID dari output. -
Menambahkan versi definisi fungsi untuk definisi fungsi.
-
Ganti
function-definition-id
denganId
yang Anda salin untuk definisi fungsi. -
Ganti
arbitrary-function-id
dengan nama untuk fungsi tersebut, sepertispooler-function
. -
Tambahkan fungsi Lambda yang ingin Anda sertakan dalam versi ini ke
functions
array. Anda dapat menggunakanget-function-definition-version
perintah untuk mendapatkan fungsi Greengrass Lambda dari versi definisi fungsi yang ada.
Awas
Pastikan Anda menentukan nilai untuk
GG_CONFIG_MAX_SIZE_BYTES
itu lebih besar dari atau sama dengan 262144. Ukuran yang lebih kecil mencegah AWS IoT Greengrass Perangkat lunak Core dari awal.aws greengrass create-function-definition-version \ --function-definition-id
function-definition-id
\ --functions '[{"FunctionArn": "arn:aws:lambda:::function:GGCloudSpooler:1","FunctionConfiguration": {"Environment": {"Variables":{"GG_CONFIG_MAX_SIZE_BYTES":"2621440","GG_CONFIG_STORAGE_TYPE":"FileSystem"}},"Executable": "spooler","MemorySize": 32768,"Pinned": true,"Timeout": 3},"Id": "arbitrary-function-id
"}]'catatan
Jika Anda sebelumnya mengatur
GG_CONFIG_SUBSCRIPTION_QUALITY
variabel lingkungan untuk mendukung sesi persisten dengan AWS IoT Core, termasuk dalam fungsi instans ini. -
-
Salin
Arn
dari versi definisi fungsi dari output. -
Buat versi grup yang berisi fungsi Lambda sistem.
-
Ganti
id-grup
denganId
untuk grup. -
Ganti
core-definition-version-arn
denganCoreDefinitionVersionArn
yang Anda salin dari versi grup terbaru. -
Ganti
function-definition-version-arn
denganArn
yang Anda salin untuk versi definisi fungsi baru. -
Ganti ARN untuk komponen grup lainnya (sebagai contoh,
SubscriptionDefinitionVersionArn
atauDeviceDefinitionVersionArn
) yang Anda salin dari versi grup terbaru. -
Hapus parameter yang tidak terpakai. Sebagai contoh, Hapus
--resource-definition-version-arn
jika versi grup Anda tidak berisi sumber daya apa pun.
aws greengrass create-group-version \ --group-id
group-id
\ --core-definition-version-arncore-definition-version-arn
\ --function-definition-version-arnfunction-definition-version-arn
\ --device-definition-version-arndevice-definition-version-arn
\ --logger-definition-version-arnlogger-definition-version-arn
\ --resource-definition-version-arnresource-definition-version-arn
\ --subscription-definition-version-arnsubscription-definition-version-arn
-
-
Salin
Version
dari output. Ini adalah ID dari versi grup baru. -
Men-deploy grup dengan versi grup baru.
-
Ganti
id-grup
denganId
yang Anda salin untuk grup. -
Ganti
group-version-id
denganVersion
yang Anda salin untuk versi grup baru.
aws greengrass create-deployment \ --group-id
group-id
\ --group-version-idgroup-version-id
\ --deployment-type NewDeployment -
Untuk memperbarui pengaturan penyimpanan, Anda menggunakan AWS IoT Greengrass API untuk membuat versi definisi fungsi baru yang berisi GGCloudSpooler
fungsi dengan konfigurasi diperbarui. Kemudian tambahkan versi definisi fungsi ke versi grup baru (bersama dengan komponen grup Anda yang lain) dan men-deploy versi grup. Jika Anda ingin memulihkan konfigurasi default, Anda dapat men-deploy versi definisi fungsi yang tidak termasuk GGCloudSpooler
fungsi.
Fungsi Lambda sistem ini tidak terlihat di konsol. Namun, setelah fungsi ditambahkan ke versi grup terbaru, itu termasuk dalam deployment yang Anda buat dari konsol, kecuali jika Anda menggunakan API untuk mengganti atau menghapusnya.
Sesi persisten MQTT dengan AWS IoT Core
Fitur ini tersedia untuk AWS IoT Greengrass Core v1.10 dan yang lebih baru.
Sebuah core Greengrass dapat membangun sesi persisten dengan AWS IoT broker pesan. Sesi persisten adalah koneksi yang sedang berlangsung yang mengizinkan core untuk menerima pesan yang dikirim saat core offline. Core adalah klien dalam koneksi.
Dalam sesi persisten, AWS IoT pesan broker menyimpan semua langganan core membuat selama koneksi. Jika inti terputus, broker AWS IoT pesan menyimpan pesan yang tidak diakui dan baru diterbitkan sebagai QoS 1 dan ditujukan untuk target lokal, seperti fungsi Lambda dan perangkat klien. Ketika core menghubungkan kembali, sesi persisten dilanjutkan dan AWS IoT pesan broker mengirimkan pesan yang disimpan ke core pada tingkat maksimum 10 pesan per detik. Sesi persisten memiliki periode kedaluwarsa default 1 jam, yang dimulai ketika broker pesan mendeteksi bahwa core terputus. Untuk informasi selengkapnya, lihat sesi persisten MQTT di AWS IoT Panduan Pengembang.
AWS IoT Greengrass menggunakan komponen sistem spooler (pada GGCloudSpooler
Fungsi Lambda) untuk membuat langganan yang memiliki AWS IoT sebagai sumbernya. Anda dapat menggunakan variabel lingkungan GGCloudSpooler
berikut untuk mengonfigurasi sesi persisten.
-
GG_CONFIG_SUBSCRIPTION_QUALITY. Kualitas langganan yang memiliki AWS IoT sebagai sumbernya. Berikut adalah nilai yang valid:
-
AtMostOnce
(default). Menonaktifkan sesi persisten. Langganan menggunakan QoS 0. -
AtLeastOncePersistent
. Mengaktifkan sesi persisten. AturcleanSession
bendera ke0
diCONNECT
pesan dan berlangganan dengan QoS 1.Pesan yang diterbitkan dengan QoS 1 yang diterima core dijamin dapat mencapai antrean pekerjaan Greengrass daemon's in-memory. Core mengakui pesan setelah ditambahkan ke antrean. Komunikasi berikutnya dari antrean ke target lokal (sebagai contoh, fungsi Greengrass Lambda, konektor, atau perangkat) dikirim sebagai QoS 0. AWS IoT Greengrass tidak menjamin pengiriman ke target lokal.
catatan
Anda dapat menggunakan properti konfigurasi maxWorkItemHitung untuk mengontrol ukuran antrian item kerja. Misalnya, Anda dapat meningkatkan ukuran antrean jika beban kerja Anda memerlukan lalu lintas MQTT berat.
Ketika sesi persisten diaktifkan, core membuka setidaknya satu koneksi tambahan untuk pertukaran pesan MQTT dengan AWS IoT. Untuk informasi selengkapnya, lihat ID klien untuk koneksi MQTT dengan AWS IoT.
-
Untuk mengonfigurasi sesi persisten MQTT
Anda dapat mengonfigurasi AWS IoT Greengrass untuk menggunakan sesi persisten dengan AWS IoT Core. Untuk melakukannya, Anda men-deploy versi definisi fungsi di mana GGCloudSpooler
fungsi mengatur kualitas berlangganan untuk AtLeastOncePersistent
. Pengaturan ini berlaku untuk semua langganan yang memiliki AWS IoT Core (cloud
) sebagai sumber. Anda harus menggunakan AWS IoT Greengrass API untuk mengonfigurasi sesi persisten. Anda tidak dapat melakukan ini di konsol.
Prosedur berikut menggunakan perintah create-function-definition-version
CLI untuk mengkonfigurasi spooler untuk menggunakan sesi persisten. Dalam prosedur ini, kami menganggap bahwa Anda memperbarui konfigurasi versi grup terbaru dari grup yang ada.
-
Dapatkan ID dari grup Greengrass target dan versi grup. Prosedur ini mengasumsikan bahwa ini adalah versi grup dan grup terbaru. Query berikut mengembalikan grup yang paling baru dibuat.
aws greengrass list-groups --query "reverse(sort_by(Groups, &CreationTimestamp))[0]"
Atau, Anda dapat melakukan query berdasarkan nama. Nama grup tidak perlu unik, sehingga beberapa grup mungkin ditampilkan.
aws greengrass list-groups --query "Groups[?Name=='
MyGroup
']"catatan
Anda juga dapat menemukan nilai-nilai ini di konsol AWS IoT tersebut. ID grup ditampilkan pada halaman Pengaturan grup. ID versi grup ditampilkan di tab Deployment grup.
-
Salin nilai
Id
danLatestVersion
dari grup target di dalam output. -
Dapatkan versi grup terbaru.
-
Ganti
id-grup
denganId
yang Anda salin. -
Ganti
latest-group-version-id
denganLatestVersion
yang Anda salin.
aws greengrass get-group-version \ --group-id
group-id
\ --group-version-idlatest-group-version-id
-
-
Dari objek
Definition
dalam output, salinCoreDefinitionVersionArn
dan ARN dari semua komponen grup lainnya kecualiFunctionDefinitionVersionArn
. Anda menggunakan nilai-nilai ini ketika membuat versi grup baru. -
Dari
FunctionDefinitionVersionArn
di output, salin ID dari definisi fungsi. ID adalah GUID yang mengikutifunctions
segmen di dalam ARN, seperti yang ditunjukkan dalam contoh berikut.arn:aws:greengrass:us-west-2:123456789012:/greengrass/definition/functions/bcfc6b49-beb0-4396-b703-6dEXAMPLEcu5/versions/0f7337b4-922b-45c5-856f-1aEXAMPLEsf6
catatan
Atau, Anda dapat membuat definisi fungsi dengan menjalankan
create-function-definition
perintah, dan kemudian menyalin ID dari output. -
Menambahkan versi definisi fungsi untuk definisi fungsi.
-
Ganti
function-definition-id
denganId
yang Anda salin untuk definisi fungsi. -
Ganti
arbitrary-function-id
dengan nama untuk fungsi tersebut, sepertispooler-function
. -
Tambahkan fungsi Lambda yang ingin Anda sertakan dalam versi ini ke
functions
array. Anda dapat menggunakanget-function-definition-version
perintah untuk mendapatkan fungsi Greengrass Lambda dari versi definisi fungsi yang ada.
aws greengrass create-function-definition-version \ --function-definition-id
function-definition-id
\ --functions '[{"FunctionArn": "arn:aws:lambda:::function:GGCloudSpooler:1","FunctionConfiguration": {"Environment": {"Variables":{"GG_CONFIG_SUBSCRIPTION_QUALITY":"AtLeastOncePersistent"}},"Executable": "spooler","MemorySize": 32768,"Pinned": true,"Timeout": 3},"Id": "arbitrary-function-id
"}]'catatan
Jika Anda sebelumnya mengatur
GG_CONFIG_STORAGE_TYPE
atauGG_CONFIG_MAX_SIZE_BYTES
variabel lingkungan ke menentukan pengaturan penyimpanan, termasuk mereka dalam contoh fungsi ini. -
-
Salin
Arn
dari versi definisi fungsi dari output. -
Buat versi grup yang berisi fungsi Lambda sistem.
-
Ganti
id-grup
denganId
untuk grup. -
Ganti
core-definition-version-arn
denganCoreDefinitionVersionArn
yang Anda salin dari versi grup terbaru. -
Ganti
function-definition-version-arn
denganArn
yang Anda salin untuk versi definisi fungsi baru. -
Ganti ARN untuk komponen grup lainnya (sebagai contoh,
SubscriptionDefinitionVersionArn
atauDeviceDefinitionVersionArn
) yang Anda salin dari versi grup terbaru. -
Hapus parameter yang tidak terpakai. Sebagai contoh, Hapus
--resource-definition-version-arn
jika versi grup Anda tidak berisi sumber daya apa pun.
aws greengrass create-group-version \ --group-id
group-id
\ --core-definition-version-arncore-definition-version-arn
\ --function-definition-version-arnfunction-definition-version-arn
\ --device-definition-version-arndevice-definition-version-arn
\ --logger-definition-version-arnlogger-definition-version-arn
\ --resource-definition-version-arnresource-definition-version-arn
\ --subscription-definition-version-arnsubscription-definition-version-arn
-
-
Salin
Version
dari output. Ini adalah ID dari versi grup baru. -
Men-deploy grup dengan versi grup baru.
-
Ganti
id-grup
denganId
yang Anda salin untuk grup. -
Ganti
group-version-id
denganVersion
yang Anda salin untuk versi grup baru.
aws greengrass create-deployment \ --group-id
group-id
\ --group-version-idgroup-version-id
\ --deployment-type NewDeployment -
-
(Opsional) Meningkatkan properti maxWorkItemCount dalam file konfigurasi inti. Hal ini dapat membantu menangani core meningkatkan lalu lintas MQTT dan komunikasi dengan target lokal.
Untuk memperbarui core dengan perubahan konfigurasi ini, Anda menggunakan AWS IoT Greengrass API untuk membuat versi definisi fungsi baru yang berisi GGCloudSpooler
fungsi dengan konfigurasi diperbarui. Kemudian tambahkan versi definisi fungsi ke versi grup baru (bersama dengan komponen grup Anda yang lain) dan men-deploy versi grup. Jika Anda ingin memulihkan konfigurasi default, Anda dapat membuat versi definisi fungsi yang tidak menyertakan GGCloudSpooler
fungsi.
Fungsi Lambda sistem ini tidak terlihat di konsol. Namun, setelah fungsi ditambahkan ke versi grup terbaru, itu termasuk dalam deployment yang Anda buat dari konsol, kecuali jika Anda menggunakan API untuk mengganti atau menghapusnya.
ID klien untuk koneksi MQTT dengan AWS IoT
Fitur ini tersedia untuk AWS IoT Greengrass Core v1.8 dan yang lebih baru.
core Greengrass membuka koneksi MQTT dengan AWS IoT Core untuk operasi seperti sinkronisasi bayangan dan manajemen sertifikat. Untuk koneksi ini, core menghasilkan ID klien diprediksi berdasarkan nama core. ID klien yang dapat diprediksi dapat digunakan dengan fitur pemantauan, audit, dan penetapan harga, termasuk peristiwa AWS IoT Device Defender AWS IoTsiklus hidup. Anda juga dapat membuat logika di sekitar ID klien yang dapat diprediksi (sebagai contoh, kebijakan berlangganan templat berdasarkan atribut sertifikat).
catatan
Duplikat klien ID yang digunakan dalam koneksi simultan dapat menyebabkan loop connect-disconnect tak terbatas. Hal ini dapat terjadi jika perangkat lain hardcoded untuk menggunakan nama perangkat core sebagai ID klien di koneksi. Untuk informasi lebih lanjut, lihat langkah pemecahan masalah.
Perangkat Greengrass juga terintegrasi sepenuhnya dengan layanan Fleet Indexing AWS IoT Device Management. Hal ini memungkinkan Anda untuk indeks dan mencari perangkat berdasarkan atribut perangkat, keadaan bayangan, dan status koneksi di cloud. Sebagai contoh, perangkat Greengrass membangun setidaknya satu koneksi yang menggunakan nama hal sebagai ID klien, sehingga Anda dapat menggunakan pengindeksan konektivitas perangkat untuk menemukan perangkat Greengrass yang saat ini terhubung atau terputus ke AWS IoT Core. Untuk informasi selengkapnya, lihat layanan pengindeksan armada di AWS IoT Panduan Pengembang.
Konfigurasi port MQTT untuk pesan lokal
Fitur ini memerlukan AWS IoT Greengrass Core v1.10 atau yang lebih baru.
Inti Greengrass bertindak sebagai broker pesan lokal untuk pesan MQTT antara fungsi Lambda lokal, konektor, dan perangkat klien. Secara default, core menggunakan port 8883 untuk lalu lintas MQTT pada jaringan lokal. Anda mungkin ingin mengubah port untuk menghindari konflik dengan perangkat lunak lain yang berjalan pada port 8883.
Untuk mengkonfigurasi nomor port yang menggunakan contoh untuk lalu lintas MQTT lokal
-
Jalankan perintah berikut untuk menghentikan Greengrass daemon:
cd /
greengrass-root
/ggc/core/ sudo ./greengrassd stop -
Buka
untuk diedit sebagai pengguna su.greengrass-root
/config/config.json -
Di
coreThing
objek, tambahkanggMqttPort
properti dan tetapkan nilai ke nomor port yang ingin Anda gunakan. Nilai yang valid adalah 1024 sampai 65535. Contoh berikut menetapkan nomor port menjadi9000
.{ "coreThing" : { "caPath" : "root.ca.pem", "certPath" : "12345abcde.cert.pem", "keyPath" : "12345abcde.private.key", "thingArn" : "arn:aws:iot:us-west-2:123456789012:thing/core-thing-name", "iotHost" : "abcd123456wxyz-ats.iot.us-west-2.amazonaws.com", "ggHost" : "greengrass-ats.iot.us-west-2.amazonaws.com",
"ggMqttPort" : 9000,
"keepAlive" : 600 }, ... } -
Mulai daemon.
cd /
greengrass-root
/ggc/core/ sudo ./greengrassd start -
Jika deteksi IP otomatis diaktifkan untuk core, konfigurasi selesai.
Jika deteksi IP otomatis tidak diaktifkan, Anda harus memperbarui informasi konektivitas untuk core. Hal ini memungkinkan perangkat klien untuk menerima nomor port yang benar selama operasi penemuan untuk memperoleh informasi konektivitas inti. Anda dapat menggunakan AWS IoT konsol atau AWS IoT Greengrass API untuk memperbarui informasi konektivitas core. Untuk prosedur ini, Anda memperbarui hanya nomor port. Alamat IP lokal untuk core tetap sama.
- Untuk memperbarui informasi konektivitas untuk inti (konsol)
-
-
Pada halaman konfigurasi grup, pilih inti Greengrass.
-
Pada halaman detail inti, pilih tab titik akhir broker MQTT.
-
Pilih Kelola titik akhir dan kemudian pilih Tambah titik akhir
-
Masukkan alamat IP lokal Anda saat ini dan nomor port baru. Contoh berikut mengatur nomor port
9000
untuk alamat IP192.168.1.8
. -
Hapus titik akhir usang, dan kemudian pilih Perbarui
-
- Untuk memperbarui informasi konektivitas untuk inti (API)
-
-
Gunakan UpdateConnectivityInfotindakan. Contoh berikut menggunakan
update-connectivity-info
di AWS CLI untuk mengatur nomor port9000
untuk alamat IP192.168.1.8
.aws greengrass update-connectivity-info \ --thing-name "MyGroup_Core" \ --connectivity-info "[{\"Metadata\":\"\",\"PortNumber\":9000,\"HostAddress\":\"192.168.1.8\",\"Id\":\"localIP_192.168.1.8\"},{\"Metadata\":\"\",\"PortNumber\":8883,\"HostAddress\":\"127.0.0.1\",\"Id\":\"localhost_127.0.0.1_0\"}]"
-
catatan
Anda juga dapat mengkonfigurasi port yang menggunakan core untuk pesan MQTT dengan AWS IoT Core. Untuk informasi selengkapnya, lihat Connect pada port 443 atau melalui proksi jaringan.
Waktu habis untuk menerbitkankan, berlangganan, berhenti berlangganan operasi di koneksi MQTT dengan AWS Cloud
Fitur ini tersedia di AWS IoT Greengrass v1.10.2 atau yang lebih baru.
Anda dapat mengkonfigurasi jumlah waktu (dalam detik) untuk mengizinkan core Greengrass untuk menyelesaikan penerbitan, berlangganan, atau berhenti berlangganan operasi di koneksi MQTT ke AWS IoT Core. Anda mungkin ingin menyesuaikan pengaturan ini jika waktu operasi habis karena kendala bandwidth atau latency tinggi. Untuk mengonfigurasi pengaturan ini di config.json file, tambah atau ubah mqttOperationTimeout
properti coreThing
objek. Sebagai contoh:
{ "coreThing": { "mqttOperationTimeout": 10, "caPath": "root-ca.pem", "certPath": "
hash
.cert.pem", "keyPath": "hash
.private.key", ... }, ... }
Waktu habis default adalah 5 detik. Waktu habis minimal adalah 5 detik.
Aktifkan deteksi IP otomatis
Anda dapat mengonfigurasi AWS IoT Greengrass untuk mengaktifkan perangkat klien dalam grup Greengrass untuk secara otomatis menemukan inti Greengrass. Ketika diaktifkan, core mencatat untuk perubahan ke alamat IP-nya. Jika alamat berubah, core menerbitkan daftar alamat yang diperbarui. Alamat ini tersedia untuk perangkat klien yang berada dalam grup Greengrass yang sama dengan intinya.
catatan
AWS IoTKebijakan untuk perangkat klien harus memberikan greengrass:Discover
izin untuk mengizinkan perangkat mengambil informasi konektivitas untuk inti. Untuk informasi selengkapnya tentang kebijakan laporan, lihat Otorisasi Discovery.
Untuk mengaktifkan fitur ini dari AWS IoT Greengrass konsol, pilih Deteksi otomatis ketika Anda men-deploy grup Greengrass Anda untuk pertama kalinya. Anda juga dapat mengaktifkan atau menonaktifkan fitur ini pada halaman konfigurasi grup dengan memilih tab fungsi Lambda dan memilih detektor IP. Deteksi IP otomatis diaktifkan jika Secara otomatis mendeteksi dan mengganti titik akhir broker MQTT dipilih.
Untuk mengelola penemuan otomatis dengan AWS IoT Greengrass API, Anda harus mengkonfigurasi IPDetector
fungsi sistem Lambda. Prosedur berikut menunjukkan cara menggunakan perintah create-function-definition-versionCLI untuk mengkonfigurasi penemuan otomatis inti Greengrass.
-
Dapatkan ID dari grup Greengrass target dan versi grup. Prosedur ini mengasumsikan bahwa ini adalah versi grup dan grup terbaru. Query berikut mengembalikan grup yang paling baru dibuat.
aws greengrass list-groups --query "reverse(sort_by(Groups, &CreationTimestamp))[0]"
Atau, Anda dapat melakukan query berdasarkan nama. Nama grup tidak perlu unik, sehingga beberapa grup mungkin ditampilkan.
aws greengrass list-groups --query "Groups[?Name=='
MyGroup
']"catatan
Anda juga dapat menemukan nilai-nilai ini di konsol AWS IoT tersebut. ID grup ditampilkan pada halaman Pengaturan grup. ID versi grup ditampilkan di tab Deployment grup.
-
Salin nilai
Id
danLatestVersion
dari grup target di dalam output. -
Dapatkan versi grup terbaru.
-
Ganti
id-grup
denganId
yang Anda salin. -
Ganti
latest-group-version-id
denganLatestVersion
yang Anda salin.
aws greengrass get-group-version \ --group-id
group-id
\ --group-version-idlatest-group-version-id
-
-
Dari objek
Definition
dalam output, salinCoreDefinitionVersionArn
dan ARN dari semua komponen grup lainnya kecualiFunctionDefinitionVersionArn
. Anda menggunakan nilai-nilai ini ketika membuat versi grup baru. -
Dari
FunctionDefinitionVersionArn
di output, salin ID definisi fungsi dan versi definisi fungsi:arn:aws:greengrass:
region
:account-id
:/greengrass/groups/function-definition-id
/versions/function-definition-version-id
catatan
Anda dapat secara opsional membuat definisi fungsi dengan menjalankan
create-function-definition
perintah, dan kemudian menyalin ID dari output. -
Gunakan
get-function-definition-version
perintah untuk mendapatkan keadaan definisi saat ini. Gunakan yangfunction-definition-id
Anda salin untuk definiton fungsi. Sebagai contoh,4d941bc7-92a1-4f45-8d64-EXAMPLEf76c3
.aws greengrass get-function-definition-version --function-definition-id
function-definition-id
--function-definition-version-idfunction-definition-version-id
Buat catatan konfigurasi fungsi yang tercantum. Anda harus menyertakan ini saat membuat versi definisi fungsi baru untuk mencegah hilangnya pengaturan definisi Anda saat ini.
-
Tambahkan versi definisi fungsi untuk definisi fungsi.
-
Ganti
function-definition-id
denganId
yang Anda salin untuk definisi fungsi. Sebagai contoh,4d941bc7-92a1-4f45-8d64-EXAMPLEf76c3
. -
Ganti
arbitrary-function-id
dengan nama untuk fungsi tersebut, sepertiauto-detection-function
. -
Tambahkan semua fungsi Lambda yang ingin Anda sertakan dalam versi ini ke
functions
Array, seperti yang tercantum dalam langkah sebelumnya.
aws greengrass create-function-definition-version \ --function-definition-id
function-definition-id
\ --functions '[{"FunctionArn":"arn:aws:lambda:::function:GGIPDetector:1","Id":"arbitrary-function-id
","FunctionConfiguration":{"Pinned":true,"MemorySize":32768,"Timeout":3}}]'\ --region us-west-2 -
-
Salin
Arn
dari versi definisi fungsi dari output. -
Buat versi grup yang berisi fungsi Lambda sistem.
-
Ganti
id-grup
denganId
untuk grup. -
Ganti
core-definition-version-arn
denganCoreDefinitionVersionArn
yang Anda salin dari versi grup terbaru. -
Ganti
function-definition-version-arn
denganArn
yang Anda salin untuk versi definisi fungsi baru. -
Ganti ARN untuk komponen grup lainnya (sebagai contoh,
SubscriptionDefinitionVersionArn
atauDeviceDefinitionVersionArn
) yang Anda salin dari versi grup terbaru. -
Hapus parameter yang tidak terpakai. Sebagai contoh, Hapus
--resource-definition-version-arn
jika versi grup Anda tidak berisi sumber daya apa pun.
aws greengrass create-group-version \ --group-id
group-id
\ --core-definition-version-arncore-definition-version-arn
\ --function-definition-version-arnfunction-definition-version-arn
\ --device-definition-version-arndevice-definition-version-arn
\ --logger-definition-version-arnlogger-definition-version-arn
\ --resource-definition-version-arnresource-definition-version-arn
\ --subscription-definition-version-arnsubscription-definition-version-arn
-
-
Salin
Version
dari output. Ini adalah ID dari versi grup baru. -
Men-deploy grup dengan versi grup baru.
-
Ganti
id-grup
denganId
yang Anda salin untuk grup. -
Ganti
group-version-id
denganVersion
yang Anda salin untuk versi grup baru.
aws greengrass create-deployment \ --group-id
group-id
\ --group-version-idgroup-version-id
\ --deployment-type NewDeployment -
Jika Anda ingin secara manual memasukkan alamat IP core Greengrass Anda, Anda dapat menyelesaikan tutorial ini dengan definisi fungsi yang berbeda yang tidak termasuk IPDetector
fungsi. Ini akan mencegah fungsi deteksi dari menemukan dan secara otomatis memasukkan alamat IP core Greengrass Anda.
Fungsi Lambda sistem ini tidak terlihat di konsol Lambda. Setelah fungsi ditambahkan ke versi grup terbaru, itu termasuk dalam deployment yang Anda buat dari konsol, kecuali jika Anda menggunakan API untuk mengganti atau menghapusnya.
Konfigurasikan sistem init untuk memulai Greengrass daemon
Ini adalah praktik yang baik untuk mengatur sistem init Anda untuk memulai Greengrass daemon saat boot, terutama ketika mengelola armada besar perangkat.
catatan
Jika Anda menggunakan apt
untuk menginstal AWS IoT Greengrass perangkat lunak Core, Anda dapat menggunakan skrip systemd untuk mengaktifkan start on boot. Untuk informasi selengkapnya, lihat Gunakan skrip systemd untuk mengelola siklus hidup Greengrass daemon.
Ada berbagai jenis sistem init, seperti initd, systemd, dan SystemV, dan mereka menggunakan parameter konfigurasi yang sama. Contoh berikut adalah file layanan untuk systemd. Parameter Type
diatur ke forking
karena greengrassd (yang digunakan untuk memulai Greengrass) forks proses Greengrass daemon, dan Restart
parameter diatur ke on-failure
untuk mengarahkan systemd untuk me-restart Greengrass jika Greengrass memasuki keadaan gagal.
catatan
Untuk melihat apakah perangkat Anda menggunakan systemd, jalankan check_ggc_dependencies
seperti yang dijelaskan di Modul 1. Kemudian untuk menggunakan systemd, pastikan bahwa parameter useSystemd
di config.json diatur ke yes
.
[Unit] Description=Greengrass Daemon [Service] Type=forking PIDFile=/var/run/greengrassd.pid Restart=on-failure ExecStart=/greengrass/ggc/core/greengrassd start ExecReload=/greengrass/ggc/core/greengrassd restart ExecStop=/greengrass/ggc/core/greengrassd stop [Install] WantedBy=multi-user.target