Modüllerin bir cihazın yerel depolama alanına erişmesine izin ver
Şunlar için geçerlidir: IoT Edge 1.4
IoT Edge modüller, özellikle çevrimdışı çalışırken daha yüksek güvenilirlik için konak IoT Edge cihazın kendisinde depolamayı kullanabilir.
Sistem modüllerini kalıcı depolama kullanacak şekilde yapılandırma
Varsayılan olarak, sistem modüllerini IoT Edge aracısı ve IoT Edge hub'ı IoT Edge durumu kapsayıcı örneğinin 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ürildiğ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 geliştirir.
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 makinedeki yerel bir dizini modüldeki bir dizine bağlamak için bağlamalar ekleyin. Örnek:
Veya yerel depolamayı doğrudan dağıtım bildiriminde yapılandırabilirsiniz. Örnek:
"systemModules": {
"edgeAgent": {
"settings": {
"image": "mcr.microsoft.com/azureiotedge-agent:1.4",
"createOptions": {
"HostConfig": {
"Binds":["<HostStoragePath>:<ModuleStoragePath>"]
}
}
},
"type": "docker",
"env": {
"storageFolder": {
"value": "<ModuleStoragePath>"
}
}
},
"edgeHub": {
"settings": {
"image": "mcr.microsoft.com/azureiotedge-hub:1.4",
"createOptions": {
"HostConfig": {
"Binds":["<HostStoragePath>:<ModuleStoragePath>"],
"PortBindings":{"5671/tcp":[{"HostPort":"5671"}],"8883/tcp":[{"HostPort":"8883"}],"443/tcp":[{"HostPort":"443"}]}}}
},
"type": "docker",
"env": {
"storageFolder": {
"value": "<ModuleStoragePath>"
}
},
"status": "running",
"restartPolicy": "always"
}
}
ve <ModuleStoragePath>
değerlerini ana bilgisayar ve modül depolama yolunuzla değiştirin<HostStoragePath>
; her iki değer de mutlak bir yol olmalıdır ve <HostStoragePath>
olmalıdır.
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 depolama alanının sahipliği gerekir.
Özel modüller için modül depolama alanını cihaz depolama alanına 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. Örnek:
{
"HostConfig": {
"Mounts": [
{
"Target": "<ModuleStoragePath>",
"Source": "<HostStoragePath>",
"Type": "bind",
"ReadOnly": false
}
]
}
}
ve <ModuleStoragePath>
değerlerini ana bilgisayar 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 sistem 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, gerekli izinlere sahip kullanıcı olarak root
çalışır. Ancak modülünüzün Dockerfile dosyası 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 çeşitli yolları vardır; örneğin, dizin sahibini değiştirmek ve sonra chmod
izinleri değiştirmek için kullanmachown
. Ö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'un 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 nesil 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 arasında modüller arasında dosya paylaşmak istiyorsanız, bunların gizli dizi içermemesi gerekir, aksi takdirde şifreleri çözülemez.
Sonraki adımlar
Bir modülden konak depolamaya erişmeye ilişkin ek bir örnek için bkz. IoT Edge'de Azure Blob Depolama ile verileri uçta depolama.