Sdílet prostřednictvím


Ukládání dat na hraničních zařízeních s využitím služby Azure Blob Storage ve službě IoT Edge

Platí pro: Značka zaškrtnutí IoT Edge 1.5 IoT Edge 1.5 Značka zaškrtnutí IoT Edge 1.4 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.

Azure Blob Storage ve službě IoT Edge poskytuje řešení blob bloku a doplňovací úložiště objektů blob na hraničních zařízeních. Modul úložiště objektů blob na zařízení IoT Edge se chová jako služba objektů blob Azure, s výjimkou objektů blob, které jsou uložené místně na zařízení IoT Edge. K objektům blob můžete přistupovat pomocí stejných metod sady SDK služby Azure Storage nebo volání rozhraní API objektů blob, ke kterým jste už zvyklí. Tento článek vysvětluje koncepty související se službou Azure Blob Storage v kontejneru IoT Edge, který na zařízení IoT Edge spouští službu objektů blob.

Tento modul je užitečný ve scénářích:

  • Data je potřeba ukládat místně, dokud je nebude možné zpracovávat nebo přenášet do cloudu. Tato data můžou být videa, obrázky, finanční data, data o nemocnici nebo jiná nestrukturovaná data.
  • Když jsou zařízení umístěná na místě s omezeným připojením.
  • Pokud chcete efektivně zpracovávat data místně, abyste získali přístup k datům s nízkou latencí, abyste mohli reagovat na mimořádné situace co nejrychleji.
  • Pokud chcete snížit náklady na šířku pásma a vyhnout se přenosu terabajtů dat do cloudu. Data můžete zpracovávat místně a odesílat pouze zpracovaná data do cloudu.

Tento modul obsahuje funkce deviceToCloudUpload a deviceAutoDelete .

Funkce deviceToCloudUpload je konfigurovatelná funkce. Tato funkce automaticky nahraje data z místního úložiště objektů blob do Azure s podporou přerušovaného připojení k internetu. Umožňuje:

  • Zapněte/vypněte funkci deviceToCloudUpload.
  • Zvolte pořadí, ve kterém se data kopírují do Azure, například NejnovějšíFirst nebo OldestFirst.
  • Zadejte účet služby Azure Storage, do kterého chcete data nahrát.
  • Zadejte kontejnery, které chcete nahrát do Azure. Tento modul umožňuje zadat názvy zdrojových i cílových kontejnerů.
  • Zvolte možnost okamžitého odstranění objektů blob po dokončení nahrávání do cloudového úložiště.
  • Proveďte úplné nahrávání objektů blob (pomocí Put Blob operace) a nahrávání na úrovni bloku (pomocí Put BlockPut Block List a Append Block operací).

Tento modul používá nahrávání na úrovni bloku, když se objekt blob skládá z bloků. Tady jsou některé běžné scénáře:

  • Vaše aplikace aktualizuje některé bloky dříve nahraného objektu blob bloku nebo připojí nové bloky k doplňovacímu objektu blob. Tento modul nahraje pouze aktualizované bloky, nikoli celý objekt blob.
  • Modul nahrává objekt blob a připojení k internetu zmizí, když se připojení znovu vrátí, nahraje jenom zbývající bloky, ne celý objekt blob.

Pokud během nahrávání objektu blob dojde k neočekávanému ukončení procesu (například selhání napájení), všechny bloky kvůli nahrání se znovu nahrají, jakmile se modul vrátí do online režimu.

deviceAutoDelete je konfigurovatelná funkce. Tato funkce automaticky odstraní objekty blob z místního úložiště, když vyprší zadaná doba trvání (měřená v minutách). Umožňuje:

  • Zapněte/vypněte funkci deviceAutoDelete.
  • Zadejte čas v minutách (deleteAfterMinutes), po kterém se objekty blob automaticky odstraní.
  • Zvolte možnost zachovat objekt blob během nahrávání, pokud vyprší platnost hodnoty deleteAfterMinutes.

Požadavky

Zařízení Azure IoT Edge:

  • Vývojový počítač nebo virtuální počítač můžete použít jako zařízení IoT Edge pomocí kroků v rychlém startu pro zařízení s Linuxem nebo Windows.

  • Seznam podporovaných operačních systémů a architektur najdete v podporovaných systémech Azure IoT Edge. Modul Azure Blob Storage ve službě IoT Edge podporuje následující architektury:

    • Windows AMD64
    • Linux AMD64
    • Linux ARM32
    • Linux ARM64

Cloudové prostředky:

IoT Hub úrovně Standard v Azure.

deviceToCloudUpload a deviceAutoDelete – vlastnosti

Pomocí požadovaných vlastností modulu nastavte deviceToCloudUploadProperties a deviceAutoDeleteProperties. Požadované vlastnosti je možné nastavit během nasazení nebo později úpravou dvojčete modulu bez nutnosti opětovného nasazení. Doporučujeme zkontrolovat dvojče reported configuration modulu a configurationValidation ujistit se, že jsou hodnoty správně šířené.

deviceToCloudUploadProperties

Název tohoto nastavení je deviceToCloudUploadProperties. Pokud používáte simulátor IoT Edge, nastavte hodnoty na související proměnné prostředí pro tyto vlastnosti, které najdete v části vysvětlení.

Vlastnost Možné hodnoty Vysvětlení
uploadOn true, false Ve výchozím nastavení je nastavená hodnota false . Pokud chcete tuto funkci zapnout, nastavte toto pole na truehodnotu .

Proměnná prostředí: deviceToCloudUploadProperties__uploadOn={false,true}
uploadOrder NejnovějšíFirst, NejstaršíFirst Umožňuje zvolit pořadí, ve kterém se data kopírují do Azure. Ve výchozím nastavení je nastavená hodnota OldestFirst . Pořadí je určeno časem poslední změny objektu blob.

Proměnná prostředí: deviceToCloudUploadProperties__uploadOrder={NewestFirst,OldestFirst}
cloudStorageConnectionString "DefaultEndpointsProtocol=https;AccountName=<your Azure Storage Account Name>;AccountKey=<your Azure Storage Account Key>;EndpointSuffix=<your end point suffix>"je připojovací řetězec, která umožňuje zadat účet úložiště, do kterého chcete data nahrát. Zadejte Azure Storage Account Name, Azure Storage Account Key, End point suffix. Přidejte odpovídající příponu koncového bodu Azure, kde se data nahrají, liší se pro globální Azure, Státní správu Azure a Microsoft Azure Stack.

Tady můžete zadat SAS služby Azure Storage připojovací řetězec. Tuto vlastnost ale musíte aktualizovat, jakmile vyprší její platnost. Oprávnění SAS můžou zahrnovat vytvoření přístupu pro kontejnery a vytvoření, zápis a přidání přístupu pro objekty blob.

Proměnná prostředí: 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"}
Umožňuje zadat názvy kontejnerů, které chcete nahrát do Azure. Tento modul umožňuje zadat názvy zdrojových i cílových kontejnerů. Pokud nezadáte název cílového kontejneru, přiřadí se mu automaticky název kontejneru, například <IoTHubName>-<IotEdgeDeviceID>-<ModuleName>-<SourceContainerName>. Můžete vytvořit řetězce šablony pro název cílového kontejneru a prohlédnout si sloupec možných hodnot.
* %h –> Název služby IoT Hub (3–50 znaků).
* %d –> ID zařízení IoT Edge (1 až 129 znaků).
* %m –> název modulu (1 až 64 znaků).
* %c –> název zdrojového kontejneru (3 až 63 znaků).

Maximální velikost názvu kontejneru je 63 znaků. Název se automaticky přiřadí názvu cílového kontejneru, pokud velikost kontejneru přesahuje 63 znaků. V tomto případě je název oříznutý v každé části (IoTHubName, IotEdgeDeviceID, ModuleName, SourceContainerName) na 15 znaků.

Proměnná prostředí: deviceToCloudUploadProperties__storageContainersForUpload__<sourceName>__target=<targetName>
deleteAfterUpload true, false Ve výchozím nastavení je nastavená hodnota false . Když je tato možnost nastavená, truedata se po dokončení nahrávání do cloudového úložiště automaticky odstraní.

UPOZORNĚNÍ: Pokud používáte doplňovací objekty blob, toto nastavení po úspěšném nahrání odstraní doplňovací objekty blob z místního úložiště a všechny budoucí operace doplňovacího bloku do těchto objektů blob selžou. Toto nastavení používejte s opatrností. Toto nastavení nepovolujte, pokud vaše aplikace neprovádí občasné operace připojení nebo nepodporuje průběžné operace připojení.

Proměnná prostředí: deviceToCloudUploadProperties__deleteAfterUpload={false,true}.

deviceAutoDeleteProperties

Název tohoto nastavení je deviceAutoDeleteProperties. Pokud používáte simulátor IoT Edge, nastavte hodnoty na související proměnné prostředí pro tyto vlastnosti, které najdete v části vysvětlení.

Vlastnost Možné hodnoty Vysvětlení
deleteOn true, false Ve výchozím nastavení je nastavená hodnota false . Pokud chcete tuto funkci zapnout, nastavte toto pole na truehodnotu .

Proměnná prostředí: deviceAutoDeleteProperties__deleteOn={false,true}
deleteAfterMinutes <minutes> Zadejte čas v minutách. Po vypršení platnosti této hodnoty modul automaticky odstraní objekty blob z místního úložiště. Aktuální maximální povolený počet minut je 35791.

Proměnná prostředí: deviceAutoDeleteProperties__ deleteAfterMinutes=<minutes>
retainWhileUploading true, false Ve výchozím nastavení je nastavená na truehodnotu a zachová objekt blob při nahrávání do cloudového úložiště, pokud deleteAfterMinutes jeho platnost vyprší. Data můžete nastavit tak, aby false se odstranila, jakmile deleteAfterMinutes vyprší jeho platnost. Poznámka: Aby tato vlastnost fungovala uploadOn, měla by být nastavena na hodnotu true.

UPOZORNĚNÍ: Pokud používáte doplňovací objekty blob, toto nastavení odstraní doplňovací objekty blob z místního úložiště, jakmile vyprší platnost hodnoty, a všechny budoucí operace doplňovacího bloku do těchto objektů blob selžou. Ujistěte se, že je hodnota vypršení platnosti dostatečně velká pro očekávanou frekvenci operací připojení provedených vaší aplikací.

Proměnná prostředí: deviceAutoDeleteProperties__retainWhileUploading={false,true}

Použití sdílené složky SMB jako místního úložiště

Sdílenou složku SMB můžete poskytnout jako cestu k místnímu úložišti, když nasadíte kontejner Windows tohoto modulu na hostitele Windows.

Ujistěte se, že sdílená složka SMB a zařízení IoT jsou ve vzájemně důvěryhodných doménách.

Spuštěním příkazu PowerShellu můžete New-SmbGlobalMapping namapovat sdílenou složku SMB místně na zařízení IoT se systémem Windows.

Kroky konfigurace:

$creds = Get-Credential
New-SmbGlobalMapping -RemotePath <remote SMB path> -Credential $creds -LocalPath <Any available drive letter>

Příklad:

$creds = Get-Credential
New-SmbGlobalMapping -RemotePath \\contosofileserver\share1 -Credential $creds -LocalPath G:

Tento příkaz používá přihlašovací údaje k ověření na vzdáleném serveru SMB. Pak namapujte cestu ke vzdálené sdílené složce na písmeno jednotky G: (může to být jakékoli jiné dostupné písmeno jednotky). Zařízení IoT teď má datový svazek namapovaný na cestu na jednotce G: .

Ujistěte se, že uživatel v zařízení IoT může číst a zapisovat do vzdálené sdílené složky SMB.

Pro vaše nasazení může být hodnota <storage mount> G:/ContainerData:C:/BlobRoot.

Udělení přístupu k adresáři uživateli kontejneru v Linuxu

Pokud pro úložiště používáte připojení svazku v možnostech vytváření kontejnerů Linuxu, nemusíte provádět žádné další kroky, ale pokud použijete připojení vazby, jsou tyto kroky nutné ke správnému spuštění služby.

Tento modul zahrnuje uživatele (jméno: absie, ID: 11000) a skupinu uživatelů (jméno: 11000) a skupinu uživatelů (jméno: absie, ID: 11000) a uživatelskou skupinu (jméno: absie, ID: 11000). Pokud je kontejner spuštěný jako root (výchozí uživatel je root), služba se spustí jako uživatel absie s nízkými oprávněními.

Toto chování způsobí, že konfigurace oprávnění na cestě hostitele má zásadní význam pro správné fungování služby, jinak služba selže s chybami odepření přístupu. Cesta použitá v vazbě adresáře musí být přístupná uživatelem kontejneru (příklad: absie 11000). Uživateli kontejneru můžete udělit přístup k adresáři spuštěním těchto příkazů na hostiteli:

sudo chown -R 11000:11000 <blob-dir>
sudo chmod -R 700 <blob-dir>

Příklad:

sudo chown -R 11000:11000 /srv/containerdata
sudo chmod -R 700 /srv/containerdata

Pokud potřebujete službu spustit jako jiného uživatele než absie, můžete v manifestu nasazení zadat vlastní ID uživatele ve vlastnosti CreateOptions. V takovém případě použijte výchozí nebo kořenové ID 0skupiny .

"createOptions": {
  "User": "<custom user ID>:0"
}

Teď uživateli kontejneru udělte přístup k adresáři.

sudo chown -R <user ID>:<group ID> <blob-dir>
sudo chmod -R 700 <blob-dir>

Konfigurace souborů protokolu

Výchozí úroveň výstupního protokolu je Info. Pokud chcete změnit úroveň výstupního protokolu, nastavte LogLevel proměnnou prostředí pro tento modul v manifestu nasazení. LogLevel přijímá následující hodnoty:

  • Kritické
  • Chyba
  • Upozorňující
  • Informace
  • Ladění

Informace o konfiguraci souborů protokolu pro váš modul najdete v těchto osvědčených postupech v produkčním prostředí.

Připojení k modulu úložiště objektů blob

Název účtu a klíč účtu, který jste nakonfigurovali pro modul, můžete použít pro přístup k úložišti objektů blob na zařízení IoT Edge.

Zadejte své zařízení IoT Edge jako koncový bod objektu blob pro všechny požadavky na úložiště, které do něj zadáte. Můžete vytvořit připojovací řetězec pro explicitní koncový bod úložiště pomocí informací o zařízení IoT Edge a názvu účtu, který jste nakonfigurovali.

  • Pro moduly nasazené na stejném zařízení jako modul Azure Blob Storage ve službě IoT Edge je koncový bod objektu blob: http://<module name>:11002/<account name>
  • Pro moduly nebo aplikace spuštěné na jiném zařízení musíte zvolit správný koncový bod pro vaši síť. V závislosti na nastavení sítě zvolte formát koncového bodu, aby se datový provoz z vašeho externího modulu nebo aplikace dostal do zařízení, na kterém běží azure Blob Storage v modulu IoT Edge. Koncový bod objektu blob pro tento scénář je jedním z následujících:
    • http://<device IP >:11002/<account name>
    • http://<IoT Edge device hostname>:11002/<account name>
    • http://<fully qualified domain name>:11002/<account name>

Důležité

Azure IoT Edge se při volání modulů rozlišují malá a velká písmena a sada SDK služby Storage také používá malá písmena. Změna názvu na malá písmena pomáhá zajistit, aby se vaše připojení k modulu Azure Blob Storage ve službě IoT Edge nepřerušovala.

Ukázky rychlého startu pro Azure Blob Storage

Dokumentace ke službě Azure Blob Storage obsahuje ukázkový kód pro rychlý start v několika jazycích. Tyto ukázky můžete spustit a otestovat službu Azure Blob Storage ve službě IoT Edge tak, že změníte koncový bod objektu blob tak, aby se připojil k místnímu modulu úložiště objektů blob.

Následující ukázky rychlého startu používají jazyky podporované také službou IoT Edge, takže je můžete nasadit jako moduly IoT Edge společně s modulem úložiště objektů blob:

  • .NET
    • Modul Azure Blob Storage ve službě IoT Edge verze 1.4.0 a starší jsou kompatibilní se sadou WindowsAzure.Storage 9.3.3 SDK a v1.4.1 také podporuje sadu Azure.Storage.Blobs 12.8.0 SDK.
  • Python
    • Verze starší než V2.1 sady Python SDK obsahují známý problém, kdy modul nevrací čas vytvoření objektu blob. Kvůli tomuto problému některé metody, jako jsou například objekty blob seznamu, nefungují. Jako alternativní řešení explicitně nastavte verzi rozhraní API v klientovi objektů blob na 2017-04-17. Příklad: block_blob_service._X_MS_VERSION = '2017-04-17'
    • Ukázka doplňovacího objektu blob
  • Node.js
  • JS/HTML
  • Ruby
  • Přejít
  • PHP

Připojení k místnímu úložišti pomocí Průzkumník služby Azure Storage

K připojení k místnímu účtu úložiště můžete použít Průzkumník služby Azure Storage.

  1. Stažení a instalace Průzkumníka služby Azure Storage

  2. Nejnovější verze Průzkumník služby Azure Storage používá novější verzi rozhraní API úložiště, kterou modul úložiště objektů blob nepodporuje. Spusťte nástroj Azure Storage Explorer. Vyberte nabídku Upravit. Ověřte, že je vybraná cílová rozhraní API služby Azure Stack Hub. Pokud není, vyberte Target Azure Stack Hub( Cílová služba Azure Stack Hub). Restartujte Průzkumník služby Azure Storage, aby se změna projevila. Tato konfigurace se vyžaduje kvůli kompatibilitě s prostředím IoT Edge.

  3. Připojení ke službě Azure Storage pomocí připojovací řetězec

  4. Zadejte připojovací řetězec:DefaultEndpointsProtocol=http;BlobEndpoint=http://<host device name>:11002/<your local account name>;AccountName=<your local account name>;AccountKey=<your local account key>;

  5. Projděte si postup připojení.

  6. Vytvoření kontejneru v místním účtu úložiště

  7. Začněte nahrávat soubory jako objekty blob bloku nebo doplňovací objekty blob.

    Poznámka:

    Tento modul nepodporuje objekty blob stránky.

  8. V Průzkumník služby Storage můžete také připojit účty úložiště Azure. Tato konfigurace poskytuje jedno zobrazení pro místní účet úložiště i účet úložiště Azure.

Podporované operace úložiště

Moduly úložiště objektů blob ve službě IoT Edge používají sady SDK služby Azure Storage a jsou konzistentní s verzí 2017–04-17 rozhraní API služby Azure Storage pro koncové body objektů blob bloku.

Vzhledem k tomu, že Azure Blob Storage ve službě IoT Edge nepodporuje všechny operace azure Blob Storage, uvádí tato část stav jednotlivých objektů blob.

Obchodní vztah

Podporováno:

  • Výpis kontejnerů

Nepodporovaný:

  • Získání a nastavení vlastností služby Blob Service
  • Předběžný požadavek na objekt blob
  • Získání statistik služby Blob Service
  • Získání informací o účtu

Kontejnery

Podporováno:

  • Vytvoření a odstranění kontejneru
  • Získání vlastností kontejneru a metadat
  • Výpis objektů blob
  • Získání a nastavení seznamu ACL kontejneru
  • Nastavení metadat kontejneru

Nepodporovaný:

  • Zapůjčení kontejneru

Objekty blob

Podporováno:

  • Vložení, získání a odstranění objektu blob
  • Získání a nastavení vlastností objektu blob
  • Získání a nastavení metadat objektů blob

Nepodporovaný:

  • Zapůjčení objektu blob
  • Objekt blob snímku
  • Kopírování a přerušení kopírování objektu blob
  • Odstranění objektu blob
  • Nastavení úrovně objektu blob

Objekty blob bloku

Podporováno:

  • Vložit blok
  • Vložení a získání seznamu blokovaných položek

Nepodporovaný:

  • Vložení bloku z adresy URL

Doplňovací objekty blob

Podporováno:

  • Přidávací blok

Nepodporovaný:

  • Připojit blok z adresy URL

Integrace služby Event Grid ve službě IoT Edge

Upozornění

Integrace se službou Event Grid ve službě IoT Edge je ve verzi Preview.

Tento modul Azure Blob Storage ve službě IoT Edge teď poskytuje integraci se službou Event Grid ve službě IoT Edge. Podrobné informace o této integraci najdete v kurzu nasazení modulů, publikování událostí a ověření doručení událostí.

Poznámky k verzi

Tady jsou poznámky k verzi v centru Dockeru pro tento modul. V poznámkách k verzi konkrétní verze můžete najít další informace týkající se oprav chyb a nápravy.

Další kroky

Informace o nasazení služby Azure Blob Storage ve službě IoT Edge

Mějte aktuální informace o nedávných aktualizacích a oznámeních na stránce s poznámkami k verzi služby Azure Blob Storage ve službě IoT Edge.