Modüllerin bir cihazın yerel depolama alanına erişmesine izin ver

Şunlar için geçerlidir:IoT Edge 1.4 checkmark IoT Edge 1.4

Önemli

IoT Edge 1.4 desteklenen sürümdür. Ö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:

  1. Hem IoT Edge hub'ı hem de IoT Edge aracısı için modüldeki bir dizine işaret eden Depolama Folder adlı bir ortam değişkeni ekleyin.

  2. 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:

    Screenshot that shows how to add create options and environment variables for local storage.

    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.4",
            "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.4",
            "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 StorageFoldergerek 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.

Ö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.