Adatok tárolása a peremhálózaton az Azure Blob Storage az IoT Edge-ben segítségével
A következőkre vonatkozik: IoT Edge 1.5
Fontos
Az IoT Edge 1.5 LTS a támogatott kiadás. Az IoT Edge 1.4 LTS 2024. november 12-én megszűnik. Ha egy korábbi kiadáson dolgozik, olvassa el az IoT Edge frissítése című témakört.
Az IoT Edge-en futó Azure Blob Storage blokkblobot és hozzáfűző blobtároló megoldást biztosít a peremhálózaton. Az IoT Edge-eszközön található blobtároló modul úgy viselkedik, mint egy Azure Blob-szolgáltatás, kivéve, hogy a blobok helyileg vannak tárolva az IoT Edge-eszközön. A blobokat ugyanazokkal az Azure Storage SDK-metódusokkal vagy blob API-hívásokkal érheti el, amelyeket már használt. Ez a cikk az IoT Edge-tárolón futó Azure Blob Storage-ra vonatkozó fogalmakat ismerteti, amelyek egy blobszolgáltatást futtatnak az IoT Edge-eszközön.
Ez a modul a következő helyzetekben hasznos:
- Ahol az adatokat helyileg kell tárolni, amíg fel nem dolgozhatók vagy át nem helyezhetők a felhőbe. Ezek az adatok lehetnek videók, képek, pénzügyi adatok, kórházi adatok vagy bármilyen más strukturálatlan adat.
- Ha az eszközök korlátozott kapcsolattal rendelkező helyen találhatók.
- Ha helyileg szeretné hatékonyan feldolgozni az adatokat, hogy alacsony késéssel férhessen hozzá az adatokhoz, hogy a lehető leggyorsabban reagáljon a vészhelyzetekre.
- Ha csökkenteni szeretné a sávszélesség költségeit, és nem szeretne terabájtnyi adatot továbbítani a felhőbe. Az adatokat helyileg is feldolgozhatja, és csak a feldolgozott adatokat küldheti el a felhőbe.
Ez a modul a deviceToCloudUpload és a deviceAutoDelete funkcióit tartalmazza.
A deviceToCloudUpload funkció egy konfigurálható funkció. Ez a függvény automatikusan feltölti az adatokat a helyi blobtárolóból az Azure-ba időszakos internetkapcsolat támogatásával. Lehetővé teszi, hogy:
- Kapcsolja be/ki a deviceToCloudUpload funkciót.
- Adja meg, hogy az adatok milyen sorrendben legyenek átmásolva az Azure-ba, például a NewestFirst vagy az OldestFirst.
- Adja meg azt az Azure Storage-fiókot, ahová az adatokat fel szeretné tölteni.
- Adja meg az Azure-ba feltölteni kívánt tárolókat. Ez a modul lehetővé teszi a forrás- és céltárolók nevének megadását is.
- Válassza ki a blobok azonnali törlésének lehetőségét, miután a felhőbeli tárolóba való feltöltés befejeződött
- Végezze el a teljes blobfeltöltést (a művelet használatával
Put Blob
) és a blokkszintű feltöltést (a használatávalPut Block
ésPut Block List
Append Block
a műveletekkel).
Ez a modul blokkszintű feltöltést használ, ha a blob blokkokból áll. Íme néhány gyakori forgatókönyv:
- Az alkalmazás frissíti a korábban feltöltött blokkblob egyes blokkjait, vagy új blokkokat fűz hozzá egy hozzáfűző blobhoz. Ez a modul csak a frissített blokkokat tölti fel, a teljes blobot nem.
- A modul feltölti a blobot, és az internetkapcsolat megszűnik, amikor a kapcsolat ismét visszaáll, csak a fennmaradó blokkokat tölti fel, nem pedig az egész blobot.
Ha egy blobfeltöltés során váratlan folyamatkimaradás (például áramkimaradás) következik be, a feltöltéshez szükséges összes blokk újra fel lesz töltve, amint a modul újra online állapotba kerül.
A deviceAutoDelete egy konfigurálható funkció. Ez a függvény automatikusan törli a blobokat a helyi tárolóból, amikor a megadott időtartam (percekben mérve) lejár. Lehetővé teszi, hogy:
- Kapcsolja be/ki az eszközAutoDelete funkciót.
- Adja meg azt az időt percben (deleteAfterMinutes), amely után a blobok automatikusan törlődnek.
- Adja meg, hogy a blob megmaradjon feltöltés közben, ha a deleteAfterMinutes érték lejár.
Előfeltételek
Egy Azure IoT Edge-eszköz:
A fejlesztői gépet vagy a virtuális gépet IoT Edge-eszközként használhatja a Linux vagy Windows rendszerű eszközök rövid útmutatójának lépéseit követve.
A támogatott operációs rendszerek és architektúrák listájáért tekintse meg az Azure IoT Edge által támogatott rendszereket. Az IoT Edge-en futó Azure Blob Storage modul a következő architektúrákat támogatja:
- Windows AMD64
- Linux AMD64
- Linux ARM32
- Linux ARM64
Felhőerőforrások:
Egy standard szintű IoT Hub az Azure-ban.
deviceToCloudUpload és deviceAutoDelete tulajdonságok
Használja a modul kívánt tulajdonságait a deviceToCloudUploadProperties és a deviceAutoDeleteProperties beállításához. A kívánt tulajdonságok az üzembe helyezés során állíthatók be, vagy később módosíthatók a modul ikerpéldányának szerkesztésével anélkül, hogy újra üzembe kellene helyezni őket. Javasoljuk, hogy ellenőrizze a "Module Twin" reported configuration
értékét, és configurationValidation
ellenőrizze, hogy az értékek megfelelően vannak-e propagálása.
deviceToCloudUploadProperties
Ennek a beállításnak a neve .deviceToCloudUploadProperties
Ha az IoT Edge-szimulátort használja, állítsa be az értékeket a tulajdonságokhoz kapcsolódó környezeti változókra, amelyeket a magyarázat szakaszban talál.
Tulajdonság | Lehetséges értékek | Magyarázat |
---|---|---|
uploadOn | igaz, hamis | Alapértelmezés szerint be van false állítva. Ha be szeretné kapcsolni a funkciót, állítsa ezt a mezőt a következőre true : . Környezeti változó: deviceToCloudUploadProperties__uploadOn={false,true} |
uploadOrder | NewestFirst, OldestFirst | Lehetővé teszi az adatok Azure-ba másolási sorrendjének kiválasztását. Alapértelmezés szerint be van OldestFirst állítva. A sorrendet a blob utolsó módosított időpontja határozza meg. Környezeti változó: deviceToCloudUploadProperties__uploadOrder={NewestFirst,OldestFirst} |
cloudStorageConnectionString |
"DefaultEndpointsProtocol=https;AccountName=<your Azure Storage Account Name>;AccountKey=<your Azure Storage Account Key>;EndpointSuffix=<your end point suffix>" egy kapcsolati sztring, amely lehetővé teszi annak a tárfióknak a megadását, amelyre az adatokat fel szeretné tölteni. Adja meg Azure Storage Account Name a , Azure Storage Account Key . End point suffix Adja hozzá a megfelelő EndpointSuffix-et az Azure-hoz, ahol az adatok fel vannak töltve, ez a globális Azure, a Kormányzati Azure és a Microsoft Azure Stack esetében változik. Itt adhatja meg az Azure Storage SAS kapcsolati sztring. A tulajdonság lejáratakor azonban frissítenie kell ezt a tulajdonságot. Az SAS-engedélyek magukban foglalhatják a tárolókhoz való hozzáférést, valamint blobok létrehozását, írását és hozzáférésének hozzáadását. Környezeti változó: deviceToCloudUploadProperties__cloudStorageConnectionString=<connection string> |
|
storageContainersForUpload |
"<source container name1>": {"target": "<target container name>"} ,"<source container name1>": {"target": "%h-%d-%m-%c"} , "<source container name1>": {"target": "%d-%c"} |
Lehetővé teszi az Azure-ba feltölteni kívánt tárolónevek megadását. Ez a modul lehetővé teszi a forrás- és céltárolók nevének megadását is. Ha nem adja meg a céltároló nevét, a rendszer automatikusan hozzárendel egy tárolónevet, például <IoTHubName>-<IotEdgeDeviceID>-<ModuleName>-<SourceContainerName> . Sablonsztringeket hozhat létre a céltároló nevéhez, és tekintse meg a lehetséges értékek oszlopát. * %h –> IoT Hub neve (3–50 karakter). * %d –> IoT Edge-eszközazonosító (1–129 karakter). * %m –> Modul neve (1–64 karakter). * %c –> Forrástároló neve (3–63 karakter). A tárolónév maximális mérete 63 karakter. A rendszer automatikusan hozzárendeli a céltároló nevét, ha a tároló mérete meghaladja a 63 karaktert. Ebben az esetben a rendszer az egyes szakaszokban (IoTHubName, IotEdgeDeviceID, ModuleName, SourceContainerName) 15 karakterre vágja a nevet. Környezeti változó: deviceToCloudUploadProperties__storageContainersForUpload__<sourceName>__target=<targetName> |
deleteAfterUpload | igaz, hamis | Alapértelmezés szerint be van false állítva. Ha be van true állítva, az adatok automatikusan törlődnek, amikor a felhőbeli tárolóba való feltöltés befejeződött. FIGYELEM: Ha hozzáfűző blobokat használ, ez a beállítás törli a hozzáfűző blobokat a helyi tárolóból a sikeres feltöltés után, és az adott blobok esetleges későbbi hozzáfűzési blokkműveletei sikertelenek lesznek. Óvatosan használja ezt a beállítást. Ne engedélyezze ezt a beállítást, ha az alkalmazás ritkán végez hozzáfűzési műveleteket, vagy nem támogatja a folyamatos hozzáfűzési műveleteket Környezeti változó: deviceToCloudUploadProperties__deleteAfterUpload={false,true} . |
deviceAutoDeleteProperties
Ennek a beállításnak a neve .deviceAutoDeleteProperties
Ha az IoT Edge-szimulátort használja, állítsa be az értékeket a tulajdonságokhoz kapcsolódó környezeti változókra, amelyeket a magyarázat szakaszban talál.
Tulajdonság | Lehetséges értékek | Magyarázat |
---|---|---|
deleteOn | igaz, hamis | Alapértelmezés szerint be van false állítva. Ha be szeretné kapcsolni a funkciót, állítsa ezt a mezőt a következőre true : . Környezeti változó: deviceAutoDeleteProperties__deleteOn={false,true} |
deleteAfterMinutes | <minutes> |
Adja meg a percekben megadott időt. A modul automatikusan törli a blobokat a helyi tárolóból, amikor ez az érték lejár. Az engedélyezett percek maximális száma 35791. Környezeti változó: deviceAutoDeleteProperties__ deleteAfterMinutes=<minutes> |
retainWhileUploading | igaz, hamis | Alapértelmezés szerint erre van állítva true , és megtartja a blobot, amíg lejár a felhőbeli tárolóba deleteAfterMinutes való feltöltése. Beállíthatja, false és a lejárat után törli az adatokat deleteAfterMinutes . Megjegyzés: Ahhoz, hogy ez a tulajdonság működjön, az uploadOn értéknek igaznak kell lennie. FIGYELEM: Ha hozzáfűző blobokat használ, ez a beállítás törli a hozzáfűző blobokat a helyi tárolóból, amikor az érték lejár, és az adott blobok esetleges későbbi hozzáfűzési blokkműveletei meghiúsulnak. Győződjön meg arról, hogy a lejárati érték elég nagy az alkalmazás által végrehajtott hozzáfűzési műveletek várható gyakoriságához. Környezeti változó: deviceAutoDeleteProperties__retainWhileUploading={false,true} |
SMB-megosztás használata helyi tárolóként
A modul Windows-tárolójának Windows-gazdagépen való üzembe helyezésekor az SMB-megosztást helyi tárolási útvonalként is megadhatja.
Győződjön meg arról, hogy az SMB-megosztás és az IoT-eszköz kölcsönösen megbízható tartományokban van.
A PowerShell-parancs futtatásával helyileg megfeleltetheti New-SmbGlobalMapping
az SMB-megosztást a Windowst futtató IoT-eszközön.
A konfiguráció lépései:
$creds = Get-Credential
New-SmbGlobalMapping -RemotePath <remote SMB path> -Credential $creds -LocalPath <Any available drive letter>
Példa:
$creds = Get-Credential
New-SmbGlobalMapping -RemotePath \\contosofileserver\share1 -Credential $creds -LocalPath G:
Ez a parancs a hitelesítő adatokat használja a távoli SMB-kiszolgálóval való hitelesítéshez. Ezután képezze le a távoli megosztás elérési útját a G: meghajtóbetűjelre (bármely más elérhető meghajtóbetűjel lehet). Az IoT-eszköz az adatkötetet a G: meghajtó egyik elérési útjára képezte le.
Győződjön meg arról, hogy az IoT-eszköz felhasználója tud olvasni/írni a távoli SMB-megosztásba.
Az üzembe helyezés értéke <storage mount>
lehet G:/ContainerData:C:/BlobRoot.
Címtárhozzáférés biztosítása a tárolófelhasználó számára Linuxon
Ha a Linux-tárolók létrehozási beállításai között mennyiségi csatlakoztatást használ a tároláshoz, akkor nem kell további lépéseket végrehajtania, de ha kötés-csatlakoztatást használ, akkor ezek a lépések szükségesek a szolgáltatás megfelelő futtatásához.
A minimális jogosultság elvét követve, amely korlátozza a felhasználók hozzáférési jogosultságait a munkájuk elvégzéséhez szükséges minimális engedélyekre, ez a modul tartalmaz egy felhasználót (név: absie, azonosító: 11000) és egy felhasználói csoportot (név: absie, azonosító: 11000). Ha a tároló gyökérként van elindítva (az alapértelmezett felhasználó a gyökér), a szolgáltatás alacsony jogosultságú absie-felhasználóként indul el.
Ez a viselkedés nélkülözhetetlensé teszi a gazdagép elérési útjának engedélyeinek konfigurálását ahhoz, hogy a szolgáltatás megfelelően működjön, ellenkező esetben a szolgáltatás hozzáférés-megtagadott hibákkal összeomlik. A címtárkötésben használt elérési utat el kell érnie a tárolófelhasználónak (például absie 11000). A tárolófelhasználó számára hozzáférést biztosíthat a címtárhoz az alábbi parancsok végrehajtásával a gazdagépen:
sudo chown -R 11000:11000 <blob-dir>
sudo chmod -R 700 <blob-dir>
Példa:
sudo chown -R 11000:11000 /srv/containerdata
sudo chmod -R 700 /srv/containerdata
Ha a szolgáltatást nem absie-felhasználóként kell futtatnia, az egyéni felhasználói azonosítót a createOptionsban, az üzembehelyezési jegyzék "Felhasználó" tulajdonságában adhatja meg. Ilyen esetben használja az alapértelmezett vagy a gyökércsoport-azonosítót 0
.
"createOptions": {
"User": "<custom user ID>:0"
}
Most adjon hozzáférést a tárolófelhasználónak a címtárhoz
sudo chown -R <user ID>:<group ID> <blob-dir>
sudo chmod -R 700 <blob-dir>
Naplófájlok konfigurálása
Az alapértelmezett kimeneti naplószint az "Információ". A kimeneti napló szintjének módosításához állítsa be a LogLevel
modul környezeti változót az üzembe helyezési jegyzékben.
LogLevel
A következő értékeket fogadja el:
- Kritikus
- Hiba
- Figyelmeztetés
- Info
- Hibakeresés
A naplófájlok modulhoz való konfigurálásával kapcsolatos információkért tekintse meg az éles környezetben ajánlott eljárásokat.
Csatlakozás a Blob Storage-modulhoz
A modulhoz konfigurált fióknév és fiókkulcs használatával hozzáférhet az IoT Edge-eszközön található blobtárolóhoz.
Adja meg az IoT Edge-eszközt blobvégpontként a hozzá irányuló tárolási kérésekhez. Az IoT Edge eszközinformációi és a konfigurált fióknév használatával létrehozhat egy kapcsolati sztring explicit tárvégponthoz.
- Azon modulok esetében, amelyek ugyanazon az eszközön vannak üzembe helyezve, mint ahol az IoT Edge-en futó Azure Blob Storage modul fut, a blobvégpont a következő:
http://<module name>:11002/<account name>
. - Egy másik eszközön futó modulok vagy alkalmazások esetében ki kell választania a hálózat megfelelő végpontját. A hálózati beállítástól függően válasszon végpontformátumot, hogy a külső modulból vagy alkalmazásból érkező adatforgalom elérje az Azure Blob Storage-t futtató eszközt az IoT Edge-modulon. A blobvégpont ehhez a forgatókönyvhöz az alábbiak egyike:
http://<device IP >:11002/<account name>
http://<IoT Edge device hostname>:11002/<account name>
http://<fully qualified domain name>:11002/<account name>
Fontos
Az Azure IoT Edge megkülönbözteti a kis- és nagybetűket, amikor modulokat hív meg, és a Storage SDK is alapértelmezés szerint kisbetűs. Ha kisbetűsre módosítja a nevet, azzal biztosítható, hogy az IoT Edge-en futó Azure Blob Storage-kapcsolat ne szakadjon meg.
Azure Blob Storage – gyorsútmutató-minták
Az Azure Blob Storage dokumentációja több nyelven is tartalmaz gyorsútmutató mintakódot. Ezeket a mintákat futtatva tesztelheti az Azure Blob Storage-t az IoT Edge-en, ha módosítja a blobvégpontot a helyi Blob Storage-modulhoz való csatlakozáshoz.
Az alábbi rövid útmutatók olyan nyelveket használnak, amelyeket az IoT Edge is támogat, így a blobtároló modul mellett IoT Edge-modulként is üzembe helyezheti őket:
-
.NET
- Az IoT Edge-en futó Azure Blob Storage 1.4.0-s és korábbi modulja kompatibilis a WindowsAzure.Storage 9.3.3 SDK-val, és az 1.4.1-s verzió is támogatja az Azure.Storage.Blobs 12.8.0 SDK-t.
-
Python
- A Python SDK 2.1-et megelőző verzióinak ismert problémája van, hogy a modul nem adja vissza a blob létrehozásának idejét. A probléma miatt egyes metódusok, például a listablobok nem működnek. Áthidaló megoldásként explicit módon állítsa a blobügyfél API-verzióját "2017-04-17" értékre. Példa:
block_blob_service._X_MS_VERSION = '2017-04-17'
- Blobminta hozzáfűzése
- A Python SDK 2.1-et megelőző verzióinak ismert problémája van, hogy a modul nem adja vissza a blob létrehozásának idejét. A probléma miatt egyes metódusok, például a listablobok nem működnek. Áthidaló megoldásként explicit módon állítsa a blobügyfél API-verzióját "2017-04-17" értékre. Példa:
- Node.js
- JS/HTML
- Ruby
- Ugrás
- PHP
Csatlakozás a helyi tárolóhoz az Azure Storage Explorerrel
Az Azure Storage Explorerrel csatlakozhat a helyi tárfiókhoz.
Az Azure Storage Explorer letöltése és telepítése
Az Azure Storage Explorer legújabb verziója a blobtároló modul által nem támogatott újabb Storage API-verziót használja. Indítsa el az Azure Storage Explorert. Válassza a Szerkesztés menüt. Ellenőrizze, hogy a cél Azure Stack Hub API-k ki van-e választva. Ha nem, válassza a Target Azure Stack Hub lehetőséget. Indítsa újra az Azure Storage Explorert a módosítás érvénybe lépéséhez. Ez a konfiguráció szükséges az IoT Edge-környezettel való kompatibilitáshoz.
Csatlakozás az Azure Storage-hoz egy kapcsolati sztring
Adja meg kapcsolati sztring:
DefaultEndpointsProtocol=http;BlobEndpoint=http://<host device name>:11002/<your local account name>;AccountName=<your local account name>;AccountKey=<your local account key>;
Lépjen végig a csatlakozás lépésein.
Tároló létrehozása a helyi tárfiókban
Fájlok feltöltésének megkezdése blokkblobok vagy hozzáfűző blobokként.
Feljegyzés
Ez a modul nem támogatja a lapblobokat.
Az Azure Storage-fiókokat a Storage Explorerben is csatlakoztathatja. Ez a konfiguráció egyetlen nézetet biztosít mind a helyi tárfiókhoz, mind az Azure Storage-fiókhoz
Támogatott tárolási műveletek
Az IoT Edge Blob Storage-moduljai az Azure Storage SDK-jait használják, és összhangban vannak az Azure Storage API 2017-04-17-es verziójával blokkblobvégpontokhoz.
Mivel nem minden Azure Blob Storage-műveletet támogat az Azure Blob Storage az IoT Edge-en, ez a szakasz az egyes műveletek állapotát sorolja fel.
Számla
Támogatott:
- Tárolók listázása
Támogatott:
- Blobszolgáltatás tulajdonságainak lekérése és beállítása
- Előzetes blobkérés
- Blob szolgáltatásstatisztikák lekérése
- Fiókadatok lekérése
Tárolók
Támogatott:
- Tároló létrehozása és törlése
- Tárolótulajdonságok és metaadatok lekérése
- Blobok listázása
- Tároló ACL-ének lekérése és beállítása
- Tároló metaadatainak beállítása
Támogatott:
- Tároló bérlete
Blobok
Támogatott:
- Blobok elhelyezése, lekérése és törlése
- Blobtulajdonságok lekérése és beállítása
- Blob metaadatainak lekérése és beállítása
Támogatott:
- Blob bérlete
- Pillanatkép-blob
- Másolási és megszakítási blob
- Blobok visszavonása
- Blobszint beállítása
Blokkblobok
Támogatott:
- Blokk elhelyezése
- Tiltólista elhelyezése és lekérése
Támogatott:
- Blokk elhelyezése URL-címről
Hozzáfűző blobok
Támogatott:
- Hozzáfűzési blokk
Támogatott:
- Hozzáfűzési blokk URL-címből
Event Grid az IoT Edge-integráción
Figyelemfelhívás
Az Event Grid integrálása az IoT Edge-en előzetes verzióban érhető el
Ez az IoT Edge-alapú Azure Blob Storage modul mostantól integrációt biztosít az Event Gridkel az IoT Edge-en. Az integrációval kapcsolatos részletes információkért tekintse meg a modulok üzembe helyezéséről, az események közzétételéről és az eseménykézbesítés ellenőrzéséről szóló oktatóanyagot.
Release Notes (Kibocsátási megjegyzések)
A docker hubban a modul kibocsátási megjegyzései az alábbiak. Előfordulhat, hogy egy adott verzió kibocsátási megjegyzéseiben további információt talál a hibajavításokról és a szervizelésről.
Következő lépések
Útmutató az Azure Blob Storage üzembe helyezéséhez az IoT Edge-en
Naprakészen tarthatja a legújabb frissítéseket és bejelentéseket az Azure Blob Storage on IoT Edge kibocsátási megjegyzésoldalán .