Share via


Een Azure IoT-hub handmatig migreren met behulp van een Azure Resource Manager-sjabloon

Gebruik de Azure Portal, Azure Resource Manager-sjablonen en Azure IoT Hub service SDK's om een IoT-hub te migreren naar een nieuwe regio, een nieuwe laag of een nieuwe configuratie.

De stappen in dit artikel zijn handig als u het volgende wilt doen:

Als u een hub wilt migreren, hebt u een abonnement met beheerderstoegang tot de oorspronkelijke hub nodig. U kunt de nieuwe hub in een nieuwe resourcegroep en regio plaatsen, in hetzelfde abonnement als de oorspronkelijke hub of zelfs in een nieuw abonnement. U kunt niet dezelfde naam gebruiken, omdat de naam van de hub wereldwijd uniek moet zijn.

Automatische en handmatige migratiestappen vergelijken

Het resultaat van dit artikel is vergelijkbaar met Het automatisch migreren van een IoT-hub met behulp van de Azure CLI, maar met een ander proces. Bepaal voordat u begint welk proces geschikt is voor uw scenario.

  • Het handmatige proces (dit artikel):

    • Migreert uw apparaatregister en uw routerings- en eindpuntgegevens. U moet andere configuratiegegevens handmatig opnieuw maken in de nieuwe IoT-hub.
    • Is sneller voor het migreren van grote aantallen apparaten (bijvoorbeeld meer dan 100.000).
    • Maakt gebruik van een Azure Storage-account om het apparaatregister over te dragen.
    • Hiermee verwijdert u verbindingsreeksen voor routering en eindpunten voor het uploaden van bestanden vanuit de uitvoer van de ARM-sjabloon. U moet deze handmatig opnieuw toevoegen.
  • Het Azure CLI-proces:

    • Migreert uw apparaatregister, routerings- en eindpuntgegevens en andere configuratiegegevens, zoals IoT Edge implementaties of automatische configuraties voor apparaatbeheer.
    • Is eenvoudiger voor het migreren van kleine aantallen apparaten (bijvoorbeeld tot 10.000).
    • Hiervoor is geen Azure Storage-account vereist.
    • Verzamelt verbindingsreeksen voor routering en eindpunten voor het uploaden van bestanden en neemt deze op in de uitvoer van de ARM-sjabloon.

Aandachtspunten

Er zijn verschillende dingen die u moet overwegen voordat u een IoT-hub migreert.

  • Zorg ervoor dat alle functies die beschikbaar zijn op de oorspronkelijke locatie ook beschikbaar zijn op de nieuwe locatie. Sommige services zijn in preview en niet alle functies zijn overal beschikbaar.

  • Verwijder de oorspronkelijke resources niet voordat u de gemigreerde versie maakt en verifieert. Zodra u een hub verwijdert, is deze voor altijd verdwenen en is er geen manier om deze te herstellen om de instellingen of gegevens te controleren om ervoor te zorgen dat de hub correct wordt gerepliceerd.

  • Gegevens voor de oorspronkelijke IoT-hub worden niet gemigreerd. Deze gegevens omvatten apparaatberichten, C2D-opdrachten (cloud-naar-apparaat) en taakgerelateerde informatie, zoals planningen en geschiedenis. Metrische gegevens en logboekregistratieresultaten worden ook niet gemigreerd.

  • U moet downtime voor de migratie plannen. Het klonen van de apparaten naar de nieuwe hub kost tijd. Als u de methode Import/Export gebruikt, is uit benchmarktests gebleken dat het ongeveer twee uur kan duren om 500.000 apparaten te verplaatsen en vier uur om een miljoen apparaten te verplaatsen.

  • U kunt apparaten naar de nieuwe hub kopiëren zonder de apparaten af te sluiten of te wijzigen.

    • Als de apparaten oorspronkelijk zijn ingericht met DPS, werkt u de inschrijvingen bij zodat deze verwijzen naar de nieuwe IoT-hub. Vervolgens kunt u de apparaten opnieuw inrichten om de verbindingsgegevens bij te werken die op elk apparaat zijn opgeslagen.

    • Anders moet u de import-/exportmethode gebruiken om de apparaten te verplaatsen. Vervolgens moeten de apparaten worden gewijzigd om de nieuwe hub te kunnen gebruiken. U kunt bijvoorbeeld instellen dat uw apparaat de IoT Hub hostnaam uit de gewenste eigenschappen van de dubbel gebruikt. Het apparaat neemt deze IoT Hub hostnaam, koppel het apparaat los van de oude hub en verbind het opnieuw met de nieuwe hub.

  • U moet alle certificaten bijwerken, zodat u ze kunt gebruiken met de nieuwe resources. Bovendien hebt u de hub waarschijnlijk ergens in een DNS-tabel gedefinieerd en moet u die DNS-gegevens bijwerken.

Methodologie

Dit is de algemene methode die we aanbevelen voor het migreren van een IoT-hub.

  1. Exporteer de hub en de bijbehorende instellingen naar een Resource Manager-sjabloon.

  2. Breng de benodigde wijzigingen aan in de sjabloon, zoals het bijwerken van alle exemplaren van de naam en de locatie voor de gemigreerde hub. Voor alle resources in de sjabloon die wordt gebruikt voor berichtrouteringseindpunten, werkt u de sleutel in de sjabloon voor die resource bij.

  3. Importeer de sjabloon in een nieuwe resourcegroep op de nieuwe locatie. Met deze stap maakt u de nieuwe IoT-hub.

  4. Debug indien nodig.

  5. Voeg iets toe dat niet is geëxporteerd naar de sjabloon.

    Consumentengroepen worden bijvoorbeeld niet geëxporteerd naar de sjabloon. U moet de consumentengroepen handmatig toevoegen aan de sjabloon of de Azure Portal gebruiken nadat de hub is gemaakt.

  6. Kopieer de apparaten van de oorspronkelijke hub naar de nieuwe hub. Dit proces wordt behandeld in de sectie De apparaten beheren die zijn geregistreerd bij de IoT-hub.

Berichtroutering afhandelen

Als uw hub berichtroutering gebruikt, bevat het exporteren van de sjabloon voor de hub de routeringsconfiguratie, maar niet de resources zelf. Als u de IoT-hub naar een nieuwe regio migreert, moet u kiezen of u de routeringsresources ook naar de nieuwe locatie wilt verplaatsen of deze op hun plaats wilt laten en ze 'as is' wilt blijven gebruiken. Er kan een kleine prestatietreffer zijn van routeringsberichten naar eindpuntresources in een andere regio.

Als de hub berichtroutering gebruikt, hebt u twee opties.

  • Verplaats de resources die worden gebruikt voor de routeringseindpunten naar de nieuwe locatie.

    1. Maak de nieuwe resources zelf handmatig in de Azure Portal of met behulp van Resource Manager sjablonen.

    2. Wijzig de naam van alle resources wanneer u ze op de nieuwe locatie maakt, omdat ze wereldwijd unieke namen vereisen.

    3. Werk de resourcenamen en de resourcesleutels in de sjabloon van de nieuwe hub bij voordat u de nieuwe hub maakt. De resources moeten aanwezig zijn wanneer de nieuwe hub wordt gemaakt.

  • Verplaats de resources die worden gebruikt voor de routeringseindpunten niet. Gebruik ze 'op hun plaats'.

    1. In de stap waarin u de sjabloon bewerkt, moet u de sleutels voor elke routeringsresource ophalen en deze in de sjabloon plaatsen voordat u de nieuwe hub maakt.

    2. De hub verwijst nog steeds naar de oorspronkelijke routeringsresources en stuurt berichten naar deze resources zoals geconfigureerd. U krijgt een kleine prestatietreffer omdat de hub- en routeringseindpuntresources zich niet op dezelfde locatie bevinden.

De migratie van de hub naar een andere regio voorbereiden

Deze sectie bevat specifieke instructies voor het migreren van de hub.

De oorspronkelijke hub exporteren naar een resourcesjabloon

  1. Meld u aan bij de Azure-portal.

  2. Navigeer naar de IoT-hub die u wilt verplaatsen.

  3. Selecteer Sjabloon exporteren in de lijst met eigenschappen en instellingen voor de hub.

    Schermopname van de opdracht voor het exporteren van de sjabloon voor de IoT-hub.

  4. Selecteer Downloaden om de sjabloon te downloaden. Sla het bestand op een locatie op waar u het opnieuw kunt vinden.

    Schermopname van de opdracht voor het downloaden van de sjabloon voor de IoT-hub.

De sjabloon weergeven

Ga naar de gedownloade sjabloon, die zich in een zip-bestand bevindt. Pak het ZIP-bestand uit en zoek het bestand met de naam template.json.

Het volgende voorbeeld is voor een algemene hub zonder routeringsconfiguratie. Het is een hub in de S1-laag (met 1 eenheid) met de naam ContosoHub in regio westus:

{
    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "IotHubs_ContosoHub_connectionString": {
            "type": "SecureString"
        },
        "IotHubs_ContosoHub_containerName": {
            "type": "SecureString"
        },
        "IotHubs_ContosoHub_name": {
            "defaultValue": "ContosoHub",
            "type": "String"
        }
    },
    "variables": {},
    "resources": [
        {
            "type": "Microsoft.Devices/IotHubs",
            "apiVersion": "2021-07-01",
            "name": "[parameters('IotHubs_ContosoHub_name')]",
            "location": "westus",
            "sku": {
                "name": "S1",
                "tier": "Standard",
                "capacity": 1
            },
            "identity": {
                "type": "None"
            },
            "properties": {
                "ipFilterRules": [],
                "eventHubEndpoints": {
                    "events": {
                        "retentionTimeInDays": 1,
                        "partitionCount": 4
                    }
                },
                "routing": {
                    "endpoints": {
                        "serviceBusQueues": [],
                        "serviceBusTopics": [],
                        "eventHubs": [],
                        "storageContainers": []
                    },
                    "routes": [],
                    "fallbackRoute": {
                        "name": "$fallback",
                        "source": "DeviceMessages",
                        "condition": "true",
                        "endpointNames": [
                            "events"
                        ],
                        "isEnabled": true
                    }
                },
                "storageEndpoints": {
                    "$default": {
                        "sasTtlAsIso8601": "PT1H",
                        "connectionString": "[parameters('IotHubs_ContosoHub_connectionString')]",
                        "containerName": "[parameters('IotHubs_ContosoHub_containerName')]"
                    }
                },
                "messagingEndpoints": {
                    "fileNotifications": {
                        "lockDurationAsIso8601": "PT1M",
                        "ttlAsIso8601": "PT1H",
                        "maxDeliveryCount": 10
                    }
                },
                "enableFileUploadNotifications": false,
                "cloudToDevice": {
                    "maxDeliveryCount": 10,
                    "defaultTtlAsIso8601": "PT1H",
                    "feedback": {
                        "lockDurationAsIso8601": "PT1M",
                        "ttlAsIso8601": "PT1H",
                        "maxDeliveryCount": 10
                    }
                },
                "features": "None",
                "disableLocalAuth": false,
                "allowedFqdnList": []
            }
        }
    ]
}

De sjabloon bewerken

U moet enkele wijzigingen aanbrengen voordat u de sjabloon kunt gebruiken om de nieuwe hub in de nieuwe regio te maken. Gebruik Visual Studio Code of een teksteditor om de sjabloon te bewerken.

De naam en locatie van de hub bewerken

  1. Verwijder de sectie containernaamparameter bovenaan. ContosoHub heeft geen gekoppelde container.

    "parameters": {
      ...
        "IotHubs_ContosoHub_containerName": {
            "type": "SecureString"
        },
      ...
    },
    
  2. Verwijder de eigenschap storageEndpoints .

    "properties": {
      ...
        "storageEndpoints": {
        "$default": {
            "sasTtlAsIso8601": "PT1H",
            "connectionString": "[parameters('IotHubs_ContosoHub_connectionString')]",
            "containerName": "[parameters('IotHubs_ContosoHub_containerName')]"
        }
      },
      ...
    
    
  3. Als u de hub naar een nieuwe regio verplaatst, wijzigt u de locatie-eigenschap onder resources.

    "location": "westus",
    

De resources voor het routeringseindpunt bijwerken

Wanneer u de Resource Manager-sjabloon exporteert voor een hub waarvoor routering is geconfigureerd, ziet u dat de sleutels voor deze resources niet zijn opgegeven in de geëxporteerde sjabloon. Hun plaatsing wordt aangegeven met sterretjes. U moet deze invullen door naar die resources in de portal te gaan en de sleutels op te halen voordat u de sjabloon van de nieuwe hub importeert en de hub maakt.

Als u ook de routeringsresources hebt verplaatst, werkt u ook de naam, id en resourcegroep van elk eindpunt bij.

  1. Haal de vereiste sleutels op voor een van de routeringsresources en plaats deze in de sjabloon. U kunt de sleutel(en) ophalen uit de resource in de Azure Portal.

    • Als u bijvoorbeeld berichten routert naar een opslagcontainer, zoekt u het opslagaccount in de portal. Selecteer in de sectie Instellingen de optie Toegangssleutels en kopieer vervolgens een van de sleutels. De sleutel ziet er als volgt uit wanneer u de sjabloon voor het eerst exporteert:

      "connectionString": "DefaultEndpointsProtocol=https;
      AccountName=fabrikamstorage1234;AccountKey=****",
      "containerName": "fabrikamresults",
      

      Nadat u de accountsleutel voor het opslagaccount hebt opgehaald, plaatst u deze in de sjabloon in de AccountKey=**** component op de plaats van de sterretjes.

    • Haal voor Service Bus-wachtrijen de Gedeelde toegangssleutel op die overeenkomt met de SharedAccessKeyName. Dit is de sleutel en de SharedAccessKeyName in de json:

      "connectionString": "Endpoint=sb://fabrikamsbnamespace1234.servicebus.windows.net:5671/;
      SharedAccessKeyName=iothubroutes_FabrikamResources;
      SharedAccessKey=****;
      EntityPath=fabrikamsbqueue1234",
      
    • Hetzelfde geldt voor de Service Bus-onderwerpen en Event Hubs-verbindingen.

De nieuwe hub maken door de sjabloon te laden

Maak de nieuwe hub met behulp van de bewerkte sjabloon. Als u routeringsresources hebt die worden verplaatst, moeten de resources worden ingesteld op de nieuwe locatie en moeten de verwijzingen in de sjabloon worden bijgewerkt. Als u de routeringsresources niet verplaatst, moeten deze zich in de sjabloon met de bijgewerkte sleutels staan.

  1. Meld u aan bij de Azure-portal.

  2. Selecteer Een resource maken.

  3. Zoek en selecteer sjabloonimplementatie (implementeren met aangepaste sjablonen) in het zoekvak. Selecteer Maken op het scherm voor de sjabloonimplementatie.

  4. Selecteer op de pagina Aangepaste implementatiede optie Uw eigen sjabloon maken in de editor, zodat u uw sjabloon vanuit een bestand kunt uploaden.

    Schermopname van de opdracht voor het bouwen van uw eigen sjabloon.

  5. Selecteer Bestand laden.

    Schermopname van de opdracht voor het uploaden van een sjabloonbestand.

  6. Blader naar de nieuwe sjabloon die u hebt bewerkt, selecteer deze en selecteer vervolgens Openen. De sjabloon wordt geladen in het bewerkingsvenster. Selecteer Opslaan.

    Schermopname van het laden van de sjabloon.

  7. Vul de volgende velden in op de pagina aangepaste implementatie.

    Abonnement: selecteer het abonnement dat u wilt gebruiken.

    Resourcegroep: selecteer een bestaande resourcegroep of maak een nieuwe.

    Regio: als u een bestaande resourcegroep hebt geselecteerd, wordt de regio ingevuld zodat u overeenkomt met de locatie van de resourcegroep. Als u een nieuwe resourcegroep hebt gemaakt, is dit de locatie.

    Verbindingsreeks: vul de connection string voor uw hub in.

    Hubnaam: geef de nieuwe hub een naam.

    Schermopname van de aangepaste implementatiepagina

  8. Selecteer de knop Controleren en maken.

  9. Selecteer de knop Create (Maken). De portal valideert uw sjabloon en implementeert uw nieuwe hub. Als u routeringsconfiguratiegegevens hebt, worden deze opgenomen in de nieuwe hub, maar verwijst naar de resources op de vorige locatie.

    Schermopname van de uiteindelijke pagina voor aangepaste implementatie

De apparaten beheren die zijn geregistreerd bij de IoT-hub

Nu uw nieuwe hub actief is, moet u alle apparaten van de oorspronkelijke hub naar de nieuwe hub kopiëren.

Er zijn meerdere manieren om de apparaten te kopiëren. U hebt oorspronkelijk Device Provisioning Service (DPS) gebruikt om de apparaten in te richten of u hebt dit niet gedaan. Als u dat hebt gedaan, is dit proces niet moeilijk. Als u dat niet hebt gedaan, kan dit proces ingewikkeld zijn.

Als u DPS niet hebt gebruikt om uw apparaten in te richten, kunt u de volgende sectie overslaan en beginnen met Importeren/exporteren gebruiken om de apparaten naar de nieuwe hub te verplaatsen.

DPS gebruiken om de apparaten in de nieuwe hub opnieuw in te richten

Zie Apparaten opnieuw inrichten als u DPS wilt gebruiken om de apparaten naar de nieuwe locatie te verplaatsen. Wanneer u klaar bent, kunt u de apparaten in de Azure Portal bekijken en controleren of ze zich op de nieuwe locatie bevinden.

Ga naar de nieuwe hub met behulp van de Azure Portal. Selecteer uw hub en selecteer vervolgens IoT-apparaten. U ziet de apparaten die opnieuw zijn ingericht voor de nieuwe hub. U kunt ook de eigenschappen voor de nieuwe hub weergeven.

Als u routering hebt geïmplementeerd, test u en controleert u of uw berichten correct naar de resources worden doorgestuurd.

De wijzigingen terugdraaien na het gebruik van DPS

Als u de wijzigingen wilt terugdraaien, moet u de apparaten opnieuw inrichten van de nieuwe hub naar de oude hub.

U bent nu klaar met het migreren van uw hub en de bijbehorende apparaten. U kunt doorgaan naar Opschonen.

Import-export gebruiken om de apparaten naar de nieuwe hub te verplaatsen

De toepassing is gericht op .NET Core, zodat u deze kunt uitvoeren op Windows of Linux. U kunt het voorbeeld downloaden, uw verbindingsreeksen ophalen, de vlaggen instellen voor welke bits u wilt uitvoeren en uitvoeren. U kunt dit doen zonder de code ooit te openen.

Het voorbeeld downloaden

  1. Gebruik hier de IoT C#-voorbeelden: Azure IoT SDK voor C#. Download het zip-bestand en pak het uit op uw computer.

  2. De relevante code bevindt zich in ./iothub/service/samples/how to guides/ImportExportDevicesSample. U hoeft de code niet te bekijken of te bewerken om de toepassing uit te voeren.

  3. Als u de toepassing wilt uitvoeren, geeft u drie verbindingsreeksen en vijf opties op. U geeft deze gegevens door als opdrachtregelargumenten, gebruikt omgevingsvariabelen of gebruikt een combinatie van de twee. We geven de opties in door als opdrachtregelargumenten en de verbindingsreeksen als omgevingsvariabelen.

    De reden hiervoor is dat de verbindingsreeksen lang en onaangenaam zijn en waarschijnlijk niet kunnen worden gewijzigd, maar u kunt de opties wijzigen en de toepassing meer dan één keer uitvoeren. Als u de waarde van een omgevingsvariabele wilt wijzigen, moet u het opdrachtvenster en Visual Studio of Visual Studio Code sluiten, afhankelijk van wat u gebruikt.

Opties

Dit zijn de vijf opties die u opgeeft wanneer u de toepassing uitvoert:

  • addDevices (argument 1): stel deze optie in op True als u virtuele apparaten wilt toevoegen die voor u worden gegenereerd. Deze apparaten worden toegevoegd aan de bronhub. Stel ook numToAdd (argument 2) in om op te geven hoeveel apparaten u wilt toevoegen. Het maximum aantal apparaten dat u kunt registreren bij een hub is één miljoen. Het doel van deze optie is om te testen. U kunt een specifiek aantal apparaten genereren en deze vervolgens kopiëren naar een andere hub.

  • copyDevices (argument 3): stel deze optie in op True om de apparaten van de ene hub naar de andere te kopiëren.

  • deleteSourceDevices (argument 4): stel deze optie in op True om alle apparaten te verwijderen die zijn geregistreerd bij de bronhub. We raden u aan te wachten totdat u zeker weet dat alle apparaten zijn overgedragen voordat u dit uitvoert. Nadat u de apparaten hebt verwijderd, kunt u ze niet meer terughalen.

  • deleteDestDevices (argument 5): stel deze optie in op True om alle apparaten te verwijderen die zijn geregistreerd bij de doelhub. U kunt dit doen als u de apparaten meer dan één keer wilt kopiëren.

De basisopdracht is dotnet run, waarmee .NET wordt aangegeven dat het lokale csproj-bestand moet worden gebouwd en vervolgens moet worden uitgevoerd. U voegt de opdrachtregelargumenten toe aan het einde voordat u deze uitvoert.

De opdrachtregel ziet er als volgt uit:

    // Format: dotnet run add-devices num-to-add copy-devices delete-source-devices delete-destination-devices

    // Add 1000 devices, don't copy them to the other hub, or delete them. 
    // The first argument is true, numToAdd is 50, and the other arguments are false.
    dotnet run true 1000 false false false 

    // Copy the devices you just added to the other hub; don't delete anything.
    // The first argument is false, numToAdd is 0, copy-devices is true, and the delete arguments are both false
    dotnet run false 0 true false false 

Omgevingsvariabelen gebruiken voor de verbindingsreeksen

  1. Als u het voorbeeld wilt uitvoeren, hebt u de verbindingsreeksen nodig met de oude en nieuwe IoT-hubs en met een opslagaccount dat u kunt gebruiken voor tijdelijke werkbestanden. We slaan de waarden voor deze op in omgevingsvariabelen.

  2. Meld u aan bij de Azure Portal om de connection string waarden op te halen.

  3. Plaats de verbindingsreeksen ergens waar u ze kunt ophalen, zoals Kladblok. Als u het volgende kopieert, kunt u de verbindingsreeksen rechtstreeks in de locatie plakken. Voeg geen spaties toe rond het gelijkteken of de naam van de variabele wordt gewijzigd. U hebt ook geen dubbele aanhalingstekens nodig rond de verbindingsreeksen. Als u aanhalingstekens plaatst rond het opslagaccount connection string, mislukt het script.

    Stel de omgevingsvariabelen in Windows in:

    SET IOTHUB_CONN_STRING=<put connection string to original IoT hub here>
    SET DEST_IOTHUB_CONN_STRING=<put connection string to destination IoT hub here>
    SET STORAGE_ACCT_CONN_STRING=<put connection string to the storage account here>
    

    Stel de omgevingsvariabelen in Linux in:

    export IOTHUB_CONN_STRING="<put connection string to original IoT hub here>"
    export DEST_IOTHUB_CONN_STRING="<put connection string to destination IoT hub here>"
    export STORAGE_ACCT_CONN_STRING="<put connection string to the storage account here>"
    
  4. Voor de IoT Hub-verbindingsreeksen gaat u naar elke hub in de portal. U kunt in Resources zoeken naar de hub. Als u de resourcegroep kent, kunt u naar Resourcegroepen gaan, uw resourcegroep selecteren en vervolgens de hub selecteren in de lijst met assets in die resourcegroep.

  5. Selecteer Beleid voor gedeelde toegang in de instellingen voor de hub, selecteer vervolgens iothubowner en kopieer een van de verbindingsreeksen. Doe hetzelfde voor de doelhub. Voeg ze toe aan de juiste SET-opdrachten.

  6. Voor het opslagaccount connection string zoekt u het opslagaccount in Resources of onder de resourcegroep en opent u het.

  7. Selecteer in de sectie Instellingen de optie Toegangssleutels en kopieer een van de verbindingsreeksen. Plaats de connection string in uw tekstbestand voor de juiste SET-opdracht.

Nu hebt u de omgevingsvariabelen in een bestand met de SET-opdrachten en weet u wat uw opdrachtregelargumenten zijn. Laten we het voorbeeld uitvoeren.

De voorbeeldtoepassing uitvoeren en opdrachtregelargumenten gebruiken

  1. Open een opdrachtpromptvenster. Selecteer Windows en typ om command prompt het opdrachtpromptvenster te openen.

  2. Kopieer de opdrachten waarmee de omgevingsvariabelen worden ingesteld, een voor een, en plak deze in het opdrachtpromptvenster en selecteer Enter. Wanneer u klaar bent, typt SET u in het opdrachtpromptvenster om uw omgevingsvariabelen en hun waarden te zien. Nadat u deze naar het opdrachtpromptvenster hebt gekopieerd, hoeft u ze niet opnieuw te kopiëren, tenzij u een nieuw opdrachtpromptvenster opent.

  3. Wijzig in het opdrachtpromptvenster de mappen totdat u zich in ./ImportExportDevicesSample bevindt (waar het bestand ImportExportDevicesSample.csproj bestaat). Typ vervolgens het volgende en neem uw opdrachtregelargumenten op.

    // Format: dotnet run add-devices num-to-add copy-devices delete-source-devices delete-destination-devices
    dotnet run arg1 arg2 arg3 arg4 arg5
    

    Met de opdracht dotnet wordt de toepassing gebouwd en uitgevoerd. Omdat u de opties doorgeeft wanneer u de toepassing uitvoert, kunt u de waarden ervan wijzigen telkens wanneer u de toepassing uitvoert. U kunt het bijvoorbeeld één keer uitvoeren en nieuwe apparaten maken, vervolgens opnieuw uitvoeren en deze apparaten kopiëren naar een nieuwe hub, enzovoort. U kunt ook alle stappen in dezelfde uitvoering uitvoeren, hoewel het raadzaam is geen apparaten te verwijderen totdat u zeker weet dat u klaar bent met de migratie. Hier volgt een voorbeeld waarbij 1000 apparaten worden gemaakt en deze vervolgens naar de andere hub worden gekopieerd.

    // Format: dotnet run add-devices num-to-add copy-devices delete-source-devices delete-destination-devices
    
    // Add 1000 devices, don't copy them to the other hub or delete them. 
    dotnet run true 1000 false false false 
    
    // Do not add any devices. Copy the ones you just created to the other hub; don't delete anything.
    dotnet run false 0 true false false 
    

    Nadat u hebt gecontroleerd of de apparaten zijn gekopieerd, kunt u de apparaten als volgt uit de bronhub verwijderen:

    // Format: dotnet run add-devices num-to-add copy-devices delete-source-devices delete-destination-devices
    // Delete the devices from the source hub.
    dotnet run false 0 false true false 
    

De voorbeeldtoepassing uitvoeren met Visual Studio

  1. Als u de toepassing in Visual Studio wilt uitvoeren, wijzigt u de huidige map in de map waarin het bestand azureiot.sln zich bevindt. Voer vervolgens deze opdracht uit in het opdrachtpromptvenster om de oplossing in Visual Studio te openen. U moet dit doen in hetzelfde opdrachtvenster waarin u de omgevingsvariabelen instelt, zodat deze variabelen bekend zijn.

    azureiot.sln
    
  2. Klik met de rechtermuisknop op het project ImportExportDevicesSample en selecteer Instellen als opstartproject.

  3. Stel de variabelen boven aan Program.cs in de map ImportExportDevicesSample in voor de vijf opties.

    // Add randomly created devices to the source hub.
    private static bool addDevices = true;
    //If you ask to add devices, this will be the number added.
    private static int numToAdd = 0; 
    // Copy the devices from the source hub to the destination hub.
    private static bool copyDevices = false;
    // Delete all of the devices from the source hub. (It uses the IoTHubConnectionString).
    private static bool deleteSourceDevices = false;
    // Delete all of the devices from the destination hub. (Uses the DestIotHubConnectionString).
    private static bool deleteDestDevices = false;
    
  4. Selecteer F5 om de toepassing uit te voeren. Nadat de uitvoering is voltooid, kunt u de resultaten bekijken.

De resultaten bekijken

U kunt de apparaten in de Azure Portal bekijken en controleren of ze zich op de nieuwe locatie bevinden.

  1. Ga naar de nieuwe hub met behulp van de Azure Portal. Selecteer uw hub en selecteer vervolgens IoT-apparaten. U ziet de apparaten die u van de oude hub naar de nieuwe hub hebt gekopieerd. U kunt ook de eigenschappen voor de nieuwe hub weergeven.

  2. Controleer op import-/exportfouten door naar het Azure-opslagaccount in de Azure Portal te gaan en in de devicefiles container te zoeken naar de ImportErrors.log. Als dit bestand leeg is (de grootte is 0), zijn er geen fouten opgetreden. Als u hetzelfde apparaat meerdere keren probeert te importeren, wordt het apparaat de tweede keer geweigerd en wordt er een foutbericht aan het logboekbestand toegevoegd.

De wijzigingen doorvoeren

Op dit moment hebt u uw hub gekopieerd naar de nieuwe locatie en de apparaten naar de nieuwe hub gemigreerd. Nu moet u wijzigingen aanbrengen zodat de apparaten werken met de nieuwe hub.

Dit zijn de stappen die u moet uitvoeren om de wijzigingen door te voeren:

  • Werk elk apparaat bij om de hostnaam van de IoT Hub te wijzigen zodat de IoT Hub hostnaam naar de nieuwe hub verwijst. U moet dit doen met dezelfde methode die u hebt gebruikt toen u het apparaat voor het eerst inrichtte.

  • Wijzig alle toepassingen die naar de oude hub verwijzen, zodat deze verwijzen naar de nieuwe hub.

  • Nadat u klaar bent, moet de nieuwe hub actief zijn. De oude hub mag geen actieve apparaten hebben en de status Verbinding verbroken hebben.

De wijzigingen terugdraaien

Als u besluit om de wijzigingen terug te draaien, zijn dit de stappen die u moet uitvoeren:

  • Werk elk apparaat bij om de IoT Hub Hostnaam te wijzigen zodat deze verwijst naar de IoT Hub Hostnaam voor de oude hub. U moet dit doen met dezelfde methode die u hebt gebruikt toen u het apparaat voor het eerst inrichtte.

  • Wijzig alle toepassingen die naar de nieuwe hub verwijzen, zodat deze verwijzen naar de oude hub. Als u bijvoorbeeld Azure Analytics gebruikt, moet u mogelijk uw Azure Stream Analytics-invoer opnieuw configureren.

  • Verwijder de nieuwe hub.

  • Als u routeringsresources hebt, moet de configuratie op de oude hub nog steeds verwijzen naar de juiste routeringsconfiguratie en met deze resources werken nadat de hub opnieuw is opgestart.

De resultaten controleren

Als u de resultaten wilt controleren, wijzigt u de IoT-oplossing zodat deze verwijst naar uw hub op de nieuwe locatie en voert u deze uit. Met andere woorden, voer dezelfde acties uit met de nieuwe hub die u met de vorige hub hebt uitgevoerd en zorg ervoor dat deze correct werken.

Als u routering hebt geïmplementeerd, test u en controleert u of uw berichten correct naar de resources worden doorgestuurd.

Opschonen

Schoon het apparaat pas op als u zeker weet dat de nieuwe hub actief is en de apparaten correct werken. Zorg er ook voor dat u de routering test als u die functie gebruikt. Wanneer u klaar bent, schoont u de oude resources op door de volgende stappen uit te voeren:

  • Als u dat nog niet hebt gedaan, verwijdert u de oude hub. Hiermee worden alle actieve apparaten uit de hub verwijderd.

  • Als u routeringsresources hebt die u naar de nieuwe locatie hebt verplaatst, kunt u de oude routeringsresources verwijderen.

Volgende stappen

U hebt een IoT-hub gemigreerd naar een nieuwe hub in een nieuwe regio, compleet met de apparaten. Zie Bulksgewijs IoT Hub apparaatidentiteiten importeren en exporteren voor meer informatie over het uitvoeren van bulkbewerkingen op het identiteitsregister in een IoT-hub.