Exportera IoT-data till Blob Storage

I den här artikeln beskrivs hur du konfigurerar dataexport för att skicka data till Blob Storage-tjänsten.

Använd den här funktionen för att kontinuerligt exportera filtrerade och berikade IoT-data från ditt IoT Central-program. Dataexport överför ändringar i nära realtid till andra delar av molnlösningen för insikter, analyser och lagring med varma vägar.

Du kan till exempel:

  • Exportera kontinuerligt telemetri, egenskapsändringar, enhetsanslutning, enhetens livscykel, livscykel för enhetsmallar och granskningsloggdata i JSON-format nästan i realtid.
  • Filtrera dataströmmarna för att exportera data som matchar anpassade villkor.
  • Utöka dataströmmarna med anpassade värden och egenskapsvärden från enheten.
  • Transformera dataströmmarna för att ändra form och innehåll.

Dricks

När du aktiverar dataexport får du bara data från det ögonblicket och framåt. Om du vill behålla mer historiska data aktiverar du dataexport tidigt. Information om hur du exporterar data manuellt från tidpunkter då dataexporten stängdes av finns i Så här använder du REST-API:et för IoT Central för att fråga enheter.

Kommentar

I vissa fall kan det ta upp till 60 sekunder innan meddelandena exporteras. Den här tiden mäts från när IoT Central tar emot meddelandet från den underliggande IoT-hubben till när meddelandet levereras till målslutpunkten.

Förutsättningar

Om du vill använda dataexportfunktioner måste du ha behörigheten Dataexport .

Information om hur du hanterar dataexport med hjälp av REST-API :et för IoT Central finns i Så här använder du REST-API:et för IoT Central för att hantera dataexporter.

Konfigurera ett exportmål för Blob Storage

IoT Central exporterar data en gång per minut, där varje fil innehåller batchen med ändringar sedan föregående export. Exporterade data sparas i JSON-format. Standardsökvägarna till exporterade data i ditt lagringskonto är:

  • Telemetri: {container}/{app-id}/{partition_id}/{ÅÅÅ}/{MM}/{dd}/{hh}/{mm}/{filnamn}
  • Egenskapsändringar: {container}/{app-id}/{partition_id}/{ÅÅÅÅ}/{MM}/{dd}/{hh}/{mm}/{filnamn}

Om du vill bläddra bland de exporterade filerna i Azure Portal navigerar du till filen och väljer Redigera blob.

Anslutningsalternativ

Med Blob Storage-mål kan du konfigurera anslutningen med en anslutningssträng eller en hanterad identitet.

Dricks

Om Blob Storage-målet skyddas av en brandvägg måste du använda en hanterad identitet för att ansluta till den.

Hanterade identiteter är säkrare eftersom:

  • Du lagrar inte autentiseringsuppgifterna för resursen i en anslutningssträng i IoT Central-programmet.
  • Autentiseringsuppgifterna kopplas automatiskt till livslängden för ditt IoT Central-program.
  • Hanterade identiteter roterar automatiskt sina säkerhetsnycklar regelbundet.

IoT Central använder för närvarande systemtilldelade hanterade identiteter.

När du konfigurerar en hanterad identitet innehåller konfigurationen ett omfång och en roll:

  • Omfånget definierar var du kan använda den hanterade identiteten. Du kan till exempel använda en Azure-resursgrupp som omfång. I det här fallet måste både IoT Central-programmet och målet finnas i samma resursgrupp.
  • Rollen definierar vilka behörigheter IoT Central-programmet beviljas i måltjänsten. För att ett IoT Central-program till exempel ska kunna skicka data till en händelsehubb behöver den hanterade identiteten rolltilldelningen Azure Event Hubs Data Sender .

Följande video innehåller mer information om systemtilldelade hanterade identiteter:

Varning

Om du vill exportera till bloblagring ska du inte använda lagringskontodeltagaren enligt videon. Använd rollen Storage Blob Data Contributor i stället.

Skapa ett Azure Blob Storage-mål

Den här artikeln visar hur du skapar en hanterad identitet med hjälp av Azure CLI. Du kan också använda Azure Portal för att skapa en hanterad identitet.

Om du inte har ett befintligt Azure Storage-konto att exportera till kör du följande skript i Azure Cloud Shell bash-miljön. Skriptet skapar en resursgrupp, Ett Azure Storage-konto och en blobcontainer. Skriptet aktiverar sedan den hanterade identiteten för ditt IoT Central-program och tilldelar den roll som krävs för att få åtkomst till ditt lagringskonto:

# Replace the storage account name with your own unique value.
SA=yourstorageaccount$RANDOM

# Replace the IoT Central app name with the name of your
# IoT Central application.
CA=your-iot-central-app

CN=exportdata
RG=centralexportresources
LOCATION=eastus

az group create -n $RG --location $LOCATION
SAID=$(az storage account create --name $SA --resource-group $RG --location $LOCATION --sku Standard_LRS --query "id" --output tsv)
az storage container create --account-name $SA --resource-group $RG --name $CN

# This assumes your IoT Central application is in the 
# default `IOTC` resource group.
az iot central app identity assign --name $CA --resource-group IOTC --system-assigned
PI=$(az iot central app identity show --name $CA --resource-group IOTC --query "principalId" --output tsv)

az role assignment create --assignee $PI --role "Storage Blob Data Contributor" --scope $SAID

az role assignment list --assignee $PI --all -o table

echo "Endpoint URI: https://$SA.blob.core.windows.net/"
echo "Container: $CN"

Du kan lära dig mer om att skapa nya Azure Blob Storage-konton eller Azure Data Lake Storage v2-lagringskonton. Dataexport kan bara skriva data till lagringskonton som stöder blockblobar. I följande tabell visas de kända kompatibla lagringskontotyperna:

Prestandanivå Kontotyp
Standard Generell användning, V2
Standard Generell användning, V1
Standard Blobb-lagring
Premium Blockbloblagring

Information om hur du skyddar blobcontainern ytterligare och endast tillåter åtkomst från betrodda tjänster med hanterade identiteter finns i Exportera data till ett säkert mål i ett virtuellt Azure-nätverk.

Så här skapar du Blob Storage-målet i IoT Central på sidan Dataexport :

  1. Välj + Nytt mål.

  2. Välj Azure Blob Storage som måltyp.

  3. Välj Systemtilldelad hanterad identitet som auktoriseringstyp.

  4. Ange slutpunkts-URI:n för ditt lagringskonto och det skiftlägeskänsliga containernamnet. En slutpunkts-URI ser ut så här: https://contosowaste.blob.core.windows.net.

  5. Välj Spara.

Om du inte ser data som kommer till måltjänsten kan du läsa Felsöka problem med dataexporter från ditt Azure IoT Central-program.

Konfigurera en dataexport

Nu när du har ett mål att exportera dina data till konfigurerar du dataexport i ditt IoT Central-program:

  1. Logga in på ditt IoT Central-program.

  2. I den vänstra rutan väljer du Dataexport.

    Dricks

    Om du inte ser dataexport i den vänstra rutan har du inte behörighet att konfigurera dataexport i din app. Prata med en administratör för att konfigurera dataexport.

  3. Välj + Ny export.

  4. Ange ett visningsnamn för den nya exporten och kontrollera att dataexporten är Aktiverad.

  5. Välj vilken typ av data som ska exporteras. I följande tabell visas de dataexporttyper som stöds:

    Datatyp beskrivning Dataformat
    Telemetri Exportera telemetrimeddelanden från enheter nästan i realtid. Varje exporterat meddelande innehåller det fullständiga innehållet i det ursprungliga enhetsmeddelandet, normaliserat. Meddelandeformat för telemetri
    Egenskapsändringar Exportera ändringar av enhets- och molnegenskaper nästan i realtid. För skrivskyddade enhetsegenskaper exporteras ändringar av de rapporterade värdena. För skrivskyddade egenskaper exporteras både rapporterade och önskade värden. Meddelandeformat för egenskapsändring
    Enhetsanslutning Exportera enhetsanslutna och frånkopplade händelser. Meddelandeformat för enhetsanslutning
    Enhetens livscykel Exportera registrerade, borttagna, etablerade, aktiverade, inaktiverade, displayNameChanged- och deviceTemplateChanged-händelser. Enhetens livscykel ändrar meddelandeformat
    Livscykel för enhetsmall Exportera publicerade enhetsmalländringar, inklusive skapade, uppdaterade och borttagna. Meddelandeformat för ändring av meddelandeformat för enhetsmallens livscykel
    Granskningsloggar Loggar över användarinitierade uppdateringar av entiteter i programmet. Mer information finns i Använda granskningsloggar för att spåra aktivitet i ditt IoT Central-program Format för granskningsloggmeddelande
  6. Du kan också lägga till filter för att minska mängden data som exporteras. Det finns olika typer av filter för varje dataexporttyp:

    Typ av data Tillgängliga filter
    Telemetri
    • Filtrera efter enhetsnamn, enhets-ID, enhetsmall och om enheten simuleras
    • Filterströmmen får endast innehålla telemetri som uppfyller filtervillkoren
    • Filtrera dataström så att den endast innehåller telemetri från enheter med egenskaper som matchar filtervillkoren
    • Filtrera dataström så att den endast innehåller telemetri som har meddelandeegenskaper som uppfyller filtervillkoret. Meddelandeegenskaper (även kallade programegenskaper) skickas i en påse nyckel/värde-par på varje telemetrimeddelande. Om du vill skapa ett filter för meddelandeegenskap anger du den meddelandeegenskapsnyckel som du letar efter och anger ett villkor. Endast telemetrimeddelanden med egenskaper som matchar det angivna filtervillkoret exporteras. Läs mer om programegenskaper från IoT Hub-dokument
    Egenskapsändringar
    • Filtrera efter enhetsnamn, enhets-ID, enhetsmall och om enheten simuleras
    • Filterström för att endast innehålla egenskapsändringar som uppfyller filtervillkoren
    Enhetsanslutning
    • Filtrera efter enhetsnamn, enhets-ID, enhetsmall, organisationer och om enheten simuleras
    • Filtrera dataström så att den endast innehåller ändringar från enheter med egenskaper som matchar filtervillkoren
    Enhetens livscykel
    • Filtrera efter enhetsnamn, enhets-ID, enhetsmall och om enheten har etablerats, aktiverats eller simulerats
    • Filtrera dataström så att den endast innehåller ändringar från enheter med egenskaper som matchar filtervillkoren
    Livscykel för enhetsmall
    • Filtrera efter enhetsmall
    Granskningsloggar Ej tillämpligt
  7. Du kan också utöka exporterade meddelanden med extra nyckel/värde-parmetadata. Följande berikanden är tillgängliga för dataexporttyperna telemetri, egenskapsändringar, enhetsanslutning och enhetslivscykel:

    • Anpassad sträng: Lägger till en anpassad statisk sträng i varje meddelande. Ange valfri nyckel och ange valfritt strängvärde.
    • Egenskap som lägger till i varje meddelande:
      • Enhetsmetadata som enhetsnamn, enhetsmallnamn, aktiverat, organisationer, etablerade och simulerade.
      • Den aktuella enheten rapporterade egenskaps- eller molnegenskapsvärdet för varje meddelande. Om det exporterade meddelandet kommer från en enhet som inte har den angivna egenskapen får det exporterade meddelandet inte berikningen.

Konfigurera exportmålet:

  1. Välj + Mål för att lägga till ett mål som du redan har skapat eller välj Skapa ett nytt.

  2. Om du vill transformera dina data innan de exporteras väljer du + Transformera. Mer information finns i Transformera data i ditt IoT Central-program för export.

  3. Välj + Mål för att lägga till upp till fem mål för en enskild export.

  4. När du har konfigurerat exporten väljer du Spara. Efter några minuter visas dina data i dina mål.

Övervaka exporten

På sidan Dataexport i IoT Central kan du kontrollera statusen för dina exporter. Du kan också använda Azure Monitor för att se hur mycket data du exporterar och eventuella exportfel. Du kan komma åt export- och enhetshälsomått i diagram i Azure Portal med hjälp av REST-API:et, frågor i PowerShell eller Azure CLI. För närvarande kan du övervaka följande dataexportmått i Azure Monitor:

  • Antal meddelanden som ska exporteras innan filter tillämpas.
  • Antal meddelanden som passerar genom filter.
  • Antal meddelanden som har exporterats till mål.
  • Antal fel som hittades.

Mer information finns i Övervaka programmets hälsa.

Dataformat

I följande avsnitt beskrivs formaten för exporterade data:

Telemetriformat

Varje exporterat meddelande innehåller en normaliserad form av det fullständiga meddelandet som enheten skickade i meddelandetexten. Meddelandet är i JSON-format och kodat som UTF-8. Information i varje meddelande innehåller:

  • applicationId: ID för IoT Central-programmet.
  • messageSource: Källan för meddelandet – telemetry.
  • deviceId: ID för enheten som skickade telemetrimeddelandet.
  • schema: Namnet och versionen av nyttolastschemat.
  • templateId: ID för enhetsmallen som tilldelats enheten.
  • enqueuedTime: Den tidpunkt då IoT Central tog emot det här meddelandet.
  • enrichments: Alla berikningar som har konfigurerats vid exporten.
  • module: IoT Edge-modulen som skickade det här meddelandet. Det här fältet visas bara om meddelandet kom från en IoT Edge-modul.
  • component: Komponenten som skickade det här meddelandet. Det här fältet visas bara om funktionerna som skickades i meddelandet modellerades som en komponent i enhetsmallen
  • messageProperties: Andra egenskaper som enheten skickade med meddelandet. Dessa egenskaper kallas ibland för programegenskaper. Läs mer i IoT Hub-dokument.

För Blob Storage batchas och exporteras meddelanden en gång per minut.

I följande exempel visas ett exporterat telemetrimeddelande:


{
    "applicationId": "00001111-aaaa-2222-bbbb-3333cccc4444",
    "messageSource": "telemetry",
    "deviceId": "1vzb5ghlsg1",
    "schema": "default@v1",
    "templateId": "urn:qugj6vbw5:___qbj_27r",
    "enqueuedTime": "2020-08-05T22:26:55.455Z",
    "telemetry": {
        "Activity": "running",
        "BloodPressure": {
            "Diastolic": 7,
            "Systolic": 71
        },
        "BodyTemperature": 98.73447010562934,
        "HeartRate": 88,
        "HeartRateVariability": 17,
        "RespiratoryRate": 13
    },
    "enrichments": {
      "userSpecifiedKey": "sampleValue"
    },
    "module": "VitalsModule",
    "component": "DeviceComponent",
    "messageProperties": {
      "messageProp": "value"
    }
}

Meddelandeegenskaper

Telemetrimeddelanden har egenskaper för metadata och telemetrinyttolasten. Föregående kodfragment visar exempel på systemmeddelanden som deviceId och enqueuedTime. Mer information om systemmeddelandeegenskaper finns i Systemegenskaper för IoT Hub-meddelanden från enhet till moln.

Du kan lägga till egenskaper i telemetrimeddelanden om du behöver lägga till anpassade metadata i dina telemetrimeddelanden. Du måste till exempel lägga till en tidsstämpel när enheten skapar meddelandet.

Följande kodfragment visar hur du lägger iothub-creation-time-utc till egenskapen i meddelandet när du skapar den på enheten:

Viktigt!

Formatet för den här tidsstämpeln måste vara UTC utan tidszonsinformation. Är till exempel 2021-04-21T11:30:16Z giltigt, 2021-04-21T11:30:16-07:00 är ogiltigt.

async function sendTelemetry(deviceClient, index) {
  console.log('Sending telemetry message %d...', index);
  const msg = new Message(
    JSON.stringify(
      deviceTemperatureSensor.updateSensor().getCurrentTemperatureObject()
    )
  );
  msg.properties.add("iothub-creation-time-utc", new Date().toISOString());
  msg.contentType = 'application/json';
  msg.contentEncoding = 'utf-8';
  await deviceClient.sendEvent(msg);
}

Format för egenskapsändringar

Varje meddelande eller post representerar ändringar i enhets- och molnegenskaper. Informationen i det exporterade meddelandet innehåller:

  • applicationId: ID för IoT Central-programmet.
  • messageSource: Källan för meddelandet – properties.
  • messageType: Antingen cloudPropertyChange, devicePropertyDesiredChangeeller devicePropertyReportedChange.
  • deviceId: ID för enheten som skickade telemetrimeddelandet.
  • schema: Namnet och versionen av nyttolastschemat.
  • enqueuedTime: Den tidpunkt då IoT Central identifierade den här ändringen.
  • templateId: ID för enhetsmallen som tilldelats enheten.
  • properties: En matris med egenskaper som har ändrats, inklusive namnen på de egenskaper och värden som har ändrats. Komponent- och modulinformationen ingår om egenskapen modelleras inom en komponent eller en IoT Edge-modul.
  • enrichments: Alla berikningar som har konfigurerats vid exporten.

För Blob Storage batchas och exporteras meddelanden en gång per minut.

Följande kodfragment visar ett egenskapsändringsmeddelande som exporteras till Blob Storage:

{
    "applicationId": "11112222-bbbb-3333-cccc-4444dddd5555",
    "messageSource": "properties",
    "deviceId": "Pepjmh1Hcc",
    "enqueuedTime": "2023-03-02T10:35:39.281Z",
    "enrichments": {},
    "messageType": "devicePropertyReportedChange",
    "schema": "default@v1",
    "templateId": "dtmi:azureiot:ddzig4ascxz",
    "properties": [
        {
            "component": "device_info",
            "name": "swVersion",
            "value": "12"
        },
        {
            "component": "device_info",
            "name": "osName",
            "value": "Android"
        },
        {
            "component": "device_info",
            "name": "processorArchitecture",
            "value": "arm64-v8a"
        },
        {
            "component": "device_info",
            "name": "processorManufacturer",
            "value": "unknown"
        }
    ]
}

Format för enhetsanslutningsändringar

Varje meddelande eller post representerar en anslutningshändelse från en enda enhet. Informationen i det exporterade meddelandet innehåller:

  • applicationId: ID för IoT Central-programmet.
  • messageSource: Källan för meddelandet – deviceConnectivity.
  • messageType: Antingen connected eller disconnected.
  • deviceId: ID:t för enheten som ändrades.
  • schema: Namnet och versionen av nyttolastschemat.
  • templateId: ID för enhetsmallen som tilldelats enheten.
  • enqueuedTime: Den tidpunkt då den här ändringen inträffade i IoT Central.
  • enrichments: Alla berikningar som har konfigurerats vid exporten.

För Blob Storage batchas och exporteras meddelanden en gång per minut.

I följande exempel visas ett meddelande om exporterad enhetsanslutning som tagits emot i Azure Blob Storage.

{
  "applicationId": "00001111-aaaa-2222-bbbb-3333cccc4444",
  "messageSource": "deviceConnectivity",
  "messageType": "connected",
  "deviceId": "1vzb5ghlsg1",
  "schema": "default@v1",
  "templateId": "urn:qugj6vbw5:___qbj_27r",
  "enqueuedTime": "2021-04-05T22:26:55.455Z",
  "enrichments": {
    "userSpecifiedKey": "sampleValue"
  }
}

Ändra format för enhetens livscykel

Varje meddelande eller post representerar en ändring av en enskild enhet. Informationen i det exporterade meddelandet innehåller:

  • applicationId: ID för IoT Central-programmet.
  • messageSource: Källan för meddelandet – deviceLifecycle.
  • messageType: Den typ av ändring som inträffade. En av: registered, deleted, provisioned, enabled, disabled, displayNameChangedoch deviceTemplateChanged.
  • deviceId: ID:t för enheten som ändrades.
  • schema: Namnet och versionen av nyttolastschemat.
  • templateId: ID för enhetsmallen som tilldelats enheten.
  • enqueuedTime: Den tidpunkt då den här ändringen inträffade i IoT Central.
  • enrichments: Alla berikningar som har konfigurerats vid exporten.

För Blob Storage batchas och exporteras meddelanden en gång per minut.

I följande exempel visas ett exporterat meddelande om enhetens livscykel som tagits emot i Azure Blob Storage.

{
  "applicationId": "00001111-aaaa-2222-bbbb-3333cccc4444",
  "messageSource": "deviceLifecycle",
  "messageType": "registered",
  "deviceId": "1vzb5ghlsg1",
  "schema": "default@v1",
  "templateId": "urn:qugj6vbw5:___qbj_27r",
  "enqueuedTime": "2021-01-01T22:26:55.455Z",
  "enrichments": {
    "userSpecifiedKey": "sampleValue"
  }
}

Ändringsformat för enhetsmallens livscykel

Varje meddelande eller post representerar en ändring i en enda publicerad enhetsmall. Informationen i det exporterade meddelandet innehåller:

  • applicationId: ID för IoT Central-programmet.
  • messageSource: Källan för meddelandet – deviceTemplateLifecycle.
  • messageType: Antingen created, updatedeller deleted.
  • schema: Namnet och versionen av nyttolastschemat.
  • templateId: ID för enhetsmallen som tilldelats enheten.
  • enqueuedTime: Den tidpunkt då den här ändringen inträffade i IoT Central.
  • enrichments: Alla berikningar som har konfigurerats vid exporten.

För Blob Storage batchas och exporteras meddelanden en gång per minut.

I följande exempel visas ett exporterat meddelande om enhetens livscykel som tagits emot i Azure Blob Storage.

{
  "applicationId": "00001111-aaaa-2222-bbbb-3333cccc4444",
  "messageSource": "deviceTemplateLifecycle",
  "messageType": "created",
  "schema": "default@v1",
  "templateId": "urn:qugj6vbw5:___qbj_27r",
  "enqueuedTime": "2021-01-01T22:26:55.455Z",
  "enrichments": {
    "userSpecifiedKey": "sampleValue"
  }
}

Format för granskningsloggar

Varje granskningsloggmeddelande representerar en användarinitierad ändring av en granskningsbar entitet i IoT Central-programmet. Informationen i det exporterade meddelandet innehåller:

  • actor: Information om användaren som ändrade entiteten.
  • applicationId: ID för IoT Central-programmet.
  • messageSource: Källan för meddelandet – audit.
  • messageType: Den typ av ändring som inträffade. En av: updated, created, deleted.
  • updated: Presentera endast om messageType är updated. Innehåller mer information om uppdateringen.
  • resource: Information om den ändrade entiteten.
  • schema: Namnet och versionen av nyttolastschemat.
  • deviceId: ID:t för enheten som ändrades.
  • enqueuedTime: Den tidpunkt då den här ändringen inträffade i IoT Central.
  • enrichments: Alla berikningar som har konfigurerats vid exporten.

I följande exempel visas ett exporterat granskningsloggmeddelande som tagits emot i Azure Blob Storage:

{
  "actor": {
    "id": "test-audit",
    "type": "apiToken"
    },
  "applicationId": "22223333-cccc-4444-dddd-5555eeee6666",
  "enqueuedTime": "2022-07-25T21:54:40.000Z",
  "enrichments": {},
  "messageSource": "audit",
  "messageType": "created",
  "resource": {
    "displayName": "Sensor 1",
    "id": "sensor",
    "type": "device"    
  },
  "schema": "default@v1"
}

Nästa steg

Nu när du vet hur du exporterar till Blob Storage är ett föreslaget nästa steg att lära dig Exportera till Service Bus.