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

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ával Put Blockés Put Block ListAppend 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
  • 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
  • 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 .