Azure IoT Edge modüllerine bir cihazın yerel depolama alanına erişim verme
Şunlar için geçerlidir: IoT Edge 1.5 IoT Edge 1.4
Önemli
IoT Edge 1.5 LTS ve IoT Edge 1.4 LTS desteklenen sürümlerdir. IoT Edge 1.4 LTS, 12 Kasım 2024'te kullanım ömrü sona erer. Önceki bir sürümdeyseniz bkz. IoT Edge’i güncelleştirme.
IoT Edge modülleri, özellikle çevrimdışı çalışırken daha yüksek güvenilirlik için konak IoT Edge cihazında depolamayı kullanabilir.
Sistem modüllerini kalıcı depolama kullanacak şekilde yapılandırma
Varsayılan olarak IoT Edge sistem modülleri, IoT Edge aracısı ve IoT Edge hub'ı durumlarını kapsayıcı örneklerinin kısa ömürlü dosya sisteminde depolar. Bu durum, örneğin modül görüntüsü sürümü veya createOptions güncelleştirildiğinde kapsayıcı örneği geri dönüştürüldiğinde kaybolur.
Üretim senaryolarında, sistem modülü durumunu depolamak için konak dosya sisteminde kalıcı bir depolama konumu kullanın. Bunun yapılması, çözümün sağlamlığını ve bulut ileti teslim garantilerini artırır.
Sistem modüllerini kalıcı depolama kullanacak şekilde ayarlamak için:
Hem IoT Edge hub'ı hem de IoT Edge aracısı için modüldeki bir dizine işaret eden StorageFolder adlı bir ortam değişkeni ekleyin.
Hem IoT Edge hub'ı hem de IoT Edge aracısı için, konak makinesindeki yerel dizini modüldeki bir dizine bağlamak için bağlamalar ekleyin. Örneğin:
ve
<ModuleStoragePath>
değerini ana bilgisayar ve modül depolama yolunuzla değiştirin<HostStoragePath>
. Her iki değer de mutlak bir yol olmalı ve<HostStoragePath>
mevcut olmalıdır.
Yerel depolamayı doğrudan dağıtım bildiriminde yapılandırabilirsiniz. Örneğin, aşağıdaki depolama yollarını eşlemek istiyorsanız:
Modül | Konak depolama yolu | Modül depolama yolu |
---|---|---|
edgeAgent | /srv/edgeAgent | /tmp/edgeAgent |
edgeHub | /srv/edgeHub | /tmp/edgeHub |
Dağıtım bildiriminiz aşağıdakine benzer olacaktır:
"systemModules": {
"edgeAgent": {
"env": {
"StorageFolder": {
"value": "/tmp/edgeAgent"
}
},
"settings": {
"image": "mcr.microsoft.com/azureiotedge-agent:1.5",
"createOptions": "{\"HostConfig\":{\"Binds\":[\"/srv/edgeAgent:/tmp/edgeAgent\"]}}"
},
"type": "docker"
},
"edgeHub": {
"env": {
"StorageFolder": {
"value": "/tmp/edgeHub"
}
},
"restartPolicy": "always",
"settings": {
"image": "mcr.microsoft.com/azureiotedge-hub:1.5",
"createOptions": "{\"HostConfig\":{\"Binds\":[\"/srv/edgeHub:/tmp/edgeHub\"],\"PortBindings\":{\"443/tcp\":[{\"HostPort\":\"443\"}],\"5671/tcp\":[{\"HostPort\":\"5671\"}],\"8883/tcp\":[{\"HostPort\":\"8883\"}]}}}"
},
"status": "running",
"type": "docker"
}
}
Not
Tutturma yüklemesi kullanıyorsanız, tutturmalar için erişilebilir bir konak depolama yolu seçtiğinizden emin olun. Örneğin, $HOME/snap/azure-iot-edge/current/modules/
.
Otomatik konak sistemi izin yönetimi
Sürüm 1.4 ve daha yeni sürümlerde, sahiplik veya konak depolama için izinleri el ile ayarlamaya StorageFolder
gerek yoktur. İzinler ve sahiplik, başlatma sırasında sistem modülleri tarafından otomatik olarak yönetilir.
Not
Konak bağlı depolamanın otomatik izin yönetimi yalnızca sistem modülleri, IoT Edge aracısı ve Edge hub'ı için geçerlidir. Özel modüller için, özel modül kapsayıcısı kullanıcı olarak root
çalışmıyorsa, izinlerin el ile yönetilmesi ve bağlı konak depolamanın sahipliği gerekir.
Modül depolamayı özel modüller için cihaz depolamaya bağlama
Özel modülünüz konak dosya sistemindeki kalıcı depolamaya erişim gerektiriyorsa, modül kapsayıcısında bir depolama klasörünü konak makinedeki bir klasöre bağlamak için modülün oluşturma seçeneklerini kullanın. Örneğin:
{
"HostConfig": {
"Mounts": [
{
"Target": "<ModuleStoragePath>",
"Source": "<HostStoragePath>",
"Type": "bind",
"ReadOnly": false
}
]
}
}
ve <ModuleStoragePath>
değerini konak ve modül depolama yolunuzla değiştirin<HostStoragePath>
; her iki değer de mutlak bir yol olmalıdır. Seçenek ayrıntıları için Docker Altyapısı Bağlama belirtimine bakın.
Konak sistemi izinleri
Modülünüzün kullandığı kullanıcı profilinin konak sistem dizininde gerekli okuma, yazma ve yürütme izinlerine sahip olduğundan emin olun. Varsayılan olarak, kapsayıcılar zaten gerekli izinlere sahip kullanıcı olarak root
çalışır. Ancak modülünüzdeki Dockerfile, kök olmayan bir kullanıcının kullanımını belirtebilir ve bu durumda konak depolama izinlerinin el ile yapılandırılması gerekir.
Linux sistemlerinde dizin izinlerini yönetmenin, dizin sahibini değiştirmek ve ardından chmod
izinleri değiştirmek de dahil olmak üzere chown
çeşitli yolları vardır. Örneğin, kök olmayan kullanıcı kimliği 1000 olarak çalışan bir modüle konak depolama erişimine izin vermek için aşağıdaki komutları kullanın:
sudo chown 1000 <HostStoragePath>
sudo chmod 700 <HostStoragePath>
Modül depolamada şifrelenmiş veriler
Modüller verileri şifrelemek için IoT Edge daemon iş yükü API'sini çağırdığında, şifreleme anahtarı modül kimliği ve modülün oluşturma kimliği kullanılarak türetilir. Bir modül dağıtımdan kaldırılırsa ve ardından aynı modül kimliğine sahip başka bir modül daha sonra aynı cihaza dağıtılırsa gizli dizileri korumak için bir oluşturma kimliği kullanılır. Az iot hub module-identity show Azure CLI komutunu kullanarak modülün oluşturma kimliğini görüntüleyebilirsiniz.
Nesiller boyunca modüller arasında dosya paylaşmak istiyorsanız, bunların gizli dizi içermemesi gerekir, aksi takdirde şifreleri çözülemez.
Sonraki adımlar
Modülden konak depolamaya erişmeye yönelik ek bir örnek için bkz. IoT Edge'de Azure Blob Depolama ile verileri uçta depolama.