Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Prosedur gambar emas
Bagian berikut menjelaskan prosedur untuk membuat gambar emas dan menulis gambar itu ke setiap perangkat di jalur produksi.
Buat perangkat emas Anda
Langkah 1: Instal dan sediakan Greengrass.
Instal runtime Greengrass edge di perangkat emas Anda seperti biasanya, dan sediakan dengan menggunakan metode penyediaan pilihan Anda.
Langkah 2: Menyebarkan komponen Anda.
Dari cloud, terapkan komponen dan konfigurasi aplikasi Anda ke perangkat emas Anda, seperti biasanya.
Baca gambar emas dari perangkat emas Anda
Anda sekarang dapat memotret perangkat emas Anda untuk membuat gambar emas.
Langkah 1: Matikan Greengrass.
Matikan layanan Greengrass di perangkat emas Anda. Misalnya:
sudo systemctl stop greengrass.service
Langkah 2: Cuplikan pohon file Greengrass.
Bergantung pada metode emas pilihan Anda, ambil snapshot penuh atau sebagian dari pohon file Greengrass, dan sertakan dalam gambar emas Anda.
Langkah 3: Salin gambar Docker Anda.
Jika komponen Anda menggunakan gambar Docker sebagai artefak, ambil snapshot dari registri gambar Docker dan sertakan dalam gambar emas Anda.
Atau, Anda dapat menggunakan docker save
untuk membuat arsip dari setiap gambar Docker, dan menyalinnya dari perangkat emas. Misalnya:
user@machine:~/environment $ docker images REPOSITORY TAG IMAGE ID CREATED SIZE homeassistant/home-assistant 2024.6 2b4c9de733f1 9 days ago 1.6GB user@machine:~/environment $ docker save homeassistant/home-assistant | gzip > home-assistant.tar.gz
Secara umum, pendekatan ini lebih lambat daripada menambahkan registri gambar Docker ke gambar emas Anda.
Tulis gambar emas ke perangkat produksi Anda
Anda sekarang perlu menulis gambar emas ke setiap perangkat produksi Anda yang datang melalui jalur manufaktur Anda. Langkah-langkah berikut biasanya akan otomatis dengan menggunakan scripting.
Langkah 1: Tulis gambar.
Tulis gambar emas Anda ke perangkat produksi. Pastikan bahwa itu termasuk snapshot lengkap atau sebagian dari pohon direktori Greengrass dan registri gambar Docker, sebagaimana berlaku.
Langkah 2: Muat gambar Docker.
Jika Anda memilih untuk menggunakan docker save
untuk menyalin artefak gambar Docker dari perangkat emas Anda, gunakan docker load
untuk memuat gambar ini ke perangkat produksi Anda. Misalnya:
user@machine:~/environment $ docker load < home-assistant.tar.gz user@machine:~/environment $ docker images REPOSITORY TAG IMAGE ID CREATED SIZE homeassistant/home-assistant 2024.6 2b4c9de733f1 9 days ago 1.6GB
Secara umum, pendekatan ini lebih lambat daripada menambahkan registri gambar Docker ke gambar emas Anda.
Langkah 3: Tambahkan kredensil.
Jika perangkat Anda tidak menggunakan penyediaan armada, instal sertifikat X.509 unik dan kunci pribadi untuk perangkat produksi, menggantikan kredensi perangkat emas. Metode yang tepat untuk mencapai ini tergantung pada apakah Anda menggunakan modul keamanan perangkat keras (HSM) dan infrastruktur kunci publik khusus Anda (PKI).
Konfigurasikan perangkat produksi Anda
Setelah Anda menulis gambar emas, Anda harus mengkonfigurasi setiap perangkat produksi. Konfigurasi ini tergantung pada apakah Anda menggunakan metode snapshot Greengrass penuh atau sebagian. Langkah-langkahnya harus otomatis.
Metode snapshot Greengrass Penuh
penting
Ikuti langkah-langkah ini hanya jika Anda menggunakan metode snapshot Greengrass lengkap.
Langkah 1: Edit konfigurasi.
Edit file config/effectiveConfig.yaml
Misalnya:
sudo nano /greengrass/v2/config/effectiveConfig.yaml
Langkah 2: Tetapkan nama benda.
Tindakan yang diperlukan untuk menyetel nama perangkat produksi baru bergantung pada apakah Anda menggunakan penyediaan armada. Buat modifikasi yang benar untuk kasus penggunaan Anda.
Jika Anda tidak menggunakan penyediaan armada, Anda dapat mengatur nama benda perangkat produksi Anda dengan mengedit thingName
properti untuk mengganti nama benda perangkat emas dengan nama benda perangkat produksi. Misalnya:
system: certificateFilePath: "/greengrass/v2/thingCert.crt" privateKeyPath: "/greengrass/v2/privKey.key" rootCaPath: "/greengrass/v2/rootCA.pem" rootpath: "/greengrass/v2" thingName: "ProductionDeviceThingName1"
Jika Anda menggunakan penyediaan armada, Anda harus terlebih dahulu menghapus bagian dari konfigurasi perangkat emas untuk memastikan bahwa plugin penyediaan armadathingName
properti dengan string kosong. Misalnya:
system: certificateFilePath: "/greengrass/v2/thingCert.crt" privateKeyPath: "/greengrass/v2/privKey.key" rootCaPath: "/greengrass/v2/rootCA.pem" rootpath: "/greengrass/v2" thingName: ""
Selain itu, Anda harus menambahkan konfigurasi plugin penyediaan armada ke services
properti, dan meneruskan nama perangkat produksi sebagai properti di dalam properti. templateParameters
Contoh berikut mengasumsikan bahwa template penyediaan armada memiliki parameter bernamaThingName
, dan oleh karena itu ada ThingName
properti dalam konfigurasi templateParameters
plugin:
system: certificateFilePath: "/greengrass/v2/thingCert.crt" privateKeyPath: "/greengrass/v2/privKey.key" rootCaPath: "/greengrass/v2/rootCA.pem" rootpath: "/greengrass/v2" thingName: "" services: aws.greengrass.FleetProvisioningByClaim: configuration: rootPath: "/greengrass/v2" awsRegion: "us-east-1" iotDataEndpoint: "<prefix>-ats.iot.us-east-1.amazonaws.com" iotCredentialEndpoint: "<prefix>.credentials.iot.us-east-1.amazonaws.com" iotRoleAlias: "GreengrassCoreTokenExchangeRoleAlias" provisioningTemplate: "GreengrassFleetProvisioningTemplate" claimCertificatePath: "/greengrass/v2/claim-certs/claim.pem.crt" claimCertificatePrivateKeyPath: "/greengrass/v2/claim-certs/claim.private.pem.key" rootCaPath: "/greengrass/v2/rootCA.pem" templateParameters: ThingName: "ProductionDeviceThingName1"
Kasus penggunaan Anda mungkin memerlukan beberapa parameter konfigurasi plugin penyediaan armada yang berbeda dari yang ditampilkan di sini. Untuk informasi selengkapnya, lihat Mengkonfigurasi plugin penyediaan AWS IoT armada di dokumentasi. AWS IoT Greengrass
Langkah 3: Perbarui nama benda yang diinterpolasi.
Jika Anda memiliki komponen yang menggunakan variabel iot:thingName
resep untuk menginterpolasi nama benda, Anda mungkin akan memiliki pernyataan kontrol akses di mana nama benda perangkat emas telah diinterpolasi. Misalnya, dalam kasus komponen komunitas Certificate Rotator
services: aws.greengrass.labs.CertificateRotator: componentType: "GENERIC" configuration: accessControl: aws.greengrass.ipc.mqttproxy: aws.greengrass.labs.CertificateRotator:mqttproxy:1: operations: - "aws.greengrass#PublishToIoTCore" policyDescription: "Allows access to publish to relevant topics" resources: - "$aws/things/GoldenDeviceThingName/jobs/+/get" - "$aws/things/GoldenDeviceThingName/jobs/+/update" - "awslabs/things/GoldenDeviceThingName/certificate/create" - "awslabs/things/GoldenDeviceThingName/certificate/commit" aws.greengrass.labs.CertificateRotator:mqttproxy:2: operations: - "aws.greengrass#SubscribeToIoTCore" policyDescription: "Allows access to subscribe to relevant topics" resources: - "$aws/things/GoldenDeviceThingName/jobs/notify-next" - "$aws/things/GoldenDeviceThingName/jobs/+/get/accepted" - "$aws/things/GoldenDeviceThingName/jobs/+/get/rejected" - "$aws/things/GoldenDeviceThingName/jobs/+/update/accepted" - "$aws/things/GoldenDeviceThingName/jobs/+/update/rejected" - "awslabs/things/GoldenDeviceThingName/certificate/create/accepted" - "awslabs/things/GoldenDeviceThingName/certificate/create/rejected" - "awslabs/things/GoldenDeviceThingName/certificate/commit/accepted" - "awslabs/things/GoldenDeviceThingName/certificate/commit/rejected" keyAlgorithm: "RSA-2048" signingAlgorithm: "SHA256WITHRSA"
Dalam semua kasus seperti itu, Anda harus mengganti semua contoh nama benda perangkat emas dengan nama perangkat produksi Anda.
Langkah 4: Hapus rahasia perangkat emas.
effectiveConfig.yaml
Periksa rahasia terenkripsi yang disimpan oleh perangkat emas Anda. Ini akan disimpan dalam konfigurasi komponen manajer rahasia. Misalnya:
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"
Anda harus menghapus rahasia ini untuk memastikan bahwa perangkat produksi Anda tidak akan mencoba mendekripsi rahasia yang dienkripsi oleh perangkat emas. Hapus secretResponse
properti. Misalnya:
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: version: "2.1.8"
Langkah 5: Terapkan konfigurasi yang diubah.
Terapkan konfigurasi yang diubah, untuk memperbaruiconfig/config.tlog
. Misalnya:
sudo java -Droot="/greengrass/v2" \ -jar /greengrass/v2/alts/current/distro/lib/Greengrass.jar \ --start false \ --init-config /greengrass/v2/config/effectiveConfig.yaml
Metode snapshot Greengrass Sebagian
Konfigurasi perangkat produksi Anda sepele jika Anda menggunakan metode snapshot Greengrass sebagian. Prosedurnya identik dengan prosedur konfigurasi sebagian bootstrap normal saat Anda menginstal Greengrass, kecuali bahwa konfigurasi awal diteruskan ke runtime Greengrass yang sudah diinstal.
penting
Ikuti langkah-langkah ini hanya jika Anda menggunakan metode snapshot Greengrass sebagian.
Langkah 1: Buat konfigurasi.
Konfigurasi sebagian yang diperlukan tergantung pada apakah Anda menggunakan penyediaan armada. Pastikan untuk membuat modifikasi yang benar untuk kasus penggunaan Anda.
Jika Anda tidak menggunakan penyediaan armada, Anda dapat membuat file konfigurasi sebagian yang tidak menyertakan konfigurasi apa pun untuk plugin penyediaan armada. Setel thingName
properti ke nama benda perangkat produksi Anda. Misalnya:
system: certificateFilePath: "/greengrass/v2/device.pem.crt" privateKeyPath: "/greengrass/v2/private.pem.key" rootCaPath: "/greengrass/v2/AmazonRootCA1.pem" rootpath: "/greengrass/v2" thingName: "ProductionDeviceThingName1" services: aws.greengrass.Nucleus: componentType: "NUCLEUS" version: "2.12.6" configuration: awsRegion: "us-east-1" iotRoleAlias: "GreengrassCoreTokenExchangeRoleAlias" iotDataEndpoint: "<prefix>-ats.iot.us-east-1.amazonaws.com" iotCredEndpoint: "<prefix>.credentials.iot.us-east-1.amazonaws.com"
Jika Anda menggunakan penyediaan armada, konfigurasi sebagian harus menyertakan konfigurasi untuk plugin penyediaan armadatemplateParameters
properti. Contoh berikut mengasumsikan bahwa template penyediaan armada memiliki parameter bernamaThingName
, dan oleh karena itu ada ThingName
properti dalam konfigurasi templateParameters
plugin:
services: aws.greengrass.Nucleus: version: "2.12.6" aws.greengrass.FleetProvisioningByClaim: configuration: rootPath: "/greengrass/v2" awsRegion: "us-east-1" iotDataEndpoint: "<prefix>-ats.iot.us-east-1.amazonaws.com" iotCredentialEndpoint: "<prefix>.credentials.iot.us-east-1.amazonaws.com" iotRoleAlias: "GreengrassCoreTokenExchangeRoleAlias" provisioningTemplate: "GreengrassFleetProvisioningTemplate" claimCertificatePath: "/greengrass/v2/claim-certs/claim.pem.crt" claimCertificatePrivateKeyPath: "/greengrass/v2/claim-certs/claim.private.pem.key" rootCaPath: "/greengrass/v2/AmazonRootCA1.pem" templateParameters: ThingName: "ProductionDeviceThingName1"
Kasus penggunaan Anda mungkin memerlukan parameter konfigurasi plugin penyediaan armada yang berbeda dari yang ditampilkan di sini. Untuk informasi selengkapnya, lihat Mengkonfigurasi plugin penyediaan AWS IoT armada di dokumentasi. AWS IoT Greengrass
Langkah 2: Terapkan konfigurasi.
Terapkan konfigurasi untuk membuatconfig/config.tlog
. Misalnya:
sudo java -Droot="/greengrass/v2" \ -jar /greengrass/v2/alts/current/distro/lib/Greengrass.jar \ --start false \ --init-config config.yaml