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

Şunlar için geçerlidir:yes icon IoT Edge 1.1 yes icon IoT Edge 1.2

Azure depolama hizmetlerini kullanarak veya cihazınızın kapsayıcı depolama alanında veri depolamaya ek olarak, özellikle çevrimdışı çalışırken daha yüksek güvenilirlik için konak IoT Edge cihazın kendisine de depolama ayırabilirsiniz.

Modül depolamasından konak sistemindeki depolamaya bağlantıyı etkinleştirmek için, modülünüz için kapsayıcıdaki bir depolama klasörüne işaret eden bir ortam değişkeni oluşturun. Ardından, bu depolama klasörünü konak makinedeki bir klasöre bağlamak için oluşturma seçeneklerini kullanın.

Örneğin, IoT Edge hub'ını iletileri cihazınızın yerel depolama alanında depolamak ve daha sonra almak için etkinleştirmek istiyorsanız, ortam değişkenlerini ve oluşturma seçeneklerini Çalışma Zamanı Ayarlar bölümündeki Azure portal yapılandırabilirsiniz.

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

  2. Hem IoT Edge hub'ı hem de IoT Edge aracısı için, konak makinedeki yerel dizini modüldeki bir dizine bağlamak için bağlamalar ekleyin. Örneğin:

    Add create options and environment variables for local storage

Ya da yerel depolamayı doğrudan dağıtım bildiriminde yapılandırabilirsiniz. Örneğin:

"systemModules": {
    "edgeAgent": {
        "settings": {
            "image": "mcr.microsoft.com/azureiotedge-agent:1.1",
            "createOptions": {
                "HostConfig": {
                    "Binds":["<HostStoragePath>:<ModuleStoragePath>"]
                }
            }
        },
        "type": "docker",
        "env": {
            "storageFolder": {
                "value": "<ModuleStoragePath>"
            }
        }
    },
    "edgeHub": {
        "settings": {
            "image": "mcr.microsoft.com/azureiotedge-hub:1.1",
            "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ğerini konak ve modül depolama yolunuzla değiştirin<HostStoragePath>; her iki değer de mutlak bir yol olmalıdır.

Örneğin, Linux sisteminde, "Binds":["/etc/iotedge/storage/:/iotedge/storage/"] konak sisteminizdeki /etc/iotedge/storage dizininin kapsayıcıdaki /iotedge/storage/ dizinine eşlendiği anlamına gelir. Bir Windows sisteminde, başka bir örnek olarak, "Binds":["C:\\temp:C:\\contemp"] konak sisteminizdeki C:\temp dizininin kapsayıcıdaki C:\contemp dizinine eşlendiği anlamına gelir.

Docker belgelerinden oluşturma seçenekleri hakkında daha fazla ayrıntı bulabilirsiniz.

Konak sistemi izinleri

Linux cihazlarında, modülünüz için kullanıcı profilinin konak sistem dizininde gerekli okuma, yazma ve yürütme izinlerine sahip olduğundan emin olun. IoT Edge hub'ının iletileri cihazınızın yerel depolama alanında depolamasını etkinleştirmenin önceki örneğine geri dönerek kullanıcı profili olan UID 1000'e izinler vermeniz gerekir. Linux sistemlerinde dizin izinlerini yönetmenin çeşitli yolları vardır; örneğin, chown dizin sahibini değiştirmek ve ardından chmod izinleri değiştirmek için kullanma:

sudo chown 1000 <HostStoragePath>
sudo chmod 700 <HostStoragePath>

Windows cihazlarda, konak sistem dizininde izinleri de yapılandırmanız gerekir. İzinleri ayarlamak için PowerShell'i kullanabilirsiniz:

$acl = get-acl <HostStoragePath>
$ace = new-object system.security.AccessControl.FileSystemAccessRule('Authenticated Users','FullControl','Allow')
$acl.AddAccessRule($ace)
$acl | Set-Acl

Modül depolamadaki ş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 yönelik ek bir örnek için bkz. IoT Edge üzerinde Azure Blob Depolama ile verileri uçta depolama.