Udělení přístupu modulů Azure IoT Edge k místnímu úložišti zařízení
Platí pro: IoT Edge 1.5 IoT Edge 1.4
Důležité
Podporované verze ioT Edge 1.5 LTS a IoT Edge 1.4 LTS. IoT Edge 1.4 LTS je konec životnosti 12. listopadu 2024. Pokud používáte starší verzi, podívejte se na článek Aktualizace IoT Edge.
Moduly IoT Edge můžou používat úložiště na samotném hostitelském zařízení IoT Edge, aby se zlepšila spolehlivost, zejména pokud pracujete offline.
Konfigurace systémových modulů pro použití trvalého úložiště
Ve výchozím nastavení systémové moduly IoT Edge, agent IoT Edge a centrum IoT Edge ukládají stav v dočasném systému souborů instance kontejneru. Tento stav se ztratí při recyklaci instance kontejneru, například při aktualizaci verze image modulu nebo createOptions.
V produkčních scénářích použijte trvalé umístění úložiště v systému souborů hostitele k uložení stavu systémového modulu. Tím se zlepší odolnost řešení a záruky doručování cloudových zpráv.
Nastavení systémových modulů pro použití trvalého úložiště:
Pro centrum IoT Edge i agenta IoT Edge přidejte proměnnou prostředí s názvem StorageFolder , která odkazuje na adresář v modulu.
Pro centrum IoT Edge i agenta IoT Edge přidejte vazby pro připojení místního adresáře na hostitelském počítači k adresáři v modulu. Příklad:
Nahraďte
<HostStoragePath>
a<ModuleStoragePath>
nahraďte cestu úložiště hostitele a modulu. Obě hodnoty musí být absolutní cestou a<HostStoragePath>
musí existovat.
Místní úložiště můžete nakonfigurovat přímo v manifestu nasazení. Pokud například chcete namapovat následující cesty k úložišti:
Modul | Cesta k úložišti hostitele | Cesta k úložišti modulu |
---|---|---|
edgeAgent | /srv/edgeAgent | /tmp/edgeAgent |
edgeHub | /srv/edgeHub | /tmp/edgeHub |
Manifest nasazení by byl podobný následujícímu:
"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"
}
}
Poznámka:
Pokud používáte instalaci přichycení, ujistěte se, že jste zvolili cestu k úložišti hostitele, která je přístupná pro přichycení. Například $HOME/snap/azure-iot-edge/current/modules/
.
Automatická správa oprávnění hostitelského systému
Ve verzi 1.4 a novější není nutné ručně nastavovat vlastnictví ani oprávnění pro zálohování StorageFolder
úložiště hostitele . Oprávnění a vlastnictví jsou automaticky spravována systémovými moduly během spouštění.
Poznámka:
Automatická správa oprávnění úložiště vázaného na hostitele se vztahuje jenom na systémové moduly, agenta IoT Edge a centrum Edge. Pro vlastní moduly se vyžaduje ruční správa oprávnění a vlastnictví vázaného hostitelského úložiště, pokud kontejner vlastního modulu není spuštěný jako root
uživatel.
Propojení úložiště modulů s úložištěm zařízení pro vlastní moduly
Pokud váš vlastní modul vyžaduje přístup k trvalému úložišti v systému souborů hostitele, použijte možnosti vytvoření modulu k vytvoření složky úložiště v kontejneru modulu ke složce na hostitelském počítači. Příklad:
{
"HostConfig": {
"Mounts": [
{
"Target": "<ModuleStoragePath>",
"Source": "<HostStoragePath>",
"Type": "bind",
"ReadOnly": false
}
]
}
}
Nahraďte <HostStoragePath>
cestu úložiště hostitele a modulu a <ModuleStoragePath>
nahraďte ji. Obě hodnoty musí být absolutní cestou. Podrobnosti o možnostech najdete ve specifikaci připojení modulu Dockeru.
Oprávnění hostitelského systému
Ujistěte se, že profil uživatele, který modul používá, má požadovaná oprávnění ke čtení, zápisu a provádění oprávnění k adresáři hostitelského systému. Kontejnery se ve výchozím nastavení spouští jako root
uživatel, který už má požadovaná oprávnění. Soubor Dockerfile vašeho modulu ale může určovat použití uživatele, který není root, v takovém případě musí být oprávnění úložiště hostitele nakonfigurovaná ručně.
Existuje několik způsobů, jak spravovat oprávnění adresáře v systémech Linux, včetně použití chown
ke změně vlastníka adresáře a následné chmod
změny oprávnění. Pokud chcete například povolit přístup k hostitelskému úložišti k modulu, který běží jako ne root USER ID 1000, použijte následující příkazy:
sudo chown 1000 <HostStoragePath>
sudo chmod 700 <HostStoragePath>
Šifrovaná data v úložišti modulů
Když moduly volají rozhraní API pro úlohy démona IoT Edge k šifrování dat, šifrovací klíč se odvozuje pomocí ID modulu a ID generování modulu. ID generování slouží k ochraně tajných kódů v případě, že se modul odebere z nasazení, a pak se do stejného zařízení později nasadí jiný modul se stejným ID modulu. ID generování modulu můžete zobrazit pomocí příkazu Azure CLI az iot hub module-identity show.
Pokud chcete sdílet soubory mezi moduly napříč generacemi, nesmí obsahovat žádné tajné kódy nebo se jim nepodaří dešifrovat.
Další kroky
Další příklad přístupu k hostitelskému úložišti z modulu najdete v tématu Ukládání dat na hraničních zařízeních pomocí služby Azure Blob Storage ve službě IoT Edge.