Megosztás a következőn keresztül:


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 pipa IoT Edge 1.5 IoT Edge 1.4 pipa IoT Edge 1.4

Fontos

Az IoT Edge 1.5 LTS és az IoT Edge 1.4 LTS támogatott kiadások. 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ával Put Blockés Put 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:

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 Namea , 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
  • Információ
  • 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
  • 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.

  1. Az Azure Storage Explorer letöltése és telepítése

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

  3. Csatlakozás az Azure Storage-hoz egy kapcsolati sztring

  4. 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>;

  5. Lépjen végig a csatlakozás lépésein.

  6. Tároló létrehozása a helyi tárfiókban

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

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