Como clonar um hub Azure IoT para outra região

Este artigo explora formas de clonar um Hub IoT e fornece algumas perguntas que precisa responder antes de começar. Aqui estão várias razões para clonar um hub IoT:

  • Está a mudar a sua empresa de uma região para outra, como da Europa para a América do Norte (ou vice-versa), e quer que os seus recursos e dados estejam geograficamente perto da sua nova localização, por isso precisa de mudar o seu centro.

  • Estás a criar um centro para um ambiente de desenvolvimento versus produção.

  • Você quer fazer uma implementação personalizada de multi-hub alta disponibilidade. Para mais informações, consulte a secção de Como alcançar a secção HA da região transversal do IoT Hub alta disponibilidade e recuperação de desastres.

  • Quer aumentar o número de divisórias configuradas para o seu centro. Este número é definido quando cria o seu hub pela primeira vez, e não pode ser alterado. Pode utilizar a informação neste artigo para clonar o seu hub e quando o clone for criado, aumente o número de divisórias.

Para clonar um hub, você precisa de uma subscrição com acesso administrativo ao centro original. Você pode colocar o novo hub em um novo grupo de recursos e região, na mesma subscrição que o hub original, ou mesmo em uma nova subscrição. Não pode usar o mesmo nome porque o nome do centro tem de ser globalmente único.

Nota

Neste momento, não há nenhuma funcionalidade disponível para clonagem automática de um hub IoT. É principalmente um processo manual, e, portanto, é bastante propenso a erros. A complexidade da clonagem de um centro é diretamente proporcional à complexidade do centro. Por exemplo, clonar um hub IoT sem encaminhamento de mensagens é bastante simples. Se adicionar o encaminhamento de mensagens como apenas uma complexidade, a clonagem do hub torna-se, pelo menos, uma ordem de grandeza mais complicada. Se também mover os recursos usados para encaminhar pontos finais, é outra ordem de grandeza mais complicada.

Aspetos a considerar

Há várias coisas a considerar antes de clonar 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 clonada. Uma vez removido um hub, ele se foi para sempre, e não há como recuperá-lo para verificar as definições ou dados para se certificar de que o hub é replicado corretamente.

  • Muitos recursos requerem nomes globalmente únicos, por isso deve usar nomes diferentes para as versões clonadas. Também deve usar um nome diferente para o grupo de recursos a que pertence o hub clonado.

  • Os dados para o centro de IoT original não são migrados. Estes dados incluem mensagens de dispositivo, comandos cloud-to-device (C2D) e informações relacionadas com o trabalho, tais como horários e histórico. As métricas e os resultados da exploração madeireira também não são migrados.

  • Para dados ou mensagens encaminhados para o Azure Storage, pode deixar os dados na conta de armazenamento original, transferir esses dados para uma nova conta de armazenamento na nova região, ou deixar os dados antigos no local e criar uma nova conta de armazenamento na nova localização para os novos dados. Para obter mais informações sobre os dados em movimento no armazenamento blob, consulte Começar com a AzCopy.

  • Os dados relativos aos Centros de Eventos e para Tópicos e Filas de Autocarros de Serviço não podem ser migrados. Estes dados são dados pontuais e não são armazenados após o processamento das mensagens.

  • Tens de marcar tempo de inatividade para a migração. A clonagem dos dispositivos para o novo centro leva tempo. Se utilizar o método Importação/Exportação, os testes de referência revelaram que pode levar cerca de duas horas a mover 500.000 dispositivos e quatro horas para mover um milhão de dispositivos.

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

    • Se os dispositivos foram originalmente provisionados utilizando DPS, re-provisionando-os atualiza 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 seu dispositivo para consumir o nome de anfitrião IoT Hub a partir das propriedades duplas desejadas. O dispositivo irá pegar no nome do anfitrião IoT Hub, desligar o dispositivo do antigo hub e reconectá-lo ao novo.

  • Precisa atualizar quaisquer certificados para que possa usá-los com os novos recursos. Além disso, provavelmente tem o hub definido numa tabela DNS em algum lugar e precisa atualizar essa informação de DNS.

Metodologia

Este é o método geral que recomendamos para mover um hub IoT de uma região para outra. Para o encaminhamento de mensagens, isto pressupõe que os recursos não estão a ser transferidos para a nova região. Para mais informações, consulte a secção de Roteamento de Mensagens.

  1. Exporte o hub e as suas definições para um modelo de Gestor de Recursos.

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

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

  4. Depurar o 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. É necessário adicionar os grupos de consumidores ao modelo manualmente ou utilizar o portal Azure após a criação do hub.

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

Como lidar com o encaminhamento de mensagens

Se o seu hub utilizar o encaminhamento personalizado, exportar o modelo para o hub inclui a configuração de encaminhamento, mas não inclui os recursos em si. Deve escolher se deve mover os recursos de encaminhamento para o novo local ou deixá-los no lugar e continuar a usá-los "como está".

Por exemplo, digamos que tens um hub nos EUA ocidentais que está a encaminhar mensagens para uma conta de armazenamento (também nos EUA Ocidentais), e queres mudar o centro para os EUA Orientais. Pode mover o hub e fazê-lo ainda encaminhar mensagens para a conta de armazenamento no Oeste dos EUA, ou pode mover o hub e também mover a conta de armazenamento. Pode haver um pequeno desempenho atingido desde o encaminhamento de mensagens até recursos de ponta final numa região diferente.

Pode mover um hub que utilize o encaminhamento de mensagens facilmente se não mover também os recursos utilizados para os pontos finais de encaminhamento.

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

  1. Mova os recursos utilizados para os pontos finais de encaminhamento para o novo local.

    • Você mesmo deve criar os novos recursos manualmente no portal Azure ou utilizando modelos de Gestor de Recursos.

    • Você deve renomear todos os recursos quando os cria no novo local, uma vez que eles têm nomes globalmente únicos.

    • Tem de atualizar os nomes dos recursos e as teclas de recursos no modelo do novo hub, antes de criar o novo hub. Os recursos devem estar presentes quando o novo hub for criado.

  2. Não mova os recursos usados para os pontos finais de encaminhamento. Use-os "no lugar".

    • No passo em que edita o modelo, precisa de recuperar as teclas para cada recurso de encaminhamento e colocá-las no modelo antes de criar o novo hub.

    • O hub ainda refere os recursos de encaminhamento originais e encaminha mensagens para eles como configurados.

    • Terá um pequeno sucesso de desempenho porque o centro e os recursos do ponto final de encaminhamento não estão no mesmo local.

Prepare-se para migrar o centro para outra região

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

Encontre o hub original e exporte-o para um modelo de recurso.

  1. Inicie sessão no Portal do Azure.

  2. Vá a Grupos de Recursos e selecione o grupo de recursos que contém o hub que pretende mover. Você também pode ir a Recursos e encontrar o centro assim. Selecione o centro.

  3. Selecione o modelo de exportação da lista de propriedades e configurações para o hub.

    Screenshot mostrando o comando para exportar o modelo para o IoT Hub.

  4. Selecione Baixar para descarregar o modelo. Guarde o ficheiro em algum lugar onde possa encontrá-lo novamente.

    Screenshot mostrando o comando para descarregar o modelo para o IoT Hub.

Ver o modelo

  1. Vá à pasta Downloads (ou à pasta que usou quando exportou o modelo) e encontre o ficheiro zip. Extraia o ficheiro zip e encontrasse o ficheiro chamado template.json. Selecione e copie- lo. Vá a uma pasta diferente e cole o ficheiro do modelo (Ctrl+V). Agora pode editá-lo.

    O exemplo a seguir é para um hub genérico sem configuração de encaminhamento. É um hub de nível S1 (com 1 unidade) chamado 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

Você tem que fazer algumas alterações antes de usar o modelo para criar o novo hub na nova região. Utilize o Código VS ou um editor de texto para editar o modelo.

Editar o nome e a localização do hub

  1. Retire a secção de parâmetros do nome do recipiente 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. Sob recursos, mude a localização de Westus para Eastus.

    Versão antiga:

    "location": "westus",
    

    Nova versão:

    "location": "eastus",
    

Atualize as chaves para os recursos de encaminhamento que não estão sendo movidos

Ao exportar o modelo de Resource Manager para um hub que tenha o encaminhamento configurado, verá que as chaves desses recursos não são fornecidas no modelo exportado. A sua colocação é denotada por asteriscos. Você deve preenchê-los indo para esses recursos no portal e recuperando as chaves antes de importar o modelo do novo hub e criar o hub.

  1. Recupere as teclas necessárias para qualquer um dos recursos de encaminhamento e coloque-as no modelo. Pode recuperar as teclas do recurso na portal do Azure.

    Por exemplo, se estiver a encaminhar mensagens para um recipiente de armazenamento, encontre a conta de armazenamento no portal. Na secção Definições, selecione as teclas de acesso e, em seguida, copie uma das teclas. Aqui está como é a chave quando você exporta o modelo pela primeira vez:

    "connectionString": "DefaultEndpointsProtocol=https;
    AccountName=fabrikamstorage1234;AccountKey=****",
    "containerName": "fabrikamresults",
    
  2. Depois de recuperar a chave de conta para a conta de armazenamento, coloque-a no modelo na cláusula AccountKey=**** no lugar dos asteriscos.

  3. Para filas de autocarros de serviço, obtenha a Chave de Acesso Compartilhada correspondente ao SharedAccessKeyName. Aqui está a chave e o SharedAccessKeyName no json:

    "connectionString": "Endpoint=sb://fabrikamsbnamespace1234.servicebus.windows.net:5671/;
    SharedAccessKeyName=iothubroutes_FabrikamResources;
    SharedAccessKey=****;
    EntityPath=fabrikamsbqueue1234",
    
  4. O mesmo se aplica às ligações De Serviço Bus Topics e Event Hubs.

Criar os novos recursos de encaminhamento no novo local

Esta secção só se aplica se estiver a mover os recursos utilizados pelo hub para os pontos finais de encaminhamento.

Se quiser mover os recursos de encaminhamento, deve configurar manualmente os recursos no novo local. Pode criar os recursos de encaminhamento utilizando o portal do Azure, ou exportando o modelo de Resource Manager para cada um dos recursos utilizados pelo encaminhamento de mensagens, editando-os e importando-os. Após a configuração dos recursos, pode importar o modelo do hub (que inclui a configuração de encaminhamento).

  1. Crie cada recurso utilizado pelo encaminhamento. Pode fazê-lo manualmente usando o portal do Azure ou criar os recursos utilizando modelos Resource Manager. Se quiser usar modelos, estes são os passos a seguir:

    1. Para cada recurso utilizado pelo encaminhamento, exporte-o para um modelo de Resource Manager.

    2. Atualize o nome e a localização do recurso.

    3. Atualize quaisquer referências cruzadas entre os recursos. Por exemplo, se criar um modelo para uma nova conta de armazenamento, precisa atualizar o nome da conta de armazenamento nesse modelo e qualquer outro modelo que o faça referência. Na maioria dos casos, a secção de encaminhamento no modelo para o hub é o único outro modelo que faz referência ao recurso.

    4. Importe cada um dos modelos, que implementa cada recurso.

    Uma vez que os recursos utilizados pelo encaminhamento estejam configurado e em funcionamento, pode continuar.

  2. No modelo para o hub IoT, altere o nome de cada um dos recursos de encaminhamento para o seu novo nome e atualize a localização se necessário.

Agora você tem um modelo que vai criar um novo hub que se parece quase exatamente com o antigo hub, dependendo de como você decidiu lidar com o encaminhamento.

Crie o novo hub na nova região carregando o modelo

Crie o novo hub no novo local utilizando o modelo. Se você tem recursos de encaminhamento que vão mover-se, os recursos devem ser configurado na nova localização e as referências no modelo atualizado para combinar. Se não estiver a mover os recursos de encaminhamento, eles devem estar no modelo com as teclas atualizadas.

  1. Inicie sessão no Portal do Azure.

  2. Selecione Criar um recurso.

  3. Na caixa de pesquisa, escreva "implementação do modelo" e selecione Enter.

  4. Selecione a implementação do modelo (implementar usando modelos personalizados). Isto leva-o a um ecrã para a implementação do modelo. Selecione Criar. Verá este ecrã:

    Screenshot mostrando o comando para construir o seu próprio modelo

  5. Selecione Construa o seu próprio modelo no editor, o que lhe permite carregar o seu modelo a partir de um ficheiro.

  6. Selecione o ficheiro de carga.

    Screenshot mostrando o comando para carregar um ficheiro de modelo

  7. Navegue pelo novo modelo que editou e selecione-o e, em seguida, selecione Open. Carrega o seu modelo na janela de edição. Selecione Guardar.

    Screenshot mostrando o carregamento do modelo

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

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

    Grupo de recursos: Criar um novo grupo de recursos num novo local. Se já tiver uma configuração, pode selecioná-la em vez de criar uma nova.

    Região: Se selecionou um grupo de recursos existente, a região é preenchida para que você corresponda à localização do grupo de recursos. Se criou um novo grupo de recursos, esta será a sua localização.

    Cadeia de ligação: Preencha o fio de ligação para o seu hub.

    Nome do hub: Dê um nome ao novo hub da nova região.

    Screenshot mostrando a página de implementação personalizada

  9. Selecione o botão Rever + criar.

  10. Selecione o botão Criar. O portal valida o seu modelo e implanta o seu hub clonado. Se tiver dados de configuração de encaminhamento, este será incluído no novo hub, mas apontará para os recursos na localização anterior.

    Screenshot mostrando a página de implementação personalizada final

Gestão dos dispositivos registados no hub IoT

Agora que tens o teu clone a funcionar, tens de copiar todos os dispositivos do centro original para o clone.

Há várias formas de copiar os dispositivos. Ou usou originalmente o Serviço de Provisionamento de Dispositivos (DPS) para o fornecimento dos dispositivos, ou não o fez. Se o fez, este processo não é difícil. Se não o fez, este processo pode ser complicado.

Se não usou DPS para forragens dos seus dispositivos, pode saltar a próxima secção e começar com a Utilização de Importação/Exportação para mover os dispositivos para o novo hub.

Utilização de DPS para re-fornecimento dos dispositivos no novo hub

Para utilizar o DPS para mover os dispositivos para a nova localização, consulte como re-provisões dispositivos. Quando terminar, pode ver os dispositivos no portal do Azure e verificar se estão no novo local.

Vá para o novo centro usando o portal do Azure. Selecione o seu hub e, em seguida, selecione Dispositivos IoT. Vê-se os dispositivos que foram re-a provisionados para o centro clonado. Você também pode ver as propriedades para o centro clonado.

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

Cometer as alterações após a utilização do DPS

Esta alteração foi cometida pelo serviço DPS.

Reversão das alterações após a utilização do DPS.

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

Já terminou de migrar o seu centro e os seus dispositivos. Pode saltar para a Limpeza.

Usando Import-Export para mover os dispositivos para o novo hub

A aplicação tem como alvo .NET Core, para que possa executá-la no Windows ou no Linux. Você pode baixar a amostra, recuperar as suas cordas de conexão, definir as bandeiras para as partes que você quer executar, e executá-la. Podes fazer isto sem nunca abrires o código.

Descarregar a amostra

  1. Utilize aqui as amostras IoT C#: Azure IoT SDK para C#. Descarregue o ficheiro zip e desaperte-o no seu computador.

  2. O código pertinente está em ./iothub/serviço/samples/como guiar/ImportExportDevicesSample. Não é necessário visualizar 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. Você transmite estes dados como argumentos de linha de comando ou use variáveis ambientais, ou use uma combinação dos dois. Vamos passar as opções como argumentos de linha de comando, e as cordas de conexão como variáveis ambientais.

    A razão para isso é porque as cordas de ligação são longas e desajeitadas, e é improvável que mude, mas você pode querer mudar as opções e executar a aplicação mais de uma vez. Para alterar o valor de uma variável ambiental, tem de fechar a janela de comando e o Visual Studio ou o Código VS, seja qual for o seu uso.

Opções

Aqui estão as cinco opções que especifica quando executar a aplicação. Vamos pôr isto na linha de comando num minuto.

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

  • copyDevices (argumento 3) -- desemcoda-o para copiar os dispositivos de um hub para outro.

  • deleteSourceDevices (argumento 4) -- descreva-o para eliminar todos os dispositivos registados no centro de origem. Recomendamos esperar até ter certeza de que todos os dispositivos foram transferidos antes de executar isto. Uma vez apagados os dispositivos, não os podes recuperar.

  • deleteDestDevices (argumento 5) -- descreva-o para eliminar todos os dispositivos registados no centro de destino (o clone). É melhor fazer isto se quiser copiar os dispositivos mais de uma vez.

O comando básico é a execução do dotnet, que diz a .NET para construir o ficheiro csproj local e depois executá-lo. Adicione os seus argumentos de linha de comando ao fim antes de executá-lo.

A sua 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 

Usando variáveis ambientais para as cadeias de ligação

  1. Para executar a amostra, você precisa das cordas de ligação para os antigos e novos hubs IoT, e para uma conta de armazenamento que você pode usar para ficheiros de trabalho temporário. Armazenaremos os valores para estes em variáveis ambientais.

  2. Para obter os valores de cadeia de ligação, inscreva-se no portal do Azure.

  3. Coloque as cordas de ligação em algum lugar onde possa recuperá-las, como o NotePad. Se copiar o seguinte, pode colar as cordas de ligação diretamente para onde vão. Não adicione espaços em torno do sinal igual, ou muda o nome variável. Além disso, não precisa de citações duplas em torno das cordas de ligação. Se colocar as cotações à volta da cadeia de ligação da conta de armazenamento, não funcionará.

    Definir as variáveis ambientais no Windows:

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

    Definir as variáveis ambientais em Linux:

    export IOTHUB_CONN_STRING="<put connection string to original IoT Hub here>"
    export DEST_IOTHUB_CONN_STRING="<put connection string to destination or clone IoT Hub here>"
    export STORAGE_ACCT_CONN_STRING="<put connection string to the storage account here>"
    
  4. Para as cordas de ligação do hub IoT, vá a cada centro do portal. Pode procurar em Recursos o centro. Se conhecer o Grupo de Recursos, pode ir a grupos de Recursos, selecionar o seu grupo de recursos e, em seguida, selecionar o hub da lista de ativos desse grupo de recursos.

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

  6. Para a cadeia de ligação à conta de armazenamento, encontre a conta de armazenamento em Recursos ou no seu grupo de Recursos e abra-a.

  7. Na secção Definições, selecione teclas de acesso e copie uma das cadeias de ligação. Coloque o fio de ligação no seu ficheiro de texto para o comando SET apropriado.

Agora tem as variáveis ambientais num ficheiro com os comandos SET, e sabe quais são os seus argumentos de linha de comando. Vamos analisar a amostra.

Executar a aplicação da amostra e usar argumentos de linha de comando

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

  2. Copie os comandos que definem as variáveis ambientais, uma de cada vez, e cole-as na janela de ordem e selecione Enter. Quando terminar, digite SET a janela de aviso de comando para ver as variáveis do ambiente e os seus valores. Depois de copiar isto para a janela de pedido de comando, não precisa copiá-los novamente, a menos que abra uma nova janela de ordem de comando.

  3. Na janela de pedido de comando, altere os diretórios até estar em ./ImportExportDevicesSample (onde existe o ficheiro ImportExportDevicesSample.csproj). Em seguida, digite os seguintes e inclua os seus 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 constrói e executa a aplicação. Como está a passar as opções quando executar a aplicação, pode alterar os valores deles cada vez que executar a aplicação. Por exemplo, é melhor executá-lo uma vez e criar novos dispositivos, em seguida, executá-lo novamente e copiar esses dispositivos para um novo hub, e assim por diante. Também pode executar todos os passos na mesma corrida, embora recomendemos que não extingue nenhum dispositivo até ter a certeza de que está terminado com a clonagem. Aqui está um exemplo que cria 1000 dispositivos e depois os copia para o outro centro.

    // 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 sucesso, pode remover os dispositivos do centro 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 
    

Executando a aplicação da amostra usando o Visual Studio

  1. Se pretender executar a aplicação no Visual Studio, altere o seu diretório atual para a pasta onde reside o ficheiro .sln azureiot. Em seguida, executar este comando na janela de ordem para abrir a solução no Estúdio Visual. Deve fazê-lo na mesma janela de comando onde define as variáveis ambientais, para que essas variáveis sejam conhecidas.

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

  3. Coloque as variáveis no topo do Programa.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 a aplicação. Depois de terminar de correr, pode ver os resultados.

Ver os resultados

Pode ver os dispositivos no portal do Azure e verificar se estão no novo local.

  1. Vá para o novo centro usando o portal do Azure. Selecione o seu hub e, em seguida, selecione Dispositivos IoT. Vês os dispositivos que copiaste do antigo centro para o centro clonado. Você também pode ver as propriedades para o centro clonado.

  2. Verifique se há erros de importação/exportação indo à conta de armazenamento Azure no portal do Azure e procurando 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 de uma vez, rejeita o dispositivo pela segunda vez e adiciona uma mensagem de erro ao ficheiro de registo.

Cometer as alterações

Neste momento, copiou o seu hub para o novo local e emigrou os dispositivos para o novo clone. Agora tens de fazer alterações para que os dispositivos funcionem com o centro clonado.

Para cometer as alterações, aqui estão os passos que precisa de ser dado:

  • Atualize cada dispositivo para alterar o nome de anfitrião Hub IoT para apontar o nome de anfitrião Hub IoT para o novo hub. Deve fazê-lo utilizando o mesmo método utilizado quando o dispositivo foriu pela primeira vez.

  • Altere quaisquer aplicações que tenha que se refiram ao antigo hub para apontar para o novo hub.

  • Depois de terminar, o novo centro deve estar a funcionar. O antigo centro não deve ter dispositivos ativos e estar num estado desligado.

Reverter as alterações

Se decidir reverter as alterações, aqui estão os passos a executar:

  • Atualize cada dispositivo para alterar o nome de anfitrião Hub IoT para apontar o nome de anfitrião Hub IoT para o antigo hub. Deve fazê-lo utilizando o mesmo método utilizado quando o dispositivo foriu pela primeira vez.

  • Altere quaisquer aplicações que tenha que se refiram ao novo hub para apontar para o antigo hub. Por exemplo, se estiver a utilizar o Azure Analytics, poderá ter de reconfigurar a sua entrada Azure Stream Analytics.

  • Apague o novo hub.

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

Verificação dos resultados

Para verificar os resultados, altere a sua solução IoT para apontar para o seu hub no novo local e executá-lo. Por outras palavras, execute as mesmas ações com o novo hub que executou com o hub anterior e certifique-se de que funcionam corretamente.

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

Limpeza

Não limpe até ter a certeza de que o novo hub está a funcionar e os dispositivos estão a funcionar corretamente. Também certifique-se de testar o encaminhamento se estiver a utilizar essa função. Quando estiver pronto, limpe os recursos antigos executando estes passos:

  • Se ainda não o fez, apague o antigo centro. Isto remove todos os dispositivos ativos do centro.

  • Se tiver recursos de encaminhamento que mudou para o novo local, pode apagar os antigos recursos de encaminhamento.

Passos seguintes

Clonou um hub IoT para um novo centro numa nova região, completado com os dispositivos. Para obter mais informações sobre a realização de operações a granel contra o registo de identidade num hub IoT, consulte as identidades do dispositivo IoT Hub de importação e exportação a granel.

Se pretender implementar a aplicação da amostra, consulte a implementação da aplicação .NET Core.