Como migrar um Hub IoT do Azure manualmente usando um modelo do Azure Resource Manager

Use o portal do Azure, modelos do Azure Resource Manager e SDKs de serviço do Hub IoT do Azure para migrar um hub IoT para uma nova região, um novo nível ou uma nova configuração.

As etapas incluídas neste artigo serão úteis se você quiser:

Para migrar um hub, você precisa de uma assinatura com acesso de administrador ao hub original. Você pode colocar o novo hub em um novo grupo de recursos e um anova região, na mesma assinatura do hub original ou, até mesmo, em uma nova assinatura. Não é possível simplesmente usar o mesmo nome, porque o nome do hub deve ser globalmente exclusivo.

Comparar as etapas da migração automática e manual

O resultado deste artigo é semelhante ao do artigo Como migrar um Hub IoT automaticamente usando a CLI do Azure, mas com um processo diferente. Antes de começar, decida qual é o processo correto para a sua situação.

  • O processo manual (este artigo):

    • Migra o registro do dispositivo e suas informações de roteamento e ponto de extremidade. Você precisa recriar manualmente outros detalhes da configuração no novo hub IoT.
    • É mais rápido para migrar um grande número de dispositivos (por exemplo, mais de 100.000).
    • Usa uma conta de Armazenamento do Azure para transferir o registro do dispositivo.
    • Remove cadeias de conexão para o roteamento e pontos de extremidade de upload do arquivo da saída do modelo do ARM e você precisa adicioná-las de volta manualmente.
  • O processo da CLI do Azure:

    • Migra seu registro de dispositivo, suas informações de roteamento e ponto de extremidade e outros detalhes de configuração, como implantações da IoT Edge ou configurações do gerenciamento automático de dispositivos.
    • É mais fácil para migrar um número pequeno de dispositivos (por exemplo, até 10 mil).
    • Não requer uma conta de Armazenamento do Azure.
    • Coleta cadeias de conexão para o roteamento e pontos de extremidade de upload de arquivo e as inclui na saída do modelo do ARM.

Itens a serem considerados

Há vários fatores a serem considerados antes de migrar um Hub IoT.

  • Verifique se todos os recursos disponíveis na localização original também estão disponíveis na nova localização. Alguns serviços estão em versão prévia, e nem todos os recursos estão disponíveis em todos os lugares.

  • Não remova os recursos originais antes de criar e verificar a versão migrada. Quando você remove um hub, ele desaparece para sempre e não há como recuperá-lo para verificar as configurações ou os dados a fim de garantir que o hub seja replicado corretamente.

  • Os dados do hub IoT original não são migrados. Esses dados incluem mensagens de dispositivo, comandos C2D (nuvem para dispositivo) e informações relacionadas ao trabalho, como agendamentos e histórico. As métricas e os resultados de log também não são migrados.

  • É preciso agendar o tempo de inatividade para a migração. A clonagem dos dispositivos para o novo hub leva tempo. Se você usar o método de Importação/Exportação, os testes de parâmetro de comparação revelaram que pode levar cerca de duas horas para migrar 500 mil dispositivos e quatro horas para migrar um milhão de dispositivos.

  • Você pode copiar os dispositivos para o novo hub sem desligar nem alterar os dispositivos.

    • Se os dispositivos foram provisionados originalmente usando o DPS, atualize os respectivos registros de modo que apontem para o novo Hub IoT. A seguir, reprovisione os dispositivos para atualizar as informações de conexão armazenadas em cada dispositivo.

    • Caso contrário, você precisará usar o método de importação/exportação para transferir os dispositivos e, a seguir, os dispositivos precisarão ser modificados para usar o novo hub. Por exemplo, você pode configurar seu dispositivo para consumir o nome do host do Hub IoT nas propriedades desejadas do gêmeo. O dispositivo irá adotar o nome do host desse Hub IoT; desconecte o dispositivo do hub antigo e o reconecte ao hub novo.

  • Será necessário atualizar todos os certificados que estiver usando para usá-los com os novos recursos. Além disso, você provavelmente tem o hub definido em uma tabela DNS em algum lugar e será necessário atualizar essas informações de DNS.

Metodologia

Esse é o método geral que recomendamos para migrar um Hub IoT.

  1. Exporte o hub e as respectivas configurações para um modelo do Resource Manager.

  2. Faça as alterações necessárias no modelo, como atualizar todas as ocorrências do nome e a localização do hub migrado. Para todos os recursos no modelo usado para pontos de extremidade de roteamento de mensagens, atualize a chave no modelo para esse recurso.

  3. Importe o modelo para um novo grupo de recursos na nova localização. Essa etapa cria o novo Hub de IoT.

  4. Depure-o, conforme necessário.

  5. Adicione qualquer coisa que não tenha sido exportada para o modelo.

    Por exemplo, os grupos de consumidores não são exportados para o modelo. Você precisará adicionar os grupos de consumidores ao modelo manualmente ou usar o portal do Azure depois que o hub for criado.

  6. Copie os dispositivos do hub original para o novo hub. Esse processo é abordado na seção Gerenciar os dispositivos registrados no Hub IoT.

Como tratar o roteamento de mensagens

Se o hub usar roteamento de mensagem, a exportação do modelo para o hub incluirá a configuração de roteamento, mas não incluirá os próprios recursos. Se estiver migrando o Hub IoT para uma nova região, você precisa decidir se também deseja migrar os recursos de roteamento para o novo local ou prefere deixá-los no lugar e continuar a usá-los "como estão". Pode haver um pequeno impacto no desempenho de mensagens de roteamento para recursos de ponto de extremidade em outra região.

Se o hub usar o roteamento de mensagens, você terá duas opções.

  • Mover os recursos usados para os pontos de extremidade de roteamento para a nova localização.

    1. Crie os novos recursos manualmente no portal do Azure ou usando modelos do Resource Manager.

    2. Renomeie todos os recursos ao criá-los no novo local, já que requerem nomes globalmente exclusivos.

    3. Atualize os nomes dos recursos e as chaves dos recursos no modelo do novo hub antes de criar o novo hub. Os recursos deverão estar presentes quando o hub for criado.

  • Não mover os recursos usados para os pontos de extremidade de roteamento. Usá-los "in-loco".

    1. Na etapa em que o modelo é editado, você precisa recuperar as chaves para cada recurso de roteamento e colocá-las no modelo antes de criar o hub.

    2. O hub ainda referencia os recursos de roteamento originais e roteia mensagens para eles, conforme configurado. Você terá um pequeno impacto no desempenho porque o hub e os recursos do ponto de extremidade de roteamento não estão na mesma localização.

Preparar a migração do hub para outra região

Esta seção fornece instruções específicas para migrar o hub.

Exportar o hub original para um modelo de recurso

  1. Entre no portal do Azure.

  2. Navegue para o Hub IoT que você deseja migrar.

  3. Escolha Exportar modelo na lista de propriedades e configurações do hub.

    Captura de tela que mostra o comando usado para exportar o modelo para o hub IoT.

  4. Selecione Baixar para baixar o modelo. Salve o arquivo em um lugar em que possa encontrá-lo novamente.

    Captura de tela que mostra o comando usado para fazer o download do modelo para o hub IoT.

Exibição do modelo

Vá para o modelo baixado, que está contido em um arquivo zip. Extraia o arquivo zip e localize o arquivo chamado template.json.

O exemplo a seguir refere-se a um hub genérico sem configuração de roteamento. Trata-se de um hub de camada S1 (com 1 unidade) chamado ContosoHub na região 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": []
            }
        }
    ]
}

Editar o modelo

Você precisa fazer algumas alterações para usar o modelo e criar o hub na nova região. Use o Visual Studio Code ou um editor de texto para editar o modelo.

Editar o nome e a localização do hub

  1. Remova a seção do parâmetro de nome do contêiner na parte superior. ContosoHub não tem um contêiner associado.

    "parameters": {
      ...
        "IotHubs_ContosoHub_containerName": {
            "type": "SecureString"
        },
      ...
    },
    
  2. Remova a propriedade storageEndpoints.

    "properties": {
      ...
        "storageEndpoints": {
        "$default": {
            "sasTtlAsIso8601": "PT1H",
            "connectionString": "[parameters('IotHubs_ContosoHub_connectionString')]",
            "containerName": "[parameters('IotHubs_ContosoHub_containerName')]"
        }
      },
      ...
    
    
  3. Se estiver migrando o hub para uma nova região, altere a propriedade localização na guia recursos.

    "location": "westus",
    

Atualizar os recursos do ponto de extremidade de roteamento

Ao exportar o modelo do Resource Manager para um hub com o roteamento configurado, você verá que as chaves desses recursos não são fornecidas no modelo exportado. O posicionamento é indicado por asteriscos. Você precisa preenchê-los acessando esses recursos no portal e recuperando as chaves antes de importar o modelo do novo hub e criar o hub.

Se você também migrou os recursos de roteamento, atualize também o nome, a ID e o grupo de recursos de cada ponto de extremidade.

  1. Recupere as chaves necessárias para um dos recursos de roteamento e coloque-as no modelo. Recupere as chaves do recurso no portal do Azure.

    • Por exemplo, se estiver roteando mensagens para um contêiner de armazenamento, localize a conta de armazenamento no portal. Na seção Configurações, selecione Chaves de acesso e copie uma das chaves. Esta é a aparência da chave quando você exporta o modelo pela primeira vez:

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

      Após recuperar a chave da conta da conta de armazenamento, coloque-a no modelo na cláusula AccountKey=****, substituindo os asteriscos.

    • Para as filas do Barramento de Serviço, obtenha a chave de acesso compartilhado que corresponda ao SharedAccessKeyName. Esta é a chave e o SharedAccessKeyName no json:

      "connectionString": "Endpoint=sb://fabrikamsbnamespace1234.servicebus.windows.net:5671/;
      SharedAccessKeyName=iothubroutes_FabrikamResources;
      SharedAccessKey=****;
      EntityPath=fabrikamsbqueue1234",
      
    • O mesmo também se aplica aos tópicos do Barramento de Serviço e às conexões do Hub de Eventos.

Criar o novo hub carregando o modelo

Crie o novo hub usando o modelo editado. Se você tiver recursos de roteamento que serão movidos, os recursos deverão ser configurados na nova localização e as referências no modelo serão atualizadas para correspondência. Se não estiverem sendo migrados, os recursos de roteamento deverão estar no modelo com as chaves atualizadas.

  1. Entre no portal do Azure.

  2. Selecione Criar um recurso.

  3. Na caixa de pesquisa, pesquise e selecione implantação de modelo (implantar usando modelos personalizados). Na tela da implantação do modelo, selecione Criar.

  4. Na página Implantação personalizada, selecione Crie seu próprio modelo no editor, o que permite que você carregue seu modelo a partir de um arquivo.

    Captura de tela mostrando o comando para criar seu próprio modelo.

  5. Selecione Carregar arquivo.

    Captura de tela que mostrando o comando usado para carregar um arquivo de modelo.

  6. Procure o novo modelo que você editou, selecione-o e escolha Abrir. Ele carregará seu modelo na janela de edição. Clique em Salvar.

    Captura de tela mostrando o carregamento do modelo.

  7. Preencha os campos a seguir na página de implantação personalizada.

    Assinatura: selecione a assinatura a ser utilizada.

    Grupo de recursos: selecione um grupo de recursos existente ou crie um novo.

    Região: se você tiver selecionado um grupo de recursos existente, essa região será preenchida para que você faça a correspondência à localização do grupo de recursos. Se você criou um novo grupo de recursos, esse é o local onde estará.

    Cadeia de conexão: preencha a cadeia de conexão do hub.

    Nome do Hub: dê um nome ao novo hub.

    Captura de tela mostrando a página de implantação personalizada

  8. Selecione o botão Revisar + criar.

  9. Selecione o botão Criar. O portal validará seu modelo e implantará seu novo hub. Se você tiver dados de configuração de roteamento, eles serão incluídos no novo hub, mas apontarão para os recursos no local anterior.

    Captura de tela mostrando a página Implantação personalizada final

Gerenciar os dispositivos registrados no Hub IoT

Agora que seu novo hub está pronto e funcionando, você precisa copiar todos os dispositivos do hub original para o hub novo.

Há várias maneiras de copiar os dispositivos. Você originalmente usou o DPS (Serviço de Provisionamento de Dispositivos) para provisionar os dispositivos ou não. Se você fez isso, esse processo não será difícil. Caso não tenha feito, esse processo poderá ser complicado.

Se não tiver usado o DPS para provisionar seus dispositivos, você pode ignorar a próxima seção e começar por Usar a Importação/Exportação para migrar os dispositivos para o novo hub.

Usar o DPS para reprovisionar os dispositivos no novo hub

Para usar o DPS para migrar os dispositivos para o novo local, confira Como reprovisionar dispositivos. Quando terminar, veja os dispositivos no portal do Azure e verifique se eles estão na nova localização.

Acesse o novo hub usando o portal do Azure. Selecione o hub e Dispositivos IoT. Você verá os dispositivos que foram reprovisionados no novo hub. Também poderá ver as propriedades do novo hub.

Se você tiver implementado o roteamento, teste e verifique se as mensagens são roteadas para os recursos corretamente.

Reverter as alterações após usar o DPS

Se quiser reverter as alterações, reprovisione os dispositivos do novo hub para o hub antigo.

Agora a migração do seu hub e de seus dispositivos está concluída. Prossiga para a seção Limpeza.

Usar a Importação/Exportação para migrar os dispositivos para o novo hub

O aplicativo se destina ao .NET Core. Portanto, você pode executá-lo no Windows ou no Linux. Baixe o exemplo, recupere as cadeias de conexão, defina os sinalizadores para os bits que deseja executar e execute-o. Você pode fazer isso sem nunca abrir o código.

Baixar o exemplo

  1. Use as amostras de C# do IoT em: SDK do IoT do Azure para C#. Baixe o arquivo zip e descompacte-o no computador.

  2. O código pertinente está em ./iothub/service/samples/how to guides/ImportExportDevicesSample. Não é necessário ver nem editar o código para executar o aplicativo.

  3. Para executar o aplicativo, especifique três cadeias de conexão e cinco opções. Transmita esses dados como argumentos de linha de comando ou use variáveis de ambiente ou, então, uma combinação dos dois. Vamos transmitir as opções como argumentos de linha de comando e as cadeias de conexão como variáveis de ambiente.

    O motivo é que as cadeias de conexão são longas, volumosas é improváveis de serem alteradas, mas talvez seja útil alterar as opções e executar o aplicativo mais de uma vez. Para alterar o valor de uma variável de ambiente, você precisa fechar a janela de comando e o Visual Studio ou o Visual Studio Code, dependendo do que você estiver usando.

Opções

Confira abaixo as cinco opções que você especifica quando executa o aplicativo:

  • addDevices (argumento 1): defina essa opção como True se quiser adicionar os dispositivos virtuais que são gerados para você. Esses dispositivos são adicionados ao hub de origem. Além disso, defina numToAdd (argumento 2) para especificar quantos dispositivos você deseja adicionar. O número máximo de dispositivos que você pode registrar para um único hub é de um milhão. A finalidade dessa opção é realizar testes. Você pode gerar um número específico de dispositivos e depois copiá-los para outro hub.

  • copyDevices (argumento 3): defina essa opção como True para copiar os dispositivos de um hub para outro.

  • deleteSourceDevices (argumento 4): defina essa opção como Truepara excluir todos os dispositivos registrados no hub de origem. Antes de executar isso, recomendamos aguardar até você ter certeza de que todos os dispositivos foram transferidos. Depois de excluir os dispositivos, você não poderá recuperá-los.

  • deleteDestDevices (argumento 5): defina essa opção como True para excluir todos os dispositivos registrados no hub de destino. O ideal é fazer isso se você quer copiar os dispositivos mais de uma vez.

O comando básico é dotnet run, que instrui o .NET a compilar o arquivo csproj local e executá-lo. Adicione os argumentos de linha de comando ao final antes de executá-lo.

A linha de comando será semelhante a estes exemplos:

    // 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 

Usar variáveis de ambiente para as cadeias de conexão

  1. Para executar o exemplo, você precisa das cadeias de conexão dos hubs IoT antigos e novos e de uma conta de armazenamento que possa ser usada para arquivos de trabalho temporários. Armazenaremos os valores delas em variáveis de ambiente.

  2. Para obter os valores das cadeias de conexão, entre no portal do Azure.

  3. Coloque as cadeias de conexão em um lugar em que possa recuperá-las, como o Bloco de notas. Se você copiar o conteúdo a seguir, poderá colar as cadeias de conexão diretamente no local em que devem ser inseridas. Não adicione espaços em torno do sinal de igual nem altere o nome da variável. Além disso, não são necessárias aspas duplas nas cadeias de conexão. Se você colocar aspas em torno da cadeia de conexão da conta de armazenamento, o script irá falhar.

    Definir as variáveis de ambiente no Windows:

    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>
    

    Definir as variáveis de ambiente no Linux:

    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. Para as cadeias de conexão do hub IoT, acesse cada hub no portal. Pesquise em Recursos para encontrar o hub. Se você conhece o grupo de recursos, acesse Grupos de recursos, selecione o grupo de recursos e escolha o hub na lista de ativos desse grupo de recursos.

  5. Selecione Políticas de acesso compartilhado nas configurações do hub e escolha iothubowner e copie uma das cadeias de conexão. Faça o mesmo para o hub de destino. Adicione-as aos comandos SET apropriados.

  6. Para a cadeia de conexão da conta de armazenamento, localize a conta de armazenamento em Recursos ou no respectivo Grupo de recursos e abra-a.

  7. Na seção Configurações, selecione Chaves de acesso e copie uma das cadeias de conexão. Coloque a cadeia de conexão no arquivo de texto para o comando SET apropriado.

Agora você tem as variáveis de ambiente em um arquivo com os comandos SET e sabe quais são os argumentos de linha de comando. Vamos executar o exemplo.

Executar a amostra de aplicativo e usar argumentos de linha de comando

  1. Abra una janela de prompt de comando. Selecione Windows e digite command prompt para obter a janela do prompt de comando.

  2. Copie os comandos que definem as variáveis de ambiente, um de cada vez, cole-os na janela do prompt de comando e selecione ENTER. Quando terminar, digite SET na janela do prompt de comando para ver as variáveis de ambiente e os respectivos valores. Depois de copiá-los para a janela do prompt de comando, você não precisará copiá-los novamente, a menos que abra uma nova janela do prompt de comando.

  3. Na janela do prompt de comando, altere os diretórios até que você esteja em ./ImportExportDevicesSample (local do arquivo ImportExportDevicesSample.csproj). Em seguida, digite o conteúdo a seguir e inclua os argumentos de linha de comando.

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

    O comando dotnet cria e executa o aplicativo. Como está transmitindo as opções ao executar o aplicativo, você pode alterar os valores de cada uma a cada vez que executar o aplicativo. Por exemplo, o ideal é executá-lo uma vez e criar dispositivos, executá-lo novamente e copiar esses dispositivos para um novo hub etc. Você também pode executar todas as etapas na mesma execução, embora recomendemos não excluir nenhum dispositivo até você ter certeza de que terminou a migração. Aqui temos um exemplo que cria mil dispositivos e, a seguir, os copia para o outro hub.

    // 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 
    

    Depois de verificar se os dispositivos foram copiados com êxito, remova os dispositivos do hub de origem desta forma:

    // 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 
    

Executar a amostra de aplicativo usando o Visual Studio

  1. Se desejar executar o aplicativo no Visual Studio, altere o diretório atual para a pasta em que reside o arquivo azureiot.sln. Em seguida, execute este comando na janela do prompt de comando para abrir a solução no Visual Studio. Você precisa fazer isso na mesma janela Comando em que define as variáveis de ambiente, de modo que elas sejam conhecidas.

    azureiot.sln
    
  2. Clique com o botão direito do mouse no projeto ImportExportDevicesSample e selecione Definir como projeto de inicialização.

  3. Defina as variáveis no início de Program.cs na pasta ImportExportDevicesSample para as cinco opções.

    // 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. Selecione F5 para executar o aplicativo. Depois que ele concluir a execução, você poderá ver os resultados.

Exibir os resultados

Veja os dispositivos no portal do Azure e verifique se eles estão na nova localização.

  1. Acesse o novo hub usando o portal do Azure. Selecione o hub e Dispositivos IoT. Você verá os dispositivos que copiou do hub antigo para o novo hub. Também poderá ver as propriedades do novo hub.

  2. Verifique se há erros de importação/exportação acessando a conta de armazenamento do Azure no portal do Azure e procurando o ImportErrors.log no contêiner devicefiles. Se esse arquivo estiver vazio (o tamanho é 0), não haverá erros. Se você tentar importar o mesmo dispositivo mais de uma vez, ele rejeitará o dispositivo na segunda vez e adicionará uma mensagem de erro ao arquivo de log.

Confirmar as alterações

Nesta altura, você copiou seu hub para o novo local e migrou os dispositivos para o novo hub. Agora você precisa fazer alterações para que os dispositivos funcionem com o novo hub.

Para fazer commit das alterações, confira estas etapas que você precisará executar:

  • Atualize cada dispositivo para alterar o nome do host do Hub IoT de modo a apontar o nome do host do Hub IoT para o novo hub. Faça isso usando o mesmo método que usou ao provisionar o dispositivo pela primeira vez.

  • Altere todos os aplicativos que você tem referentes ao hub antigo para que apontem para o novo hub.

  • Depois que você terminar, o novo hub deverá estar em execução. O hub antigo não deve ter nenhum dispositivo ativo deve estar em um estado desconectado.

Reverter as alterações

Se você decidir reverter as alterações, estas são as etapas a serem executadas:

  • Atualize cada dispositivo para alterar o nome do host do Hub IoT de modo a apontar o nome do host do Hub IoT para o hub antigo. Faça isso usando o mesmo método que usou ao provisionar o dispositivo pela primeira vez.

  • Altere todos os aplicativos que você tem referentes ao novo hub para que apontem para o hub antigo. Por exemplo, se estiver usando o Azure Analytics, talvez você precise reconfigurar sua entrada do Azure Stream Analytics.

  • Exclua o novo hub.

  • Se você tiver recursos de roteamento, a configuração no hub antigo ainda deverá apontar para a configuração de roteamento correta e deverá funcionar com esses recursos depois que o hub for reiniciado.

Verificar os resultados

Para verificar os resultados, altere sua solução de IoT a fim de apontá-la para o hub na nova localização e execute-o. Em outras palavras, com o novo hub, execute as mesmas ações realizadas com o hub anterior e verifique se elas funcionam corretamente.

Se você tiver implementado o roteamento, teste e verifique se as mensagens são roteadas para os recursos corretamente.

Limpeza

Não faça a limpeza até ter certeza de que o novo hub está pronto e funcionando e os dispositivos estão funcionando corretamente. Além disso, certifique-se de testar o roteamento se estiver usando esse recurso. Quando estiver pronto, limpe os recursos antigos executando estas etapas:

  • Se você ainda não fez isso, exclua o hub antigo. Isso removerá todos os dispositivos ativos do hub.

  • Se você tiver recursos de roteamento transferidos para a nova localização, exclua os recursos de roteamento antigos.

Próximas etapas

Você migrou um Hub IoT completo para um novo hub em uma nova região, incluindo os dispositivos. Para obter mais informações sobre como executar operações em massa no registro de identidade em um hub IoT, confira Importar e exportar identidades de dispositivo hub IoT em massa.