Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Anatomi gambar emas
AWS IoT Greengrass Perangkat inti yang diproduksi dalam skala umumnya perangkat Linux tertanam yang memiliki distribusi Linux yang dibangun dengan menggunakan alat seperti Yocto
Perangkat semacam itu sering memiliki sistem file mereka yang diatur ke dalam beberapa partisi. Panduan ini menggunakan gambar emas sebagai istilah catch-all. Perangkat Anda mungkin memiliki beberapa gambar emas, untuk mem-flash berbagai partisi.
Gambar emas Anda mungkin mencakup keseluruhan sistem file perangkat atau hanya sebagian saja. Panduan ini berfokus pada bagian-bagian sistem file yang perlu Anda pertimbangkan AWS IoT Greengrass, tanpa menentukan cara merakit gambar Anda secara lebih luas.
Pohon direktori Greengrass
Untuk memahami metode gambar emas yang dibahas dalam panduan ini, tinjau struktur pohon direktori Greengrass yang ditunjukkan pada tabel berikut.
Direktori |
Deskripsi |
---|---|
|
Luncurkan parameter dan tautan simbolis ke versi inti Greengrass yang saat ini aktif. |
|
Binari, jika ada yang diinstal (misalnya, biner CLI Greengrass jika komponen itu diinstal). Direktori ini sering kosong. |
|
Scratchpad untuk komunikasi antar proses CLI Greengrass (IPC). Direktori ini kosong jika Anda belum menginstal CLI Greengrass. |
|
Semua konfigurasi Greengrass, termasuk konfigurasi komponen. |
|
Data untuk mengelola status penerapan dan rollback. |
|
Log file untuk nukleus dan komponen lainnya. |
|
Artefak dan resep untuk semua komponen. |
|
Penyimpanan untuk komponen jenis |
|
Scratchpad digunakan oleh Greengrass untuk mengumpulkan data telemetri yang siap dipublikasikan. |
|
Scratchpad untuk komponen. |
work
Direktori logs
telemetry
,, dan hanya berisi data fana. Mereka tidak perlu disertakan dalam gambar emas, jadi hilangkan jika Anda ingin meminimalkan ukuran gambar.
CLI Greengrass biasanya tidak diinstal pada perangkat produksi, sehingga bin
direktori cli_ipc_info
dan sering kosong dan biasanya tidak perlu disertakan dalam gambar emas.
plugins
Direktori menyertakan data hanya jika Anda menginstal plugin secara manual (seperti plugin penyediaan armada atau plugin penyediaan khusus) saat Anda menginstal Greengrass.
Data dalam deployments
direktori hanya digunakan ketika penerapan sedang berlangsung dan oleh karena itu tidak diperlukan dalam gambar emas.
Akibatnyaalts
, config
dan packages
direktori adalah yang paling menarik. Terkadang ini adalah satu-satunya direktori Greengrass yang perlu Anda sertakan dalam gambar emas, jika Anda ingin meminimalkan ukuran gambar.
Isi direktori paket
Direktori paket memiliki tiga subdirektori, seperti yang ditunjukkan pada tabel berikut.
Subdirektori |
Deskripsi |
---|---|
|
Artefak komponen zip yang diunduh Greengrass selama penerapan. |
|
Untuk artefak yang merupakan |
|
File resep komponen. |
artefak
Berikut contoh daftar pohon packages/artifacts
menunjukkan bagaimana artefak disimpan.
user@machine:~$ sudo tree /greengrass/v2/packages/artifacts /greengrass/v2/packages/artifacts ├── aws.greengrass.DockerApplicationManager ├── aws.greengrass.LogManager │ └── 2.3.7 │ └── aws.greengrass.LogManager.jar ├── aws.greengrass.Nucleus │ └── 2.12.6 │ └── aws.greengrass.nucleus.zip ├── aws.greengrass.SecretManager │ └── 2.1.8 │ └── aws.greengrass.SecretManager.jar ├── aws.greengrass.SecureTunneling │ └── 1.0.19 │ └── GreengrassV2SecureTunnelingComponent-1.0-all.jar ├── aws.greengrass.labs.CertificateRotator │ └── 1.1.0 │ └── certificate-rotator.zip ├── aws.greengrass.labs.HomeAssistant │ └── 1.0.0 │ └── home-assistant.zip └── aws.greengrass.telemetry.NucleusEmitter └── 1.0.8 └── aws.greengrass.telemetry.NucleusEmitter.jar 15 directories, 7 files
artefak-tidak diarsipkan
Berikut contoh daftar pohon packages/artifacts-unarchived
menunjukkan artefak yang diekstrak dari .zip
file.
user@machine:~$ sudo tree /greengrass/v2/packages/artifacts-unarchived /greengrass/v2/packages/artifacts-unarchived ├── aws.greengrass.Nucleus │ └── 2.12.6 │ └── aws.greengrass.nucleus │ ├── LICENSE │ ├── NOTICE │ ├── README.md │ ├── THIRD-PARTY-LICENSES │ ├── bin │ │ ├── greengrass.exe │ │ ├── greengrass.service │ │ ├── greengrass.service.procd.template │ │ ├── greengrass.service.template │ │ ├── greengrass.xml.template │ │ ├── loader │ │ └── loader.cmd │ ├── conf │ │ └── recipe.yaml │ └── lib │ └── Greengrass.jar ├── aws.greengrass.SecureTunneling │ └── 1.0.19 ├── aws.greengrass.labs.CertificateRotator │ └── 1.1.0 │ └── certificate-rotator │ ├── __pycache__ │ │ ├── config.cpython-310.pyc │ │ ├── config.cpython-311.pyc │ │ ├── effective_config.cpython-310.pyc │ │ ├── effective_config.cpython-311.pyc │ │ ├── main.cpython-311.pyc │ │ ├── pki.cpython-310.pyc │ │ ├── pki.cpython-311.pyc │ │ ├── pki_file.cpython-310.pyc │ │ ├── pki_file.cpython-311.pyc │ │ ├── pki_hsm.cpython-310.pyc │ │ ├── pki_hsm.cpython-311.pyc │ │ ├── pubsub.cpython-310.pyc │ │ ├── pubsub.cpython-311.pyc │ │ ├── state.cpython-310.pyc │ │ ├── state.cpython-311.pyc │ │ ├── state_committing_certificate.cpython-310.pyc │ │ ├── state_committing_certificate.cpython-311.pyc │ │ ├── state_creating_certificate.cpython-310.pyc │ │ ├── state_creating_certificate.cpython-311.pyc │ │ ├── state_getting_job.cpython-310.pyc │ │ ├── state_getting_job.cpython-311.pyc │ │ ├── state_idle.cpython-310.pyc │ │ ├── state_idle.cpython-311.pyc │ │ ├── state_machine.cpython-310.pyc │ │ ├── state_machine.cpython-311.pyc │ │ ├── state_updating_job.cpython-310.pyc │ │ ├── state_updating_job.cpython-311.pyc │ │ ├── topic_base.cpython-310.pyc │ │ └── topic_base.cpython-311.pyc │ ├── config.py │ ├── effective_config.py │ ├── main.py │ ├── pki.py │ ├── pki_file.py │ ├── pki_hsm.py │ ├── pubsub.py │ ├── requirements.txt │ ├── scripts │ │ └── run.cmd │ ├── state.py │ ├── state_committing_certificate.py │ ├── state_creating_certificate.py │ ├── state_getting_job.py │ ├── state_idle.py │ ├── state_machine.py │ ├── state_updating_job.py │ └── topic_base.py └── aws.greengrass.labs.HomeAssistant └── 1.0.0 └── home-assistant ├── config │ ├── automations.yaml │ ├── configuration.yaml │ ├── groups.yaml │ ├── scenes.yaml │ └── scripts.yaml ├── docker-compose.yml ├── install.py └── secret.py 17 directories, 67 files
Perhatikan bahwa alts
direktori menautkan ke .jar
file Nucleus dipackages/artifacts-unarchived
. Misalnya:
user@machine:~$ sudo ls -l /greengrass/v2/alts/init total 8 lrwxrwxrwx 1 root root 97 Jun 27 08:12 distro -> /greengrass/v2/packages/artifacts-unarchived/aws.greengrass.Nucleus/2.12.6/aws.greengrass.nucleus -rw-r--r-- 1 root root 16 Jun 27 07:07 launch.params
Karena itu, packages/artifacts-unarchived
harus dimasukkan dalam gambar emas Anda.
resep
Berikut contoh daftar pohon packages/recipes
menunjukkan bagaimana resep disimpan. Seperti yang ditunjukkan oleh daftar, resep disimpan dengan intisari untuk membantu Greengrass menentukan apakah sudah memiliki file yang benar saat menerima penerapan. Format yang sangat spesifik ini membuat sulit untuk membuat gambar emas. Akibatnya, mengambil snapshot dari perangkat emas adalah metode yang disarankan untuk membuat gambar emas.
user@machine:~$ sudo tree /greengrass/v2/packages/recipes /greengrass/v2/packages/recipes ├── 0ya1warrMfzlq5PUTvOgfHOununru_xCLUFACECM_R0@2.3.7.metadata.json ├── 0ya1warrMfzlq5PUTvOgfHOununru_xCLUFACECM_R0@2.3.7.recipe.yaml ├── 89r1-ak7xPauDt4O7EG03sSXVUO8ysdHTk-YdF0NAAc@2.12.6.metadata.json ├── 89r1-ak7xPauDt4O7EG03sSXVUO8ysdHTk-YdF0NAAc@2.12.6.recipe.yaml ├── VAZ-Grqe5g43yO7UtasQOR5jcQGILgPeRZQhVikLd9o@1.0.0.metadata.json ├── VAZ-Grqe5g43yO7UtasQOR5jcQGILgPeRZQhVikLd9o@1.0.0.recipe.yaml ├── ViMYPYs99-AzSt1gL2L2YD5P7sIN-yEhy23wWJK_JN8@1.0.8.metadata.json ├── ViMYPYs99-AzSt1gL2L2YD5P7sIN-yEhy23wWJK_JN8@1.0.8.recipe.yaml ├── _1hT2A6X0ZYtB_CfI_ZUOEMDV96DfQVkSmZh2bbGYXg@1.0.19.metadata.json ├── _1hT2A6X0ZYtB_CfI_ZUOEMDV96DfQVkSmZh2bbGYXg@1.0.19.recipe.yaml ├── gQWwM7MSL2kOsBADU9bOQJ1QqO8ZI3hqpbKT5Bv4Ijk@1.1.0.metadata.json ├── gQWwM7MSL2kOsBADU9bOQJ1QqO8ZI3hqpbKT5Bv4Ijk@1.1.0.recipe.yaml ├── j_j5Seyy01FOcIh95nBFy4HYf8P1kT-jW_nmV18ldbk@2.1.8.metadata.json └── j_j5Seyy01FOcIh95nBFy4HYf8P1kT-jW_nmV18ldbk@2.1.8.recipe.yaml 0 directories, 14 files
Layanan sistem
Jika Greengrass diinstal sebagai layanan sistem, seperti biasanya untuk perangkat Linux tertanam, gambar emas juga harus menyertakan direktori yang berisi skrip startup. systemd
Gambar Docker
Jika perangkat Anda menggunakan AWS IoT Greengrass komponen yang menampilkan gambar Docker sebagai artefak, artefak ini berada di luar pohon direktori Greengrass. Oleh karena itu, Anda perlu menyertakan registri gambar Docker perangkat emas dalam gambar emas Anda. Registri ini biasanya disimpan di/var/lib/docker
.
Atau, Anda dapat menggunakan perintah Docker untuk membuat salinan gambar Docker yang disimpan di perangkat emas Anda, dan kemudian memuat gambar Docker tersebut ke setiap perangkat di lini manufaktur Anda. Secara umum, metode ini lebih lambat dan menjadi kurang skalabel karena jumlah gambar Docker meningkat.
Rahasia
Jika perangkat Anda menggunakan komponen pengelola rahasia untuk menyinkronkan rahasia AWS Secrets Manager, rahasia ini disimpan dalam config/config.tlog
file di pohon direktori Greengrass perangkat emas Anda. Misalnya:
{"TS":1718878001465, "TP":["services","aws.greengrass.SecretManager","runtime","secretResponse"], "W":"changed", "V":"{\"secrets\":[ { \"arn\":\"arn:aws:secretsmanager:us-east-1:111122223333:secret:greengrass-home-assistant-KIzJfZ\", \"name\":\"greengrass-home-assistant\", \"versionId\":\"8e481177-9250-4458-9f1f-3690d28e4ae9\", \"encryptedSecretString\":\"AgV4j+We ... A7QjdE1w==\", \"versionStages\":[\"AWSCURRENT\"], \"createdDate\":1660648425915 } ] } "}
Rahasia ini juga disimpan dalam config/effectiveConfig.yaml
file yang sesuai:
aws.greengrass.SecretManager: componentType: "PLUGIN" configuration: cloudSecrets: - arn: "arn:aws:secretsmanager:us-east-1:111122223333:secret:greengrass-home-assistant-KIzJfZ" dependencies: - "aws.greengrass.Nucleus:SOFT" lifecycle: {} runtime: secretResponse: "{\"secrets\":[{\"arn\":\"arn:aws:secretsmanager:us-east-1:111122223333:secret:greengrass-home-assistant-KIzJfZ\"\ ,\"name\":\"greengrass-home-assistant\",\"versionId\":\"8e481177-9250-4458-9f1f-3690d28e4ae9\"\ ,\"encryptedSecretString\":\"AgV4Rpc9 ... MYeVALYQ==\"\ ,\"versionStages\":[\"AWSCURRENT\"],\"createdDate\":1660648425915}]}" version: "2.1.8"
Bahkan jika Anda menyertakan config
direktori dalam gambar emas Anda, penting untuk diingat bahwa komponen pengelola rahasia Greengrass mengenkripsi rahasia dengan kunci pribadi perangkat emas. Karena setiap perangkat memiliki kunci pribadi yang unik, kunci yang dienkripsi oleh perangkat emas Anda tidak dapat didekripsi oleh perangkat produksi Anda.
Untuk alasan ini, kami menyarankan Anda menghapus rahasia terenkripsi dari gambar emas untuk mencegah perangkat produksi Anda mendekripsi rahasia perangkat emas secara tidak benar. Komponen aplikasi Anda harus berfungsi secara memadai, atau setidaknya gagal dengan baik, ketika rahasia tidak ada di disk, sebelum perangkat memiliki komunikasi pertamanya dengan cloud.
Ketika rahasia adalah persyaratan yang sulit
Jika organisasi Anda mengharuskan perangkat produksi Anda diisi dengan rahasia selama pembuatan, lini produksi Anda memerlukan skrip atau program yang mereplikasi perilaku komponen manajer rahasia, untuk mengisi rahasia di setiap perangkat produksi. Kami tidak merekomendasikan pendekatan ini karena kompleksitasnya dan kemungkinan bahwa rahasia Anda mungkin disimpan sebentar di cleartext di stasiun pemrograman produksi Anda.