Como migrar manualmente um hub IoT do Azure com um modelo de Resource Manager do Azure

Utilize o portal do Azure, os modelos do Azure Resource Manager e os SDKs do serviço Hub IoT do Azure para migrar um hub IoT para uma nova região, um novo escalão ou uma nova configuração.

Os passos neste artigo são úteis se quiser:

Para migrar um hub, precisa de uma subscrição com acesso administrativo ao hub original. Pode colocar o novo hub num novo grupo de recursos e região, na mesma subscrição do hub original ou mesmo numa nova subscrição. Só não pode utilizar o mesmo nome porque o nome do hub tem de ser globalmente exclusivo.

Comparar os passos de migração automática e manual

O resultado deste artigo é semelhante a Como migrar automaticamente um hub IoT com a CLI do Azure, mas com um processo diferente. Antes de começar, decida qual é o processo adequado para o seu cenário.

  • O processo manual (este artigo):

    • Migra o registo do dispositivo e as informações de encaminhamento e ponto final. Tem de recriar manualmente outros detalhes de configuração no novo hub IoT.
    • É mais rápido para migrar um grande número de dispositivos (por exemplo, mais de 100 000).
    • Utiliza uma conta de Armazenamento do Azure para transferir o registo do dispositivo.
    • Limpa as cadeias de ligação para os pontos finais de encaminhamento e carregamento de ficheiros a partir da saída do modelo do ARM e tem de as adicionar manualmente.
  • O processo da CLI do Azure:

    • Migra o registo do dispositivo, as informações de encaminhamento e ponto final e outros detalhes de configuração, como IoT Edge implementações ou configurações automáticas de gestão de dispositivos.
    • É mais fácil migrar um pequeno número de dispositivos (por exemplo, até 10 000).
    • Não requer uma conta de Armazenamento do Azure.
    • Recolhe cadeias de ligação para encaminhamento e pontos finais de carregamento de ficheiros e inclui-as na saída do modelo arm.

Aspetos a considerar

Existem vários aspetos a considerar antes de migrar um hub IoT.

  • Certifique-se de que todas as funcionalidades disponíveis na localização original também estão disponíveis na nova localização. Alguns serviços estão em pré-visualização e nem todas as funcionalidades estão disponíveis em todo o lado.

  • Não remova os recursos originais antes de criar e verificar a versão migrada. Depois de remover um hub, este desaparece para sempre e não há forma de recuperá-lo para verificar as definições ou os dados para se certificar de que o hub é replicado corretamente.

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

  • Tem de agendar o período de indisponibilidade para a migração. A clonagem dos dispositivos para o novo hub demora algum tempo. Se utilizar o método Importar/Exportar, os testes de referência revelaram que pode demorar cerca de duas horas a mover 500 000 dispositivos e quatro horas a mover um milhão de dispositivos.

  • Pode copiar dispositivos para o novo hub sem encerrar ou alterar os dispositivos.

    • Se os dispositivos foram originalmente aprovisionados com o DPS, atualize as respetivas inscrições para apontarem para o novo hub IoT. Em seguida, volte a aprovisionar os dispositivos para atualizar as informações de ligação armazenadas em cada dispositivo.

    • Caso contrário, tem de utilizar o método de importação/exportação para mover os dispositivos e, em seguida, os dispositivos têm de ser modificados para utilizar o novo hub. Por exemplo, pode configurar o dispositivo para consumir o Hub IoT nome do anfitrião a partir das propriedades pretendidas do duplo. O dispositivo utiliza esse Hub IoT nome do anfitrião, desliga o dispositivo do hub antigo e volta a ligá-lo ao novo.

  • Tem de atualizar todos os certificados para que possa utilizá-los com os novos recursos. Além disso, provavelmente tem o hub definido numa tabela DNS algures e precisa de atualizar essas informações DNS.

Metodologia

Este é o método geral que recomendamos para migrar um hub IoT.

  1. Exporte o hub e as definições para um modelo de Resource Manager.

  2. Faça as alterações necessárias ao modelo, como atualizar todas as ocorrências do nome e a localização do hub migrado. Para quaisquer recursos no modelo utilizado para pontos finais de encaminhamento de mensagens, atualize a chave no modelo desse recurso.

  3. Importe o modelo para um novo grupo de recursos na nova localização. Este passo cria o novo hub IoT.

  4. Depurar conforme necessário.

  5. Adicione tudo o que não foi exportado para o modelo.

    Por exemplo, os grupos de consumidores não são exportados para o modelo. Tem de adicionar os grupos de consumidores ao modelo manualmente ou utilizar o portal do Azure após a criação do hub.

  6. Copie os dispositivos do hub original para o novo hub. Este processo é abordado na secção Gerir os dispositivos registados no hub IoT.

Como lidar com o encaminhamento de mensagens

Se o seu hub utilizar o encaminhamento de mensagens, a exportação do modelo para o hub inclui a configuração de encaminhamento, mas não inclui os recursos em si. Se estiver a migrar o hub IoT para uma nova região, tem de escolher se pretende mover também os recursos de encaminhamento para a nova localização ou deixá-los no local e continuar a utilizá-los "tal como está". Pode haver um pequeno desempenho de encaminhamento de mensagens para recursos de ponto final numa região diferente.

Se o hub utilizar o encaminhamento de mensagens, tem duas opções.

  • Mova os recursos utilizados para os pontos finais de encaminhamento para a nova localização.

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

    2. Mude o nome de todos os recursos quando os criar na nova localização, uma vez que necessitam de nomes globalmente exclusivos.

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

  • Não mova os recursos utilizados para os pontos finais de encaminhamento. Utilize-os "no local".

    1. No passo em que edita o modelo, tem de obter as chaves para cada recurso de encaminhamento e colocá-las no modelo antes de criar o novo hub.

    2. O hub ainda referencia os recursos de encaminhamento originais e encaminha as mensagens para os mesmos conforme configurado. Terá um pequeno desempenho atingido porque os recursos do hub e do ponto final de encaminhamento não estão na mesma localização.

Preparar para migrar o hub para outra região

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

Exportar o hub original para um modelo de recurso

  1. Inicie sessão no portal do Azure.

  2. Navegue para o hub IoT que pretende mover.

  3. Selecione Exportar modelo na lista de propriedades e definições do hub.

    Captura de ecrã a mostrar o comando para exportar o modelo para o hub IoT.

  4. Selecione Transferir para transferir o modelo. Guarde o ficheiro num local onde possa encontrá-lo novamente.

    Captura de ecrã a mostrar o comando para transferir o modelo do hub IoT.

Ver o modelo

Aceda ao modelo transferido, que está contido num ficheiro zip. Extraia o ficheiro zip e localize o ficheiro denominado template.json.

O exemplo seguinte é para um hub genérico sem configuração de encaminhamento. É um hub de escalão S1 (com 1 unidade) denominado ContosoHub na região oeste:

{
    "$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

Tem de fazer algumas alterações antes de poder utilizar o modelo para criar o novo hub na nova região. Utilize 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 secção do parâmetro nome do contentor na parte superior. O ContosoHub não tem um contentor 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 a mover o hub para uma nova região, altere a propriedade de localização em recursos.

    "location": "westus",
    

Atualizar os recursos do ponto final de encaminhamento

Ao exportar o modelo de Resource Manager para um hub com o encaminhamento configurado, verá que as chaves desses recursos não são fornecidas no modelo exportado. A sua colocação é indicada por asteriscos. Tem de os preencher acedendo a esses recursos no portal e obtendo as chaves antes de importar o modelo do novo hub e criar o hub.

Se também tiver movido os recursos de encaminhamento, atualize também o nome, o ID e o grupo de recursos de cada ponto final.

  1. Obtenha as chaves necessárias para qualquer um dos recursos de encaminhamento e coloque-as no modelo. Pode obter as chaves do recurso no portal do Azure.

    • Por exemplo, se estiver a encaminhar mensagens para um contentor de armazenamento, localize a conta de armazenamento no portal. Na secção Definições, selecione Chaves de acesso e, em seguida, copie uma das chaves. Eis o aspeto da chave ao exportar o modelo pela primeira vez:

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

      Depois de obter a chave de conta da conta de armazenamento, coloque-a no modelo na AccountKey=**** cláusula em vez dos asteriscos.

    • Para filas do service bus, obtenha a Chave de Acesso Partilhado correspondente ao SharedAccessKeyName. Eis a chave e o SharedAccessKeyName no json:

      "connectionString": "Endpoint=sb://fabrikamsbnamespace1234.servicebus.windows.net:5671/;
      SharedAccessKeyName=iothubroutes_FabrikamResources;
      SharedAccessKey=****;
      EntityPath=fabrikamsbqueue1234",
      
    • O mesmo se aplica aos Tópicos do Service Bus e às ligações dos Hubs de Eventos.

Criar o novo hub ao carregar o modelo

Crie o novo hub com o modelo editado. Se tiver recursos de encaminhamento que vão ser movidos, os recursos devem ser configurados na nova localização e as referências no modelo atualizadas para corresponderem. Se não estiver a mover os recursos de encaminhamento, estes deverão estar no modelo com as chaves atualizadas.

  1. Inicie sessão no portal do Azure.

  2. Selecione Criar um recurso.

  3. Na caixa de pesquisa, procure e selecione implementação de modelos (implementar com modelos personalizados). No ecrã da implementação do modelo, selecione Criar.

  4. Na página Implementação personalizada , selecione Criar o seu próprio modelo no editor, o que lhe permite carregar o modelo a partir de um ficheiro.

    Captura de ecrã a mostrar o comando para criar o seu próprio modelo.

  5. Selecione Carregar ficheiro.

    Captura de ecrã a mostrar o comando para carregar um ficheiro de modelo.

  6. Procure o novo modelo que editou e selecione-o e, em seguida, selecione Abrir. Carrega o seu modelo na janela de edição. Selecione Guardar.

    Captura de ecrã a mostrar o carregamento do modelo.

  7. Preencha os seguintes campos na página de implementação personalizada.

    Subscrição: selecione a subscrição que pretende utilizar.

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

    Região: se tiver selecionado um grupo de recursos existente, a região será preenchida para que corresponda à localização do grupo de recursos. Se tiver criado um novo grupo de recursos, esta é a respetiva localização.

    Cadeia de ligação: preencha a cadeia de ligação do hub.

    Nome do hub: atribua um nome ao novo hub.

    Captura de ecrã a mostrar a página de implementação personalizada

  8. Selecione o botão Rever + criar.

  9. Selecione o botão Criar. O portal valida o seu modelo e implementa o seu novo hub. Se tiver dados de configuração de encaminhamento, estes são incluídos no novo hub, mas apontam para os recursos na localização anterior.

    Captura de ecrã a mostrar a página de implementação personalizada final

Gerir os dispositivos registados no hub IoT

Agora que tem o seu novo hub em funcionamento, tem de copiar todos os dispositivos do hub original para o novo.

Existem várias formas de copiar os dispositivos. Utilizou originalmente o Serviço Aprovisionamento de Dispositivos (DPS) para aprovisionar os dispositivos ou não utilizou. Se o fez, este processo não é difícil. Se não o fez, este processo pode ser complicado.

Se não utilizou o DPS para aprovisionar os seus dispositivos, pode ignorar a secção seguinte e começar por Utilizar Importar/Exportar para mover os dispositivos para o novo hub.

Utilizar o DPS para voltar a aprovisionar os dispositivos no novo hub

Para utilizar o DPS para mover os dispositivos para a nova localização, veja Como reaprovisionar dispositivos. Quando tiver terminado, pode ver os dispositivos na portal do Azure e verificar se estão na nova localização.

Aceda ao novo hub com o portal do Azure. Selecione o hub e, em seguida, selecione Dispositivos IoT. Verá os dispositivos que foram novamente aprovisionados no novo hub. Também pode ver as propriedades do novo hub.

Se tiver implementado o encaminhamento, teste e certifique-se de que as mensagens são encaminhadas corretamente para os recursos.

Reverter as alterações depois de utilizar o DPS

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

Acabou de migrar o hub e os respetivos dispositivos. Pode avançar para Limpeza.

Utilizar a importação-exportação para mover os dispositivos para o novo hub

A aplicação destina-se a .NET Core, para que possa executá-la no Windows ou linux. Pode transferir o exemplo, obter as cadeias de ligação, definir os sinalizadores para os bits que pretende executar e executá-lo. Pode fazê-lo sem nunca abrir o código.

Transferir o exemplo

  1. Utilize os exemplos de C# do IoT aqui: SDK do Azure IoT para C#. Transfira o ficheiro zip e deszipe-o no seu computador.

  2. O código pertinente está em ./iothub/service/samples/how to guides/ImportExportDevicesSample. Não precisa de ver ou editar o código para executar a aplicação.

  3. Para executar a aplicação, especifique três cadeias de ligação e cinco opções. Pode transmitir estes dados como argumentos da linha de comandos ou utilizar variáveis de ambiente ou utilizar uma combinação dos dois. Vamos transmitir as opções como argumentos da linha de comandos e as cadeias de ligação como variáveis de ambiente.

    Este motivo deve-se ao facto de as cadeias de ligação serem longas e desajeitadas e não serem alteradas, mas poderá querer alterar as opções e executar a aplicação mais do que uma vez. Para alterar o valor de uma variável de ambiente, tem de fechar a janela de comandos e o Visual Studio ou o Visual Studio Code, o que estiver a utilizar.

Opções

Eis as cinco opções que especificar quando executa a aplicação:

  • addDevices (argumento 1) – defina esta opção True como se quiser adicionar dispositivos virtuais que são gerados automaticamente. Estes dispositivos são adicionados ao hub de origem. Além disso, defina numToAdd (argumento 2) para especificar quantos dispositivos pretende adicionar. O número máximo de dispositivos que pode registar num hub é de um milhão. O objetivo desta opção é testar. Pode gerar um número específico de dispositivos e, em seguida, copiá-los para outro hub.

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

  • deleteSourceDevices (argumento 4) – defina esta opção para True eliminar todos os dispositivos registados no hub de origem. Recomendamos que aguarde até ter a certeza de que todos os dispositivos foram transferidos antes de o executar. Depois de eliminar os dispositivos, não poderá recuperá-los.

  • deleteDestDevices (argumento 5) – defina esta opção para True eliminar todos os dispositivos registados no hub de destino. Poderá querer fazê-lo se quiser copiar os dispositivos mais do que uma vez.

O comando básico é executar dotnet, que indica ao .NET para compilar o ficheiro csproj local e, em seguida, executá-lo. Adicione os argumentos da linha de comandos ao final antes de o executar.

A linha de comandos terá o aspeto destes 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 

Utilizar variáveis de ambiente para as cadeias de ligação

  1. Para executar o exemplo, precisa das cadeias de ligação para os hubs IoT antigos e novos e para uma conta de armazenamento que pode utilizar para ficheiros de trabalho temporários. Iremos armazenar os valores para estes valores em variáveis de ambiente.

  2. Para obter os valores da cadeia de ligação, inicie sessão no portal do Azure.

  3. Coloque as cadeias de ligação num local onde possa obtê-las, como o Bloco de Notas. Se copiar o seguinte, pode colar as cadeias de ligação diretamente no local para onde vão. Não adicione espaços à volta do sinal de igual ou altera o nome da variável. Além disso, não precisa de aspas em torno das cadeias de ligação. Se colocar aspas à volta da cadeia de ligação da conta de armazenamento, o script falhará.

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

    Defina 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 ligação do hub IoT, aceda a cada hub no portal. Pode procurar em Recursos para o hub. Se souber o Grupo de Recursos, pode aceder a Grupos de recursos, selecionar o grupo de recursos e, em seguida, selecionar o hub na lista de recursos nesse grupo de recursos.

  5. Selecione Políticas de acesso partilhado nas Definições do hub e, em seguida, selecione iothubowner e copie uma das cadeias de ligação. Faça o mesmo para o hub de destino. Adicione-os aos comandos SET adequados.

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

  7. Na secção Definições, selecione Chaves de acesso e copie uma das cadeias de ligação. Coloque a cadeia de ligação no ficheiro de texto para o comando SET adequado.

Agora tem as variáveis de ambiente num ficheiro com os comandos SET e sabe quais são os argumentos da linha de comandos. Vamos executar o exemplo.

Executar a aplicação de exemplo e utilizar argumentos da linha de comandos

  1. Abra uma janela da linha de comandos. Selecione Windows e escreva command prompt para obter a janela da linha de comandos.

  2. Copie os comandos que definem as variáveis de ambiente, uma de cada vez, e cole-as na janela da linha de comandos e selecione Enter. Quando tiver terminado, escreva SET na janela da linha de comandos para ver as variáveis de ambiente e os respetivos valores. Depois de copiá-los para a janela da linha de comandos, não terá de copiá-los novamente, a menos que abra uma nova janela da linha de comandos.

  3. Na janela da linha de comandos, altere os diretórios até estar em ./ImportExportDevicesSample (onde existe o ficheiro ImportExportDevicesSample.csproj). Em seguida, escreva o seguinte e inclua os argumentos da linha de comandos.

    // 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 compila e executa a aplicação. Uma vez que está a transmitir as opções quando executa a aplicação, pode alterar os valores das mesmas sempre que executar a aplicação. Por exemplo, poderá querer executá-lo uma vez e criar novos dispositivos e, em seguida, executá-lo novamente e copiar esses dispositivos para um novo hub, etc. Também pode efetuar todos os passos na mesma execução, embora recomendemos que não elimine nenhum dispositivo até ter a certeza de que terminou a migração. Eis um exemplo que cria 1000 dispositivos e, em seguida, copia-os 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, pode remover os dispositivos do hub de origem da seguinte 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 aplicação de exemplo com o Visual Studio

  1. Se quiser executar a aplicação no Visual Studio, altere o diretório atual para a pasta onde reside o ficheiro azureiot.sln. Em seguida, execute este comando na janela da linha de comandos para abrir a solução no Visual Studio. Tem de o fazer na mesma janela de comando onde define as variáveis de ambiente, para que essas variáveis sejam conhecidas.

    azureiot.sln
    
  2. Clique com o botão direito do rato no projeto ImportExportDevicesSample e selecione Definir como projeto de arranque.

  3. Defina as variáveis na parte superior de Program.cs na pasta ImportExportDevicesSample para obter 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 a aplicação. Depois de terminar a execução, pode ver os resultados.

Ver os resultados

Pode ver os dispositivos na portal do Azure e verificar se estão na nova localização.

  1. Aceda ao novo hub com o portal do Azure. Selecione o hub e, em seguida, selecione Dispositivos IoT. Verá os dispositivos que copiou do hub antigo para o novo hub. Também pode ver as propriedades do novo hub.

  2. Verifique se existem erros de importação/exportação ao aceder à conta de armazenamento do Azure no portal do Azure e ao procurar no devicefiles contentor o ImportErrors.log. Se este ficheiro estiver vazio (o tamanho é 0), não houve erros. Se tentar importar o mesmo dispositivo mais do que uma vez, este rejeita o dispositivo da segunda vez e adiciona uma mensagem de erro ao ficheiro de registo.

Consolidar as alterações

Neste momento, copiou o hub para a nova localização e migrou os dispositivos para o novo hub. Agora, tem de fazer alterações para que os dispositivos funcionem com o novo hub.

Para consolidar as alterações, eis os passos que tem de executar:

  • Atualize cada dispositivo para alterar o nome do anfitrião Hub IoT para apontar o nome do anfitrião Hub IoT para o novo hub. Deve fazê-lo com o mesmo método que utilizou quando aprovisionou o dispositivo pela primeira vez.

  • Altere as aplicações que tem que se referem ao hub antigo para apontar para o novo hub.

  • Quando tiver terminado, o novo hub deverá estar operacional. O hub antigo não deve ter dispositivos ativos e estar num estado desligado.

Reverter as alterações

Se decidir reverter as alterações, eis os passos a seguir:

  • Atualize cada dispositivo para alterar o Hub IoT Hostname para apontar o nome do anfitrião Hub IoT para o hub antigo. Deve fazê-lo com o mesmo método que utilizou quando aprovisionou o dispositivo pela primeira vez.

  • Altere as aplicações que tem que se referem ao novo hub para apontar para o hub antigo. Por exemplo, se estiver a utilizar o Azure Analytics, poderá ter de reconfigurar a entrada do Azure Stream Analytics.

  • Elimine o novo hub.

  • Se tiver recursos de encaminhamento, a configuração no hub antigo ainda deve apontar para a configuração de encaminhamento correta e deve funcionar com esses recursos após o hub ser reiniciado.

Verificar os resultados

Para verificar os resultados, altere a sua solução de IoT para apontar para o hub na nova localização e executá-la. Por outras palavras, execute as mesmas ações com o novo hub que realizou com o hub anterior e certifique-se de que funcionam corretamente.

Se tiver implementado o encaminhamento, teste e certifique-se de que as mensagens são encaminhadas corretamente para os recursos.

Limpeza

Não limpe até ter a certeza de que o novo hub está operacional e os dispositivos estão a funcionar corretamente. Certifique-se também de que testa o encaminhamento se estiver a utilizar essa funcionalidade. Quando estiver pronto, limpe os recursos antigos ao efetuar estes passos:

  • Se ainda não o fez, elimine o hub antigo. Esta ação remove todos os dispositivos ativos do hub.

  • Se tiver recursos de encaminhamento que moveu para a nova localização, pode eliminar os recursos de encaminhamento antigos.

Passos seguintes

Migrou um hub IoT para um novo hub numa nova região, completo com os dispositivos. Para obter mais informações sobre como realizar operações em massa no registo de identidades num hub IoT, veja Importar e exportar identidades de dispositivos Hub IoT em massa.