Distribuera Azure Blob Storage i IoT Edge-modulen till din enhet
Gäller för: IoT Edge 1.5 IoT Edge 1.4
Viktigt!
IoT Edge 1.5 LTS är den version som stöds. IoT Edge 1.4 LTS upphör från och med den 12 november 2024. Om du har en tidigare version läser du Uppdatera IoT Edge.
Det finns flera sätt att distribuera moduler till en IoT Edge-enhet och alla fungerar för Azure Blob Storage på IoT Edge-moduler. De två enklaste metoderna är att använda mallarna Azure Portal eller Visual Studio Code.
Förutsättningar
En IoT-hubb i din Azure-prenumeration.
En IoT Edge-enhet.
Om du inte har konfigurerat en IoT Edge-enhet kan du skapa en på en virtuell Azure-dator. Följ stegen i någon av snabbstartsartiklarna för att skapa en virtuell Linux-enhet eller Skapa en virtuell Windows-enhet.
Azure IoT Edge-tillägg . Azure IoT Edge-verktygen för Visual Studio Code-tillägget är i underhållsläge.
Azure IoT Hub-tillägget om du distribuerar från Visual Studio Code.
Distribuera från Azure Portal
Azure Portal vägleder dig genom att skapa ett distributionsmanifest och push-överföra distributionen till en IoT Edge-enhet.
Välj din enhet
- Logga in på Azure Portal och gå till din IoT-hubb.
- Välj Enheter under menyn Enhetshantering .
- Välj IoT Edge-målenheten i listan.
- Välj Ange moduler.
Konfigurera ett distributionsmanifest
Ett distributionsmanifest är ett JSON-dokument som beskriver vilka moduler som ska distribueras, hur data flödar mellan modulerna och önskade egenskaper för modultvillingarna. Azure Portal har en guide som vägleder dig genom att skapa ett distributionsmanifest. Den har tre steg ordnade i flikar: Moduler, Vägar och Granska + Skapa.
Lägga till moduler
I avsnittet IoT Edge-moduler på sidan väljer du listrutan Lägg till och väljer IoT Edge-modul för att visa sidan Lägg till IoT Edge-modul.
På fliken Inställningar anger du ett namn för modulen och anger sedan containeravbildningens URI:
- IoT Edge-modulnamn:
azureblobstorageoniotedge
- Bild-URI:
mcr.microsoft.com/azure-blob-storage:latest
Välj inte Lägg till förrän du har angett värden på flikarna Modulinställningar, Alternativ för containerskapande och Modultvilling enligt beskrivningen i den här proceduren.
Viktigt!
Azure IoT Edge är skiftlägeskänsligt när du gör anrop till moduler, och Storage SDK är också som standard gemener. Genom att ändra namnet till gemener ser du till att dina anslutningar till Azure Blob Storage på IoT Edge-modulen inte avbryts.
- IoT Edge-modulnamn:
Öppna fliken Alternativ för att skapa container.
Kopiera och klistra in följande JSON i rutan för att ange information om lagringskontot och en montering för lagringen på enheten.
{ "Env":[ "LOCAL_STORAGE_ACCOUNT_NAME=<local storage account name>", "LOCAL_STORAGE_ACCOUNT_KEY=<local storage account key>" ], "HostConfig":{ "Binds":[ "<mount>" ], "PortBindings":{ "11002/tcp":[{"HostPort":"11002"}] } } }
Uppdatera JSON som du kopierade till Alternativ för att skapa containrar med följande information:
Ersätt
<local storage account name>
med ett namn som du kan komma ihåg. Kontonamnen ska vara mellan 3 och 24 tecken långa, med gemener och siffror. Inga blanksteg.Ersätt
<local storage account key>
med en 64-bytes base64-nyckel. Du kan generera en nyckel med verktyg som GeneratePlus. Du använder dessa autentiseringsuppgifter för att komma åt bloblagringen från andra moduler.Ersätt
<mount>
enligt containeroperativsystemet. Ange namnet på en volym eller den absoluta sökvägen till en befintlig katalog på din IoT Edge-enhet där blobmodulen lagrar sina data. Lagringsmonteringen mappar en plats på enheten som du anger till en angivet plats i modulen.
För Linux-containrar är <formatet din lagringssökväg eller volym>:/blobroot. Till exempel:
- Använd volymmontering:
my-volume:/blobroot
- Använd bindningsmontering:
/srv/containerdata:/blobroot
. Följ stegen för att bevilja katalogåtkomst till containeranvändaren
Viktigt!
Ändra inte den andra halvan av lagringsmonteringsvärdet, som pekar på en specifik plats i Blob Storage på IoT Edge-modulen. Lagringsmonteringen måste alltid sluta med :/blobroot för Linux-containrar.
IoT Edge tar inte bort volymer som är anslutna till modulcontainrar. Det här beteendet är avsiktligt eftersom det gör att data kan bevaras mellan containerinstanser, till exempel uppgraderingsscenarier. Men om dessa volymer lämnas oanvända kan det leda till diskutrymmesöverbelastning och systemfel. Om du använder docker-volymer i ditt scenario rekommenderar vi att du använder docker-verktyg som docker-volymrensning och dockervolym rm för att ta bort de oanvända volymerna, särskilt för produktionsscenarier.
På fliken Inställningar för modultvilling kopierar du följande JSON och klistrar in den i rutan.
{ "deviceAutoDeleteProperties": { "deleteOn": <true, false>, "deleteAfterMinutes": <timeToLiveInMinutes>, "retainWhileUploading": <true,false> }, "deviceToCloudUploadProperties": { "uploadOn": <true, false>, "uploadOrder": "<NewestFirst, OldestFirst>", "cloudStorageConnectionString": "DefaultEndpointsProtocol=https;AccountName=<your Azure Storage Account Name>;AccountKey=<your Azure Storage Account Key>; EndpointSuffix=<your end point suffix>", "storageContainersForUpload": { "<source container name1>": { "target": "<your-target-container-name>" } }, "deleteAfterUpload": <true,false> } }
Konfigurera varje egenskap med ett lämpligt värde, enligt platshållarna. Om du använder IoT Edge-simulatorn anger du värdena till relaterade miljövariabler för dessa egenskaper enligt beskrivningen av deviceToCloudUploadProperties och deviceAutoDeleteProperties.
Dricks
Namnet på containern
target
har namngivningsbegränsningar, till exempel stöds inte användning av ett$
prefix. Om du vill se alla begränsningar kan du visa Containernamn.Kommentar
Om ditt containermål är namnlöst eller null inom
storageContainersForUpload
tilldelas ett standardnamn till målet. Om du vill sluta ladda upp till en container måste den tas bort helt frånstorageContainersForUpload
. Mer information finns ideviceToCloudUploadProperties
avsnittet Lagra data vid gränsen med Azure Blob Storage på IoT Edge.Information om hur du konfigurerar deviceToCloudUploadProperties och deviceAutoDeleteProperties när modulen har distribuerats finns i Redigera modultvillingen. Mer information om önskade egenskaper finns i Definiera eller uppdatera önskade egenskaper.
Markera Lägga till.
Välj Nästa: Vägar för att fortsätta till avsnittet vägar.
Ange vägar
Behåll standardvägarna och välj Nästa: Granska + skapa för att fortsätta till granskningsavsnittet.
Granska distribution
Granskningsavsnittet visar JSON-distributionsmanifestet som skapades baserat på dina val i de föregående två avsnitten. Det finns också två moduler som du inte har lagt till: $edgeAgent och $edgeHub. Dessa två moduler utgör IoT Edge-körningen och krävs som standard i varje distribution.
Granska distributionsinformationen och välj sedan Skapa.
Verifiera distributionen
När du har skapat distributionen återgår du till sidan Enheter i din IoT-hubb.
- Välj den IoT Edge-enhet som du riktade in dig på med distributionen för att öppna dess information.
- I enhetsinformationen kontrollerar du att bloblagringsmodulen visas som både Angiven i distribution och Rapporterad av enhet.
Det kan ta en stund innan modulen startas på enheten och sedan rapporteras tillbaka till IoT Hub. Uppdatera sidan för att se en uppdaterad status.
Distribuera från Visual Studio Code
Azure IoT Edge innehåller mallar i Visual Studio Code som hjälper dig att utveckla gränslösningar. Använd följande steg för att skapa en ny IoT Edge-lösning med en bloblagringsmodul och konfigurera distributionsmanifestet.
Viktigt!
Azure IoT Edge Visual Studio Code-tillägget är i underhållsläge.
Välj Visa>kommandopalett.
Skriv och kör kommandot Azure IoT Edge: New IoT Edge solution (Ny IoT Edge-lösning) på kommandopaletten.
Skapa lösningen genom att följ anvisningarna på kommandopaletten.
Fält Värde Välj mapp Välj platsen på utvecklingsdatorn för Visual Studio Code för att skapa lösningsfilerna. Ange ett namn på lösningen Ange ett beskrivande namn för lösningen eller acceptera standardnamnet EdgeSolution. Välj modulmall Välj Befintlig modul (Ange fullständig bild-URL). Ange ett modulnamn Ange ett helt gemener för modulen, till exempel azureblobstorageoniotedge.
Det är viktigt att använda ett gemener för Azure Blob Storage på IoT Edge-modulen. IoT Edge är skiftlägeskänsligt när du refererar till moduler, och Storage SDK är som standard gemener.Ange Docker-avbildning för modulen Ange avbildningens URI: mcr.microsoft.com/azure-blob-storage:latest Visual Studio Code tar den information du angav, skapar en IoT Edge-lösning och läser sedan in den i ett nytt fönster. Lösningsmallen skapar en mall för distributionsmanifest som innehåller avbildningen av bloblagringsmodulen, men du måste konfigurera modulens alternativ för att skapa.
Öppna deployment.template.json i din nya lösningsarbetsyta och leta reda på avsnittet moduler . Gör följande konfigurationsändringar:
Kopiera och klistra in följande kod i fältet
createOptions
för bloblagringsmodulen:```json "Env":[ "LOCAL_STORAGE_ACCOUNT_NAME=<local storage account name>", "LOCAL_STORAGE_ACCOUNT_KEY=<local storage account key>" ], "HostConfig":{ "Binds": ["<mount>"], "PortBindings":{ "11002/tcp": [{"HostPort":"11002"}] } }
Ersätt
<local storage account name>
med ett namn som du kan komma ihåg. Kontonamnen ska vara mellan 3 och 24 tecken långa, med gemener och siffror. Inga blanksteg.Ersätt
<local storage account key>
med en 64-bytes base64-nyckel. Du kan generera en nyckel med verktyg som GeneratePlus. Du använder dessa autentiseringsuppgifter för att komma åt bloblagringen från andra moduler.Ersätt
<mount>
enligt containeroperativsystemet. Ange namnet på en volym eller den absoluta sökvägen till en katalog på din IoT Edge-enhet där du vill att blobmodulen ska lagra sina data. Lagringsmonteringen mappar en plats på enheten som du anger till en angivet plats i modulen.För Linux-containrar är <formatet din lagringssökväg eller volym>:/blobroot. Till exempel:
- Använd volymmontering:
my-volume:/blobroot
- Använd bindningsmontering:
/srv/containerdata:/blobroot
. Följ stegen för att bevilja katalogåtkomst till containeranvändaren
Viktigt!
Ändra inte den andra halvan av lagringsmonteringsvärdet, som pekar på en specifik plats i Blob Storage på IoT Edge-modulen. Lagringsmonteringen måste alltid sluta med :/blobroot för Linux-containrar.
IoT Edge tar inte bort volymer som är anslutna till modulcontainrar. Det här beteendet är avsiktligt eftersom det gör att data kan bevaras mellan containerinstanser, till exempel uppgraderingsscenarier. Men om dessa volymer lämnas oanvända kan det leda till diskutrymmesöverbelastning och systemfel. Om du använder docker-volymer i ditt scenario rekommenderar vi att du använder docker-verktyg som docker-volymrensning och dockervolym rm för att ta bort de oanvända volymerna, särskilt för produktionsscenarier.
- Använd volymmontering:
Konfigurera deviceToCloudUploadProperties och deviceAutoDeleteProperties för din modul genom att lägga till följande JSON i deployment.template.json-filen. Konfigurera varje egenskap med ett lämpligt värde och spara filen. Om du använder IoT Edge-simulatorn anger du värdena till relaterade miljövariabler för dessa egenskaper, som du hittar i förklaringsavsnittet i deviceToCloudUploadProperties och deviceAutoDeleteProperties
"<your azureblobstorageoniotedge module name>":{ "properties.desired": { "deviceAutoDeleteProperties": { "deleteOn": <true, false>, "deleteAfterMinutes": <timeToLiveInMinutes>, "retainWhileUploading": <true, false> }, "deviceToCloudUploadProperties": { "uploadOn": <true, false>, "uploadOrder": "<NewestFirst, OldestFirst>", "cloudStorageConnectionString": "DefaultEndpointsProtocol=https;AccountName=<your Azure Storage Account Name>;AccountKey=<your Azure Storage Account Key>;EndpointSuffix=<your end point suffix>", "storageContainersForUpload": { "<source container name1>": { "target": "<target container name1>" } }, "deleteAfterUpload": <true, false> } } }
Information om hur du konfigurerar deviceToCloudUploadProperties och deviceAutoDeleteProperties när modulen har distribuerats finns i Redigera modultvillingen. Mer information om alternativ för att skapa containrar, omstartsprincip och önskad status finns i Önskade egenskaper för EdgeAgent.
Spara filen deployment.template.json.
Högerklicka på deployment.template.json och välj Generera IoT Edge-distributionsmanifest.
Visual Studio Code tar den information som du angav i deployment.template.json och använder den för att skapa en ny distributionsmanifestfil. Distributionsmanifestet skapas i en ny konfigurationsmapp på lösningsarbetsytan. När du har filen kan du följa stegen i Distribuera Azure IoT Edge-moduler med Azure CLI 2.0.
Distribuera flera modulinstanser
Om du vill distribuera flera instanser av Azure Blob Storage på IoT Edge-modulen måste du ange en annan lagringssökväg och ändra värdet HostPort
som modulen binder till. Bloblagringsmodulerna exponerar alltid port 11002 i containern, men du kan deklarera vilken port den är bunden till på värden.
Redigera alternativ för att skapa containrar (i Azure Portal) eller fältet createOptions (i filen deployment.template.json i Visual Studio Code) för att ändra HostPort
värdet:
"PortBindings":{
"11002/tcp": [{"HostPort":"<port number>"}]
}
När du ansluter till ytterligare bloblagringsmoduler ändrar du slutpunkten så att den pekar på den uppdaterade värdporten.
Konfigurera proxyinställningar
Om din organisation använder en proxyserver måste du konfigurera proxystöd för edgeAgent- och edgeHub-runtime-modulerna. Den här processen omfattar två uppgifter:
- Konfigurera körningsdaemonerna och IoT Edge-agenten på enheten.
- Ange HTTPS_PROXY miljövariabeln för moduler i JSON-filen för distributionsmanifestet.
Den här processen beskrivs i Konfigurera en IoT Edge-enhet för kommunikation via en proxyserver.
Dessutom kräver en bloblagringsmodul även inställningen HTTPS_PROXY i manifestdistributionsfilen. Du kan redigera distributionsmanifestfilen direkt eller använda Azure Portal.
Gå till din IoT Hub i Azure Portal och välj Enheter under menyn Enhetshantering
Välj den enhet med modulen som ska konfigureras.
Välj Ange moduler.
I avsnittet IoT Edge-moduler på sidan väljer du bloblagringsmodulen.
På sidan Uppdatera IoT Edge-modul väljer du fliken Miljövariabler .
Lägg till
HTTPS_PROXY
för Namnet och proxy-URL:en för värdet.Välj Uppdatera och sedan Granska + Skapa.
Se proxyn läggs till i modulen i distributionsmanifestet och välj Skapa.
Kontrollera inställningen genom att välja modulen på sidan med enhetsinformation och välj fliken Miljövariabler på den nedre delen av sidan Information om IoT Edge-moduler.
Nästa steg
Läs mer om Azure Blob Storage på IoT Edge.
Mer information om hur distributionsmanifest fungerar och hur du skapar dem finns i Förstå hur IoT Edge-moduler kan användas, konfigureras och återanvändas.