Compartilhar via


Como migrar automaticamente um hub IoT utilizando a CLI do Azure

Utilize a CLI do Azure para migrar um hub IoT para uma nova região, uma nova camada ou uma nova configuração.

As etapas deste artigo são úteis se você desejar:

  • Atualizar um Hub IoT do nível gratuito para um nível básico ou padrão.
  • Transferir um Hub IoT para uma nova região.
  • Exportar as informações de estado do Hub IoT para servir de backup.
  • Aumentar o número de partições de um Hub IoT.
  • Configurar um hub para um ambiente de desenvolvimento, em vez de produção.

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

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

  • O processo da CLI do Azure (este artigo):

    • Migra o registro do dispositivo, as informações de roteamento e ponto de extremidade e outros detalhes da configuração, como implantações do IoT Edge ou configurações automáticas de gerenciamento 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 as cadeias de conexão para roteamento e pontos de extremidade de upload de arquivo que usam a autenticação baseada em chave e as inclui na saída do modelo do ARM.
  • O processo manual:

    • Migra o registro do seu 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 as cadeias de conexão para roteamento e pontos de extremidade de upload de arquivo que usam a autenticação baseada em chave da saída do modelo do ARM, e você precisa adicioná-los manualmente de volta.

Pré-requisitos

  • CLI do Azure

    Os recursos descritos neste artigo exigem a versão 0.20.0 ou mais recente da extensão azure-iot. Para verificar sua versão de extensão, execute az --version. Para atualizar sua extensão, execute az extension update --name azure-iot.

    Se você ainda tiver a extensão azure-cli-iot-ext herdada instalada, remova essa extensão antes de adicionar a extensão azure-iot.

Estado do hub IoT

Quando falamos em migrar o estado de um hub IoT, estamos nos referindo a uma combinação de três aspectos:

  • Recursos do Azure Resource Manager (ARM). Esse aspecto é tudo o que pode ser definido em um modelo de recurso e é a mesma informação que você obteria se exportasse o modelo de recurso de seu hub IoT no portal do Microsoft Azure. As informações capturadas como parte do aspecto do Azure Resource Manager incluem:

    • Tempo de retenção do hub de eventos interno
    • Certificados
    • Propriedades da nuvem para dispositivo
    • Desabilitar a SAS do dispositivo
    • Desabilitar a autenticação local
    • Habilitar as notificações de upload de arquivos
    • Ponto de extremidade de armazenamento do upload de arquivos
    • Identidades
      • Identidades atribuídas pelo usuário
      • Identidades atribuídas pelo sistema (habilitadas ou desabilitadas)
    • Conjuntos de regras de rede
    • Roteamento
      • Pontos de extremidade personalizados
      • Rota de fallback
      • Rotas
    • Marcações
  • Configurações. Este aspecto refere-se aos aspectos de um hub IoT que não são representados em um modelo do ARM. Especificamente, esse aspecto abrange as configurações automáticas de gerenciamento de dispositivos e as implantações do IoT Edge.

  • Dispositivos. Esse aspecto representa as informações no registro do seu dispositivo, que incluem:

    • Identidades dos dispositivo e gêmeos
    • Identidades dos módulos e gêmeos

Qualquer propriedade ou configuração do Hub IoT não listada aqui pode não ser exportada ou importada corretamente.

Exportar o estado de um hub IoT

Use o comando az iot hub state export para exportar o estado de um hub IoT para um arquivo JSON.

Se você deseja executar as etapas de exportação e importação em um comando, consulte a seção mais adiante neste artigo para Migrar um hub IoT.

Ao exportar o estado de um hub IoT, você pode escolher quais aspectos exportar.

Parâmetro Detalhes
--aspects Os aspectos do estado a serem exportados. Especifique um ou mais dos valores aceitos: ARM, configurações ou dispositivos. Se esse parâmetro for omitido, todos os três aspectos serão exportados.
--state-file -f O caminho para o arquivo no qual as informações do estado são gravadas.
--replace -r Se esse parâmetro estiver incluído, o comando exportar substituirá o conteúdo do arquivo de estado.
--hub-name -n
or
--login -l
O nome do hub IoT de origem (-n) ou da cadeia de conexão do hub IoT de origem (-l). Se ambos forem fornecidos, a cadeia de conexão terá prioridade.
--resource-group -g O nome do grupo de recursos do hub de IoT de origem.

O exemplo a seguir exporta todos os aspectos do estado de um hub IoT para um arquivo chamado myHub-state:

az iot hub state export --hub-name myHub --state-file ./myHub-state.json

O exemplo a seguir exporta somente os dispositivos e os aspectos do Azure Resource Manager do estado de um hub IoT e substitui o conteúdo do arquivo existente:

az iot hub state export --hub-name myHub --state-file ./myHub-state.json --aspects arm devices --replace

Exportar pontos de extremidade

Se você optar por exportar o aspecto do Azure Resource Manager de um hub IoT, o comando exportar recuperará as cadeias de conexão de qualquer ponto de extremidade que tenha autenticação baseada em chave e as incluirá no modelo do ARM de saída.

O comando exportar também verifica todos os pontos de extremidade para verificar se o recurso ao qual ele se conecta ainda existe. Caso contrário, esse ponto de extremidade e todas as rotas que usam esse ponto de extremidade não serão exportadas.

Importar o estado de um hub IoT

Use o comando az iot hub state import para importar informações do estado de um arquivo exportado para um hub IoT novo ou existente.

Se você deseja executar as etapas de exportação e importação em um comando, consulte a seção mais adiante neste artigo para Migrar um hub IoT.

Parâmetro Detalhes
--aspects Os aspectos do estado a serem importados. Especifique um ou mais dos valores aceitos: ARM, configurações ou dispositivos. Se esse parâmetro for omitido, todos os três aspectos serão importados.
--state-file -f O caminho para o arquivo do estado exportado.
--replace -r Se esse parâmetro estiver incluído, o comando importar excluirá o estado atual do hub de destino.
--hub-name -n
or
--login -l
O nome do hub IoT de destino (-n) ou da cadeia de conexão do hub IoT de destino (-l). Se ambos forem fornecidos, a cadeia de conexão terá prioridade.
--resource-group -g O nome do grupo de recursos do hub de IoT de destino.

O exemplo a seguir importa todos os aspectos para um novo hub IoT, que será criado caso ainda não exista:

az iot hub state import --hub-name myNewHub --state-file ./myHub-state.json

O exemplo a seguir importa apenas os aspectos de dispositivos e configurações para um novo hub IoT, que já deve existir, e substitui quaisquer dispositivos e configurações existentes:

az iot hub state import --hub-name myNewHub --state-file ./myHub-state.json --aspects devices configurations --replace

Crie um novo hub de IoT com importação do estado

Você pode usar o comando az iot hub state import para criar um novo hub IoT ou para gravar em um hub IoT existente.

Se quiser criar um novo Hub IoT, você deve incluir o aspecto arm no comando importar. Se arm não estiver incluído no comando e o hub de destino não existir, o comando importar falhará.

Se o hub de destino não existir, o parâmetro --resource-group também será necessário para o comando importar.

Atualizar um hub IoT existente com a importação do estado

Se o hub IoT de destino já existir, o aspecto arm não será necessário para o comando az iot hub state import. Se você incluir o aspecto arm, todas as propriedades do recurso serão substituídas, exceto as seguintes propriedades que não podem ser alteradas após a criação do hub:

  • Location
  • SKU
  • Contagem de partições do Hubs de Eventos interno
  • Residência de dadosResidência de dados
  • Recursos

Se o --resource-group for especificado no comando importar e for diferente do grupo de recursos atual do hub IoT, o comando falhará porque tentará criar um novo hub com o mesmo nome do que já existe.

Se você incluir o sinalizador --replace no comando importar, os seguintes aspectos do hub IoT serão removidos do hub de destino antes que o estado do hub seja carregado:

  • ARM: todos os certificados enviados no hub de destino serão excluídos. Se um certificado estiver presente, ele precisará de uma Etag para ser atualizado.
  • Dispositivos: todos os dispositivos e módulos, de borda e que não são de borda, serão excluídos.
  • Configurações: todas as configurações de gerenciamento de dispositivos e implantações do IoT Edge foram excluídas.

Migrar um hub IoT

Use o comando az iot hub state migrate para migrar o estado de um hub IoT para um hub IoT novo ou existente.

Esse comando envolve as etapas de exportação e importação em um único comando, mas não tem arquivos de saída. Todas as diretrizes e limitações descritas nas seções Exportar o estado de um hub IoT e Importar o estado de um hub IoT também se aplicam ao comando state migrate.

Se você estiver migrando um registro de dispositivos com vários dispositivos (por exemplo, algumas centenas ou alguns milhares), talvez seja mais fácil e rápido executar os comandos exportar e importar separadamente, em vez de executar o comando migrar.

Parâmetro Detalhes
--aspects Os aspectos do estado a serem migrados. Especifique um ou mais dos valores aceitos: ARM, configurações ou dispositivos. Se esse parâmetro for omitido, todos os três aspectos serão migrados.
--replace -r Se esse parâmetro for incluído, o comando migrar excluirá o estado atual do hub de destino.
--destination-hub --dh
or
--destination-hub-login --dl
O nome do hub IoT de destino (--dh) ou da cadeia de conexão do hub IoT de destino (--dl). Se ambos forem fornecidos, a cadeia de conexão terá prioridade.
--destination-resource-group --dg Nome do grupo de recursos para o hub de IoT de destino. O grupo de recursos de destino será necessário se o hub de destino não existir.
--origin-hub --oh
or
--origin-hub-login --ol
O nome do hub IoT de origem (--oh) ou da cadeia de conexão do hub IoT de origem (--ol). Se ambos forem fornecidos, a cadeia de conexão terá prioridade. Utilize a cadeia de caracteres de conexão para evitar a necessidade de entrar na sessão da CLI do Azure.
--origin-resource-group --og O nome do grupo de recursos do hub de IoT de origem.

O exemplo a seguir migra todos os aspectos do hub de origem para o hub de destino, que será criado se não existir:

az iot hub state migrate --origin-hub myHub --origin-resource-group myGroup  --destination-hub myNewHub --destination-resource-group myNewGroup

Solucionar problemas de migração

Se você não puder exportar ou importar dispositivos ou configurações, verifique se tem acesso a essas propriedades. Uma maneira de verificar seu acesso é executando os comandos az iot hub device-identity list ou az iot hub configuration list.

Se o comando az iot hub state migrate falhar, tente executar os comandos exportar e importar separadamente. Os dois comandos resultam na mesma funcionalidade que o comando migrar sozinho, mas executando-os separadamente, você pode revisar os arquivos de estado criados a partir do comando exportar.

Próximas etapas

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 do Hub IoT .