Delen via


Gegevens opslaan aan de rand met Azure Blob Storage op IoT Edge

Van toepassing op:IoT Edge 1.5-vinkje IoT Edge 1.5 Vinkje voor IoT Edge 1.4 IoT Edge 1.4

Belangrijk

IoT Edge 1.5 LTS en IoT Edge 1.4 LTS worden ondersteund releases. IoT Edge 1.4 LTS eindigt op 12 november 2024. Raadpleeg IoT Edge bijwerken als u een eerdere versie hebt.

Azure Blob Storage in IoT Edge biedt een oplossing voor blok-blob - en toevoeg-blobopslag aan de rand. Een Blob Storage-module op uw IoT Edge-apparaat gedraagt zich als een Azure Blob-service, behalve dat de blobs lokaal worden opgeslagen op uw IoT Edge-apparaat. U kunt toegang krijgen tot uw blobs met behulp van dezelfde Methoden voor Azure Storage SDK of blob-API-aanroepen waarnaar u al bent gebruikt. In dit artikel worden de concepten uitgelegd die betrekking hebben op Azure Blob Storage in IoT Edge-container waarop een blobservice wordt uitgevoerd op uw IoT Edge-apparaat.

Deze module is handig in scenario's:

  • Waar gegevens lokaal moeten worden opgeslagen totdat ze kunnen worden verwerkt of overgedragen naar de cloud. Deze gegevens kunnen video's, afbeeldingen, financiële gegevens, ziekenhuisgegevens of andere ongestructureerde gegevens zijn.
  • Wanneer apparaten zich op een locatie bevinden met beperkte connectiviteit.
  • Wanneer u de gegevens efficiënt wilt verwerken om toegang te krijgen tot de gegevens met een lage latentie, zodat u zo snel mogelijk kunt reageren op noodsituaties.
  • Als u de bandbreedtekosten wilt verlagen en terabytes aan gegevens naar de cloud wilt overdragen. U kunt de gegevens lokaal verwerken en alleen de verwerkte gegevens verzenden naar de cloud.

Deze module wordt geleverd met de functies deviceToCloudUpload en deviceAutoDelete .

De functie deviceToCloudUpload is een configureerbare functionaliteit. Met deze functie worden de gegevens van uw lokale blobopslag automatisch geüpload naar Azure met onregelmatige ondersteuning voor internetverbinding. Hiermee kunt u het volgende doen:

  • Schakel de functie deviceToCloudUpload in/UIT.
  • Kies de volgorde waarin de gegevens worden gekopieerd naar Azure, zoals NewestFirst of OldestFirst.
  • Geef het Azure Storage-account op waarnaar u uw gegevens wilt uploaden.
  • Geef de containers op die u wilt uploaden naar Azure. Met deze module kunt u zowel bron- als doelcontainernamen opgeven.
  • Kies de mogelijkheid om de blobs onmiddellijk te verwijderen, nadat het uploaden naar cloudopslag is voltooid
  • Volledige blobupload uitvoeren (met behulp van Put Blob bewerking) en uploaden op blokniveau (met behulp van Put BlockPut Block List en Append Block bewerkingen).

In deze module wordt upload op blokniveau gebruikt wanneer uw blob uit blokken bestaat. Hier volgen enkele veelvoorkomende scenario's:

  • Uw toepassing werkt enkele blokken van een eerder geüploade blok-blob bij of voegt nieuwe blokken toe aan een toevoeg-blob. Deze module uploadt alleen de bijgewerkte blokken en niet de hele blob.
  • De module uploadt blob en internetverbinding verdwijnt, wanneer de verbinding weer terug is, worden alleen de resterende blokken en niet de hele blob geüpload.

Als er een onverwachte procesafbreking (zoals stroomstoring) optreedt tijdens het uploaden van een blob, worden alle blokken die moeten worden geüpload opnieuw geüpload zodra de module weer online is.

deviceAutoDelete is een configureerbare functionaliteit. Met deze functie worden uw blobs automatisch verwijderd uit de lokale opslag wanneer de opgegeven duur (gemeten in minuten) verloopt. Hiermee kunt u het volgende doen:

  • Schakel de functie deviceAutoDelete in/UIT.
  • Geef de tijd in minuten op (deleteAfterMinutes) waarna de blobs automatisch worden verwijderd.
  • Kies de mogelijkheid om de blob te behouden terwijl deze wordt geüpload als de waarde deleteAfterMinutes verloopt.

Vereisten

Een Azure IoT Edge-apparaat:

  • U kunt uw ontwikkelcomputer of een virtuele machine als een IoT Edge-apparaat gebruiken door de stappen in de quickstart voor Linux - of Windows-apparaten te volgen.

  • Raadpleeg ondersteunde Azure IoT Edge-systemen voor een lijst met ondersteunde besturingssystemen en architecturen. De Module Azure Blob Storage in IoT Edge ondersteunt de volgende architecturen:

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

Cloudresources:

Een standaard IoT Hub-laag in Azure.

eigenschappen deviceToCloudUpload en deviceAutoDelete

Gebruik de gewenste eigenschappen van de module om deviceToCloudUploadProperties en deviceAutoDeleteProperties in te stellen. Gewenste eigenschappen kunnen tijdens de implementatie worden ingesteld of later worden gewijzigd door de moduledubbel te bewerken zonder dat u deze opnieuw hoeft te implementeren. U wordt aangeraden de moduledubbel te reported configuration controleren en configurationValidation ervoor te zorgen dat waarden correct worden doorgegeven.

deviceToCloudUploadProperties

De naam van deze instelling is deviceToCloudUploadProperties. Als u de IoT Edge-simulator gebruikt, stelt u de waarden in op de gerelateerde omgevingsvariabelen voor deze eigenschappen, die u kunt vinden in de uitlegsectie.

Eigenschappen Mogelijke waarden Uitleg
uploadOn de waarde True, false false Standaard ingesteld op. Als u de functie wilt inschakelen, stelt u dit veld truein op .

Omgevingsvariabele: deviceToCloudUploadProperties__uploadOn={false,true}
uploadOrder NewestFirst, OldestFirst Hiermee kunt u de volgorde kiezen waarin de gegevens naar Azure worden gekopieerd. OldestFirst Standaard ingesteld op. De volgorde wordt bepaald door de laatste wijzigingstijd van blob.

Omgevingsvariabele: deviceToCloudUploadProperties__uploadOrder={NewestFirst,OldestFirst}
cloudStorage Verbinding maken ionString "DefaultEndpointsProtocol=https;AccountName=<your Azure Storage Account Name>;AccountKey=<your Azure Storage Account Key>;EndpointSuffix=<your end point suffix>"is een verbindingsreeks waarmee u het opslagaccount kunt opgeven waarnaar u uw gegevens wilt uploaden. Opgeven Azure Storage Account Name, Azure Storage Account Key, End point suffix. Voeg het juiste EndpointS-achtervoegsel van Azure toe waar gegevens worden geüpload. Dit varieert voor Global Azure, Government Azure en Microsoft Azure Stack.

U kunt ervoor kiezen om hier sas voor Azure Storage op te geven verbindingsreeks. Maar u moet deze eigenschap bijwerken wanneer deze verloopt. SAS-machtigingen kunnen bestaan uit het maken van toegang voor containers en het maken, schrijven en toevoegen van toegang voor blobs.

Omgevingsvariabele: 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"}
Hiermee kunt u de containernamen opgeven die u wilt uploaden naar Azure. Met deze module kunt u zowel bron- als doelcontainernamen opgeven. Als u de naam van de doelcontainer niet opgeeft, wordt er automatisch een containernaam <IoTHubName>-<IotEdgeDeviceID>-<ModuleName>-<SourceContainerName>zoals . U kunt sjabloontekenreeksen maken voor de naam van de doelcontainer. Bekijk de kolom mogelijke waarden.
* %h -> IoT Hub-naam (3-50 tekens).
* %d -> IoT Edge-apparaat-id (1 tot 129 tekens).
* %m -> Modulenaam (1 tot 64 tekens).
* %c -> Broncontainernaam (3 tot 63 tekens).

De maximale grootte van de containernaam is 63 tekens. Aan de naam wordt automatisch de naam van de doelcontainer toegewezen als de grootte van de container langer is dan 63 tekens. In dit geval wordt de naam in elke sectie (IoTHubName, IotEdgeDeviceID, ModuleName, SourceContainerName) ingekort tot 15 tekens.

Omgevingsvariabele: deviceToCloudUploadProperties__storageContainersForUpload__<sourceName>__target=<targetName>
deleteAfterUpload de waarde True, false false Standaard ingesteld op. Wanneer deze is ingesteld trueop, worden de gegevens automatisch verwijderd wanneer het uploaden naar cloudopslag is voltooid.

LET OP: Als u toevoeg-blobs gebruikt, worden met deze instelling toevoeg-blobs verwijderd uit de lokale opslag na een geslaagde upload en mislukken toekomstige toevoegblokbewerkingen voor deze blobs. Gebruik deze instelling met voorzichtigheid. Schakel deze instelling niet in als uw toepassing onregelmatige toevoegbewerkingen doet of geen ondersteuning biedt voor doorlopende toevoegbewerkingen

Omgevingsvariabele: deviceToCloudUploadProperties__deleteAfterUpload={false,true}.

deviceAutoDeleteProperties

De naam van deze instelling is deviceAutoDeleteProperties. Als u de IoT Edge-simulator gebruikt, stelt u de waarden in op de gerelateerde omgevingsvariabelen voor deze eigenschappen, die u kunt vinden in de uitlegsectie.

Eigenschappen Mogelijke waarden Uitleg
deleteOn de waarde True, false false Standaard ingesteld op. Als u de functie wilt inschakelen, stelt u dit veld truein op .

Omgevingsvariabele: deviceAutoDeleteProperties__deleteOn={false,true}
deleteAfterMinutes <minutes> Geef de tijd in minuten op. De module verwijdert automatisch uw blobs uit de lokale opslag wanneer deze waarde verloopt. Het huidige maximum aantal toegestane minuten is 35791.

Omgevingsvariabele: deviceAutoDeleteProperties__ deleteAfterMinutes=<minutes>
retainWhileUploading de waarde True, false De blob wordt standaard ingesteld op trueen behoudt de blob terwijl deze wordt geüpload naar de cloudopslag als deleteAfterMinutes deze verloopt. U kunt deze false instellen op en de gegevens worden verwijderd zodra deleteAfterMinutes deze verlopen. Opmerking: als u deze eigenschap wilt laten werken, moet uploadOn zijn ingesteld op true.

LET OP: Als u toevoeg-blobs gebruikt, worden met deze instelling toevoeg-blobs uit de lokale opslag verwijderd wanneer de waarde verloopt en eventuele toekomstige toevoegblokbewerkingen voor deze blobs mislukken. Zorg ervoor dat de verloopwaarde groot genoeg is voor de verwachte frequentie van toevoegbewerkingen die door uw toepassing worden uitgevoerd.

Omgevingsvariabele: deviceAutoDeleteProperties__retainWhileUploading={false,true}

SMB-share gebruiken als uw lokale opslag

U kunt SMB-share opgeven als uw lokale opslagpad wanneer u een Windows-container van deze module op de Windows-host implementeert.

Zorg ervoor dat de SMB-share en het IoT-apparaat zich in wederzijds vertrouwde domeinen bevinden.

U kunt de PowerShell-opdracht uitvoeren New-SmbGlobalMapping om de SMB-share lokaal toe te wijzen op het IoT-apparaat met Windows.

De configuratiestappen:

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

Voorbeeld:

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

Met deze opdracht worden de referenties gebruikt om te verifiëren bij de externe SMB-server. Wijs vervolgens het pad naar de externe share toe aan G: stationsletter (kan elke andere beschikbare stationsletter zijn). Het IoT-apparaat heeft nu het gegevensvolume toegewezen aan een pad op het station G: .

Zorg ervoor dat de gebruiker op het IoT-apparaat kan lezen/schrijven naar de externe SMB-share.

Voor uw implementatie kan de waarde <storage mount> G:/ContainerData:C:/BlobRoot zijn.

Directorytoegang verlenen tot containergebruiker in Linux

Als u volumekoppeling gebruikt voor opslag in uw maakopties voor Linux-containers, hoeft u geen extra stappen uit te voeren, maar als u bindingskoppeling gebruikt, zijn deze stappen vereist om de service correct uit te voeren.

Volgens het principe van minimale bevoegdheden om de toegangsrechten voor gebruikers te beperken tot de minimale machtigingen die ze nodig hebben om hun werk uit te voeren, bevat deze module een gebruiker (naam: absie, id: 11000) en een gebruikersgroep (naam: absie, id: 11000). Als de container wordt gestart als hoofdmap (standaardgebruiker is root), wordt onze service gestart als de gebruiker met lage bevoegdheden.

Dit gedrag zorgt ervoor dat de configuratie van de machtigingen voor het hostpad essentieel is voor een goede werking van de service, anders loopt de service vast met fouten met geweigerde toegang. Het pad dat wordt gebruikt in mapbinding moet toegankelijk zijn voor de containergebruiker (bijvoorbeeld: absie 11000). U kunt de containergebruiker toegang verlenen tot de map door deze opdrachten uit te voeren op de host:

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

Voorbeeld:

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

Als u de service wilt uitvoeren als een andere gebruiker dan absie, kunt u uw aangepaste gebruikers-id opgeven in createOptions onder de eigenschap Gebruiker in uw implementatiemanifest. Gebruik in dat geval de standaard- of hoofdgroep-id 0.

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

Nu verleent u de containergebruiker toegang tot de map

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

Logboekbestanden configureren

Het standaardniveau van het uitvoerlogboek is Info. Als u het uitvoerlogboekniveau wilt wijzigen, stelt u de LogLevel omgevingsvariabele voor deze module in het implementatiemanifest in. LogLevel accepteert de volgende waarden:

  • Kritiek
  • Fout
  • Waarschuwing
  • Info
  • Fouten opsporen

Zie deze aanbevolen procedures voor productie voor informatie over het configureren van logboekbestanden voor uw module.

Verbinding maken naar uw Blob Storage-module

U kunt de accountnaam en accountsleutel gebruiken die u voor uw module hebt geconfigureerd voor toegang tot de blobopslag op uw IoT Edge-apparaat.

Geef uw IoT Edge-apparaat op als het blob-eindpunt voor eventuele opslagaanvragen die u naar het apparaat maakt. U kunt een verbindingsreeks maken voor een expliciet opslageindpunt met behulp van de gegevens van het IoT Edge-apparaat en de accountnaam die u hebt geconfigureerd.

  • Voor modules die zijn geïmplementeerd op hetzelfde apparaat als waar de Azure Blob Storage op IoT Edge-module wordt uitgevoerd, is het blob-eindpunt: http://<module name>:11002/<account name>.
  • Voor modules of toepassingen die op een ander apparaat worden uitgevoerd, moet u het juiste eindpunt voor uw netwerk kiezen. Afhankelijk van uw netwerkinstallatie kiest u een eindpuntindeling, zodat het gegevensverkeer van uw externe module of toepassing het apparaat met de Azure Blob Storage op IoT Edge-module kan bereiken. Het blob-eindpunt voor dit scenario is een van de volgende:
    • http://<device IP >:11002/<account name>
    • http://<IoT Edge device hostname>:11002/<account name>
    • http://<fully qualified domain name>:11002/<account name>

Belangrijk

Azure IoT Edge is hoofdlettergevoelig wanneer u modules aanroept en de Storage SDK wordt ook standaard in kleine letters weergegeven. Hoewel de naam van de module in Azure Marketplace AzureBlobStorageonIoTEdge is, helpt het wijzigen van de naam in kleine letters ervoor te zorgen dat uw verbindingen met de Azure Blob Storage in IoT Edge-module niet worden onderbroken.

Quickstartvoorbeelden voor Azure Blob Storage

De Documentatie voor Azure Blob Storage bevat voorbeeldcode in verschillende talen. U kunt deze voorbeelden uitvoeren om Azure Blob Storage in IoT Edge te testen door het blob-eindpunt te wijzigen om verbinding te maken met uw lokale blobopslagmodule.

In de volgende quickstartvoorbeelden worden talen gebruikt die ook worden ondersteund door IoT Edge, zodat u ze kunt implementeren als IoT Edge-modules naast de blobopslagmodule:

  • .NET
    • De Azure Blob Storage op IoT Edge-module v1.4.0 en eerder is compatibel met WindowsAzure.Storage 9.3.3 SDK en v1.4.1 ondersteunt ook Azure.Storage.Blobs 12.8.0 SDK.
  • Python
    • Versies vóór V2.1 van de Python SDK hebben een bekend probleem waarbij de module de aanmaaktijd van de blob niet retourneert. Vanwege dit probleem werken sommige methoden zoals lijst-blobs niet. Als tijdelijke oplossing stelt u de API-versie op de blobclient expliciet in op '2017-04-17'. Voorbeeld: block_blob_service._X_MS_VERSION = '2017-04-17'
    • Voorbeeld van toevoeg-blob
  • Node.js
  • JS/HTML
  • Ruby
  • Go
  • PHP

Verbinding maken naar uw lokale opslag met Azure Storage Explorer

U kunt Azure Storage Explorer gebruiken om verbinding te maken met uw lokale opslagaccount.

  1. Azure Storage Explorer downloaden en installeren

  2. De nieuwste versie van Azure Storage Explorer maakt gebruik van een nieuwere versie van de opslag-API die niet wordt ondersteund door de blob-opslagmodule. Start Azure Storage Explorer op. Selecteer het menu Bewerken . Controleer of de Azure Stack Hub-doel-API's zijn geselecteerd. Als dat niet het is, selecteert u Target Azure Stack Hub. Start Azure Storage Explorer opnieuw om de wijziging van kracht te laten worden. Deze configuratie is vereist voor compatibiliteit met uw IoT Edge-omgeving.

  3. Verbinding maken naar Azure Storage met behulp van een verbindingsreeks

  4. Geef verbindingsreeks op:DefaultEndpointsProtocol=http;BlobEndpoint=http://<host device name>:11002/<your local account name>;AccountName=<your local account name>;AccountKey=<your local account key>;

  5. Doorloop de stappen om verbinding te maken.

  6. Een container maken in uw lokale opslagaccount

  7. Begin met het uploaden van bestanden als blok-blobs of toevoeg-blobs.

    Notitie

    Deze module biedt geen ondersteuning voor pagina-blobs.

  8. U kunt er ook voor kiezen om uw Azure-opslagaccounts te verbinden in Storage Explorer. Deze configuratie biedt u één weergave voor zowel uw lokale opslagaccount als het Azure-opslagaccount

Ondersteunde opslagbewerkingen

Blob Storage-modules in IoT Edge gebruiken de Azure Storage SDK's en zijn consistent met de 2017-04-17-versie van de Azure Storage-API voor blok-blob-eindpunten.

Omdat niet alle Azure Blob Storage-bewerkingen worden ondersteund door Azure Blob Storage in IoT Edge, wordt in deze sectie de status van elke bewerking vermeld.

Rekening

Ondersteund:

  • Containers weergeven

Unsupported:

  • Eigenschappen van blob-service ophalen en instellen
  • Voorbereidende blobaanvraag
  • Statistieken van blob-service ophalen
  • Accountgegevens ophalen

Containers

Ondersteund:

  • Container maken en verwijderen
  • Containereigenschappen en metagegevens ophalen
  • Blobs vermelden
  • Container-ACL ophalen en instellen
  • Metagegevens van container instellen

Unsupported:

  • Leasecontainer

Blobs

Ondersteund:

  • Blob plaatsen, ophalen en verwijderen
  • Blobeigenschappen ophalen en instellen
  • Blobmetagegevens ophalen en instellen

Unsupported:

  • Lease-blob
  • Momentopnameblob
  • Blob kopiëren en afbreken
  • Blob verwijderen ongedaan maken
  • Bloblaag instellen

Blok-blobs

Ondersteund:

  • Blok plaatsen
  • Blokkeringslijst plaatsen en ophalen

Unsupported:

  • Blok van URL plaatsen

Toevoeg-blobs

Ondersteund:

  • Toevoegblok

Unsupported:

  • Blok toevoegen vanuit URL

Event Grid in IoT Edge-integratie

Let op

De integratie met Event Grid in IoT Edge is in preview

Deze Azure Blob Storage in IoT Edge-module biedt nu integratie met Event Grid in IoT Edge. Zie de zelfstudie voor het implementeren van de modules, het publiceren van gebeurtenissen en het controleren van de levering van gebeurtenissen voor gedetailleerde informatie over deze integratie.

Opmerkingen bij de release

Hier volgen de releaseopmerkingen in docker Hub voor deze module. Mogelijk kunt u meer informatie vinden met betrekking tot bugfixes en herstel in de releaseopmerkingen van een specifieke versie.

Volgende stappen

Meer informatie over het implementeren van Azure Blob Storage in IoT Edge

Blijf up-to-date met recente updates en aankondigingen op de pagina met opmerkingen bij de release van Azure Blob Storage op IoT Edge.