Cómo migrar manualmente un centro de Azure IoT mediante una plantilla de Azure Resource Manager

Use el Azure Portal, las plantillas de Azure Resource Manager y los SDK de servicio de Azure IoT Hub para migrar un centro de IoT a una nueva región, un nuevo nivel o una nueva configuración.

Los pasos de este artículo son útiles si desea hacer lo siguiente:

  • Actualizar el nivel gratis de un centro de IoT a un nivel básico o estándar.
  • Mover un centro de IoT a una nueva región.
  • Exportar la información de estado del centro de IoT para tenerla como copia de seguridad.
  • Aumentar el número de particiones para un centro de IoT.
  • Configurar un centro para un entorno de desarrollo, en lugar de un entorno producción.
  • Habilitar una implementación personalizada de alta disponibilidad de varios centros. Para obtener más información, consulte la sección Lograr alta disponibilidad entre regiones.

Para migrar un centro, necesita una suscripción con acceso administrativo al centro original. Puede colocar el nuevo centro en un grupo de recursos y una región nuevos, en la misma suscripción que el centro original o incluso en una nueva suscripción. No puede usar el mismo nombre porque el nombre del centro debe ser único globalmente.

Comparación de los pasos de migración automática y manual

El resultado de este artículo es similar a Cómo migrar automáticamente un centro de IoT mediante la CLI de Azure, pero con un proceso diferente. Antes de comenzar, decida qué proceso es adecuado para su escenario.

  • El proceso manual (este artículo):

    • Migra el registro de dispositivos y la información de enrutamiento y punto de conexión. Tiene que volver a crear manualmente otros detalles de configuración en el nuevo centro de IoT.
    • Es más rápido para migrar un gran número de dispositivos (por ejemplo, más de 100 000).
    • Usa una cuenta de Azure Storage para transferir el registro de dispositivos.
    • Limpia las cadenas de conexión para el enrutamiento y los puntos de conexión de carga de archivos de la salida de la plantilla de ARM, y debe volver a agregarlos manualmente.
  • El proceso de la CLI de Azure:

    • Migra el registro de dispositivos, la información de enrutamiento y punto de conexión, y otros detalles de configuración, como las implementaciones de IoT Edge o las configuraciones automáticas de administración de dispositivos.
    • Es más fácil para migrar pequeños números de dispositivos (por ejemplo, hasta 10 000).
    • No requiere una cuenta de Azure Storage.
    • Recopila cadenas de conexión para el enrutamiento y los puntos de conexión de carga de archivos, y los incluye en la salida de la plantilla de ARM.

Aspectos que se deben tener en cuenta:

Hay varios aspectos que se deben tener en cuenta antes de migrar un centro de IoT.

  • Asegúrese de que todas las características disponibles en la ubicación original también lo están en la nueva. Algunos servicios se encuentran en versión preliminar y no todas las características están disponibles en todas partes.

  • No quite los recursos originales antes de crear y comprobar la versión migrada. Una vez que quita un centro, este deja de existir y no hay manera de recuperarlo para comprobar la configuración ni los datos para asegurarse de que el centro se ha replicado correctamente.

  • No se migran los datos del centro de IoT Hub original. Estos datos incluyen los mensajes de dispositivo, los comandos de la nube al dispositivo (C2D) y la información relacionada con el trabajo (como los programas y el historial). Tampoco se migran las métricas ni los resultados de los registros.

  • Debe programar el tiempo de inactividad de la migración. La clonación de los dispositivos en el nuevo centro lleva tiempo. Si usa el método Import/Export, las pruebas comparativas han revelado que podría tardar aproximadamente dos horas en trasladar 500 000 dispositivos y cuatro horas en mover un millón de dispositivos.

  • Puede copiar los dispositivos en el centro nuevo sin apagarlos ni cambiarlos.

    • Si los dispositivos se aprovisionaron originalmente mediante DPS, actualice sus inscripciones para que apunten al nuevo centro de IoT. A continuación, vuelva a aprovisionar los dispositivos para actualizar la información de conexión almacenada en cada dispositivo.

    • En caso contrario, tiene que usar el método import/export para trasladar los dispositivos y, después, los dispositivos deben modificarse para usar el nuevo centro. Por ejemplo, puede configurar el dispositivo para que use el nombre de host de IoT Hub de las propiedades gemelas deseadas. El dispositivo toma el nombre de host de IoT Hub, desconecta el dispositivo del centro antiguo y vuelve a conectarlo al nuevo.

  • Debe actualizar los certificados para poder utilizarlos con los nuevos recursos. Además, es probable que tenga el centro definido en una tabla DNS en algún lugar y tendrá que actualizar esa información de DNS.

Metodología

Este es el método general que se recomienda para migrar un centro de IoT.

  1. Exporte el centro y su configuración a una plantilla de Resource Manager.

  2. Realice los cambios necesarios en la plantilla, por ejemplo, actualizar todas las apariciones del nombre y la ubicación del centro migrado. Si tiene algún recurso en la plantilla que se use para los puntos de conexión de enrutamiento de mensajes, actualice la clave de ese recurso en la plantilla.

  3. Importe la plantilla en un nuevo grupo de recursos en la nueva ubicación. Este paso crea el nuevo centro de IoT.

  4. Realice la depuración pertinente según sea necesario.

  5. Agregue todo lo que no se haya exportado a la plantilla.

    Por ejemplo, los grupos de consumidores no se exportan a la plantilla. Tiene que agregar los grupos de consumidores a la plantilla manualmente o usar Azure Portal después de crear el centro.

  6. Copie los dispositivos del centro original al nuevo centro. Este proceso se trata en la sección Administración de los dispositivos registrados en el centro de IoT.

Procedimiento para controlar el enrutamiento de mensajes

Si el centro usa el enrutamiento de mensajes, la exportación de la plantilla del centro incluye la configuración del enrutamiento, pero no incluye los recursos. Si va a migrar el centro de IoT a una nueva región, debe elegir si quiere mover los recursos de enrutamiento a la nueva ubicación o dejarlos en su lugar y seguir utilizándolos "tal como están". El enrutamiento de mensajes a los recursos del punto de conexión en una región diferente puede afectar un poco al rendimiento.

Si el centro usa el enrutamiento de mensajes, tiene dos opciones.

  • Mueva los recursos usados para los puntos de conexión de enrutamiento a la nueva ubicación.

    1. Cree los nuevos recursos manualmente en Azure Portal o mediante plantillas de Resource Manager.

    2. Cambie el nombre de todos los recursos al crearlos en la nueva ubicación, ya que requieren nombres únicos globales.

    3. Actualice los nombres y las claves de los recursos en la plantilla del nuevo centro antes de crear el nuevo centro. Los recursos deben estar presentes cuando se cree el nuevo centro.

  • No mueva los recursos usados para los puntos de conexión de enrutamiento. Úselos "donde están".

    1. En el paso en el que edite la plantilla, tiene que recuperar las claves de cada recurso de enrutamiento y colocarlas en la plantilla antes de crear el nuevo centro.

    2. El centro sigue haciendo referencia a los recursos de enrutamiento originales y enruta los mensajes a ellos tal y como se ha configurado. Habrá un pequeño impacto en el rendimiento porque el centro y los recursos del punto de conexión de enrutamiento no están en la misma ubicación.

Preparación de la migración del centro a otra región

En esta sección se proporcionan instrucciones específicas para migrar el centro.

Exportación del centro original a una plantilla de recursos

  1. Inicie sesión en Azure Portal.

  2. Vaya al centro de IoT que desea trasladar.

  3. Seleccione Exportar plantilla en la lista de propiedades y opciones de configuración del centro.

    Captura de pantalla en la que se muestra el comando para exportar la plantilla del centro de IoT.

  4. Seleccione Descargar para descargar la plantilla. Guarde el archivo en algún lugar donde pueda encontrarlo de nuevo.

    Captura de pantalla en la que se muestra el comando para descargar la plantilla del centro de IoT.

Ver la plantilla

Vaya a la plantilla descargada, que se encuentra en un archivo ZIP. Extraiga el archivo .zip y busque el archivo denominado template.json.

El ejemplo siguiente es para un centro genérico sin configuración de enrutamiento. Es un centro de nivel S1 (con una unidad) denominado ContosoHub en la región 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": []
            }
        }
    ]
}

Edición de la plantilla

Tendrá que realizar algunos cambios antes de poder usar la plantilla para crear el nuevo centro en la nueva región. Use Visual Studio Code o un editor de texto para editar la plantilla.

Edición del nombre y la ubicación del centro

  1. Quite la sección del parámetro de nombre del contenedor en la parte superior. ContosoHub no tiene un contenedor asociado.

    "parameters": {
      ...
        "IotHubs_ContosoHub_containerName": {
            "type": "SecureString"
        },
      ...
    },
    
  2. Quite la propiedad storageEndpoints.

    "properties": {
      ...
        "storageEndpoints": {
        "$default": {
            "sasTtlAsIso8601": "PT1H",
            "connectionString": "[parameters('IotHubs_ContosoHub_connectionString')]",
            "containerName": "[parameters('IotHubs_ContosoHub_containerName')]"
        }
      },
      ...
    
    
  3. Si va a mover el centro a una nueva región, cambie la propiedad location en resources.

    "location": "westus",
    

Actualización de los recursos del punto de conexión de enrutamiento

Cuando exporte la plantilla de Resource Manager de un centro que tenga configurado el enrutamiento, verá que las claves de esos recursos no se proporcionan en la plantilla exportada. Su colocación se indica mediante asteriscos. Para rellenarlos, debe ir a esos recursos en el portal y recuperar las claves antes de importar la plantilla del nuevo centro y crear el centro.

Si también ha movido los recursos de enrutamiento, actualice el nombre, el identificador y el grupo de recursos de cada punto de conexión.

  1. Recupere las claves necesarias para cualquiera de los recursos de enrutamiento y colóquelas en la plantilla. Puede recuperar las claves desde el recurso en Azure Portal.

    • Por ejemplo, si va a enrutar mensajes a un contenedor de almacenamiento, busque la cuenta de almacenamiento en el portal. En la sección Configuración, seleccione Claves de acceso y, después, copie una de las claves. Este es el aspecto que tendrá la clave cuando exporte la plantilla por primera vez:

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

      Después de recuperar la clave de cuenta de la cuenta de almacenamiento, colóquela en la plantilla en la cláusula AccountKey=**** en lugar de los asteriscos.

    • En el caso de las colas de Service Bus, obtenga la clave de acceso compartido que coincida con SharedAccessKeyName. Esta es la clave y el valor de SharedAccessKeyName en JSON:

      "connectionString": "Endpoint=sb://fabrikamsbnamespace1234.servicebus.windows.net:5671/;
      SharedAccessKeyName=iothubroutes_FabrikamResources;
      SharedAccessKey=****;
      EntityPath=fabrikamsbqueue1234",
      
    • Lo mismo se aplica a los temas de Service Bus y las conexiones de Event Hubs.

Carga de la plantilla para crear el nuevo centro

Cree el nuevo centro mediante la plantilla editada. Si tiene recursos de enrutamiento que se van a trasladar, los recursos deben configurarse en la nueva ubicación y las referencias de la plantilla deben actualizarse para que coincidan. Si no va a trasladar los recursos de enrutamiento, deben estar en la plantilla con las claves actualizadas.

  1. Inicie sesión en Azure Portal.

  2. Seleccione Crear un recurso.

  3. En el cuadro de búsqueda, busque y seleccione implementación de plantillas (implementar con plantillas personalizadas). En la pantalla de la implementación de la plantilla, seleccione Crear.

  4. En la página Implementación personalizada, seleccione Crear su propia plantilla en el editor, lo que le permite cargar la plantilla desde un archivo.

    Captura de pantalla en la que se muestra el comando para crear su propia plantilla.

  5. Seleccione Cargar archivo.

    Captura de pantalla en la que se muestra el comando para cargar un archivo de plantilla.

  6. Busque la nueva plantilla que ha editado, selecciónela y después seleccione Abrir. La plantilla se carga en la ventana de edición. Seleccione Guardar.

    Captura de pantalla en la que se muestra la carga de la plantilla.

  7. Rellene los campos siguientes en la página de implementación personalizada.

    Suscripción: seleccione la suscripción que vaya a usar.

    Grupo de recursos: selecciona un grupo de recursos existente o crea uno nuevo.

    Región: si ha seleccionado un grupo de recursos existente, la región se rellena automáticamente para coincidir con la ubicación de ese grupo de recursos. Si ha creado un grupo de recursos nuevo, esta es su ubicación.

    Cadena de conexión: rellene la cadena de conexión del centro.

    Nombre del centro: proporcione un nombre para el nuevo centro.

    Captura de pantalla que muestra la página de implementación personalizada

  8. Seleccione el botón Revisar y crear.

  9. Seleccione el botón Crear. El portal valida la plantilla e implementa el nuevo centro. Si tiene datos de configuración de enrutamiento, se incluyen en el nuevo centro, pero apuntan a los recursos de la ubicación anterior.

    Captura de pantalla que muestra la última página de implementación personalizada

Administración de los dispositivos registrados en el centro de IoT

Ahora que tiene el nuevo centro listo y en funcionamiento, debe copiar todos los dispositivos del centro original en el centro nuevo.

Hay varias maneras de copiar los dispositivos. Puede que haya usado Service Device Provisioning (DPS) para aprovisionar los dispositivos o que no lo haya hecho. Si lo hizo, este proceso no es difícil. Si no lo ha hecho, este proceso puede ser complicado.

Si no ha usado DPS para aprovisionar los dispositivos, puede omitir la sección siguiente y comenzar con Uso de Import/Export para trasladar los dispositivos al nuevo centro.

Uso de DPS para volver a aprovisionar los dispositivos en el nuevo centro

Para usar DPS con el fin de trasladar los dispositivos a la nueva ubicación, consulte Reaprovisionamiento de dispositivos. Cuando haya terminado, puede ver los dispositivos en Azure Portal y comprobar que están en la nueva ubicación.

Vaya al nuevo centro mediante Azure Portal. Seleccione el centro y después Dispositivos IoT. Verá los dispositivos que se han vuelto a aprovisionar en el nuevo centro. También podrá ver las propiedades del nuevo centro.

Si ha implementado el enrutamiento, haga pruebas y asegúrese de que los mensajes se enrutan correctamente a los recursos.

Reversión de los cambios después de usar DPS

Si desea revertir los cambios, vuelva a aprovisionar los dispositivos del nuevo centro al anterior.

Ya ha finalizado la migración del centro y sus dispositivos. Puede pasar a la sección Limpieza.

Uso de import-export para trasladar los dispositivos al nuevo centro

La aplicación tiene .NET Core como destino, por lo que puede ejecutarla en Windows o Linux. Puede descargar el ejemplo, recuperar las cadenas de conexión, establecer las marcas de los bits que quiere ejecutar y ejecutarla. Puede hacerlo sin necesidad de abrir el código.

Descarga del ejemplo

  1. Use los ejemplos de C# de IoT aquí: SDK de Azure IoT para C#. Descargue el archivo .zip y descomprímalo en el equipo.

  2. El código pertinente está en ./iothub/service/samples/how to guides/ImportExportDevicesSample. No tiene que ver ni editar el código para ejecutar la aplicación.

  3. Para ejecutar la aplicación, especifique tres cadenas de conexión y cinco opciones. Estos datos se pasan como argumentos de la línea de comandos o se usan variables de entorno, o bien se utiliza una combinación de ambos métodos. Vamos a pasar las opciones como argumentos de la línea de comandos y las cadenas de conexión como variables de entorno.

    Esto se debe a que las cadenas de conexión son largas, poco manejables y no es probable que cambien, pero es posible que quiera cambiar las opciones y ejecutar la aplicación más de una vez. Para cambiar el valor de una variable de entorno, debe cerrar la ventana de comandos y Visual Studio o Visual Studio Code, lo que esté usando en se momento.

Opciones

Estas son las cinco opciones que tiene que especificar cuando ejecute la aplicación:

  • addDevices (argumento 1): establezca esta opción en True si quiere agregar dispositivos virtuales que usted genera. Estos dispositivos se agregan al centro de origen. Además, establezca numToAdd (argumento 2) para especificar el número de dispositivos que quiere agregar. El número máximo de dispositivos que pueden registrar en un solo centro es un millón. El propósito de esta opción es realizar pruebas. Puede generar un número específico de dispositivos y, a continuación, copiarlos en otro centro.

  • copyDevices (argumento 3): establezca esta opción en True para copiar los dispositivos de un centro a otro.

  • deleteSourceDevices (argumento 4): establezca esta opción en True para eliminar todos los dispositivos registrados en el centro de origen. Se recomienda esperar hasta que se tenga claro que todos los dispositivos se han transferido antes de ejecutarlo. Una vez que se eliminan los dispositivos, no se pueden recuperar.

  • deleteDestDevices (argumento 5): establezca esta opción en True para eliminar todos los dispositivos registrados en el centro de destino. Puede que quiera hacer esto si quiere copiar los dispositivos más de una vez.

El comando básico es dotnet run, que indica a .NET que compile el archivo csproj local y, después, lo ejecute. Agregará los argumentos de la línea de comandos al final antes de ejecutarla.

La línea de comandos se parecerá a estos ejemplos:

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

Uso de las variables de entorno para las cadenas de conexión

  1. Para ejecutar el ejemplo, necesita las cadenas de conexión a los centros de IoT antiguos y nuevos, y a una cuenta de almacenamiento que puede usar para los archivos de trabajo temporales. Estos valores se almacenarán en variables de entorno.

  2. Para obtener los valores de las cadenas de conexión, inicie sesión en Azure Portal.

  3. Coloque las cadenas de conexión en algún lugar donde pueda recuperarlas, como el Bloc de notas. Si copia lo siguiente, puede pegar las cadenas de conexión directamente donde vayan. No agregue espacios alrededor del signo igual o cambiará el nombre de la variable. Además, no necesita comillas dobles alrededor de las cadenas de conexión. Si coloca comillas alrededor de la cadena de conexión de la cuenta de almacenamiento, se producirá un error en el script.

    Establezca las variables de entorno en 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>
    

    Establezca las variables de entorno en 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. En el caso de las cadenas de conexión del centro de IoT Hub, vaya a cada centro en el portal. Puede buscar el centro en Recursos. Si conoce el grupo de recursos, puede ir a Grupos de recursos, seleccionar el grupo y, luego, seleccionar el centro en la lista de recursos de ese grupo de recursos.

  5. Seleccione Directivas de acceso compartido en la configuración del centro, seleccione iothubowner y copie una de las cadenas de conexión. Haga lo mismo con el centro de destino. Agréguelos a los comandos SET adecuados.

  6. En la cadena de conexión de la cuenta de almacenamiento, busque la cuenta de almacenamiento en Recursos o en su grupo de recursos y ábrala.

  7. En la sección Configuración, seleccione Claves de acceso y copie una de las cadenas de conexión. Coloque la cadena de conexión en el archivo de texto del comando SET adecuado.

Ahora tiene las variables de entorno en un archivo con los comandos SET y sabe cuáles son los argumentos de la línea de comandos. Vamos a ejecutar el ejemplo.

Ejecución de la aplicación de ejemplo y uso de los argumentos de la línea de comandos

  1. Abra una ventana de símbolo del sistema. Seleccione Windows y escriba command prompt para que aparezca la ventana del símbolo del sistema.

  2. Copie los comandos que establecen las variables de entorno, de uno en uno, péguelos en la ventana del símbolo del sistema y seleccione Entrar. Cuando haya terminado, escriba SET en la ventana del símbolo del sistema para ver las variables de entorno y sus valores. Una vez que los haya copiado en la ventana del símbolo del sistema, no tendrá que volver a copiarlos, a menos que abra una nueva ventana del símbolo del sistema.

  3. En la ventana del símbolo del sistema, cambie los directorios hasta que esté en ./ImportExportDevicesSample (donde está el archivo ImportExportDevicesSample.csproj). Después, escriba lo siguiente e incluya los argumentos de la línea 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
    

    El comando dotnet compila y ejecuta la aplicación. Dado que está pasando las opciones al ejecutar la aplicación, puede cambiar sus valores cada vez que ejecute la aplicación. Por ejemplo, puede que quiera ejecutarla una vez y crear dispositivos, volver a ejecutarla y copiar esos dispositivos en un nuevo centro, etc. También puede realizar todos los pasos en la misma ejecución, aunque se recomienda que no elimine ningún dispositivo hasta que tenga claro que ha terminado con la migración. Este es un ejemplo que crea 1000 dispositivos y luego los copia en el otro 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 
    

    Después de comprobar que los dispositivos se han copiado correctamente, puede quitarlos del centro de origen de la siguiente manera:

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

Ejecución de la aplicación de ejemplo mediante Visual Studio

  1. Si quiere ejecutar la aplicación en Visual Studio, cambie el directorio actual a la carpeta en la que se encuentra el archivo azureiot.sln. Después, ejecute este comando en la ventana del símbolo del sistema para abrir la solución en Visual Studio. Debe hacerlo en la misma ventana de comandos en la que ha establecido las variables de entorno para que se conozcan esas variables.

    azureiot.sln
    
  2. Haga clic con el botón derecho en el proyecto ImportExportDevicesSample y seleccione Establecer como proyecto de inicio.

  3. Establezca las variables en la parte superior de Program.cs en la carpeta ImportExportDevicesSample para las cinco opciones.

    // 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. Seleccione F5 para ejecutar la aplicación. Una vez finalizada la ejecución, puede ver los resultados.

Visualización de los resultados

Puede ver los dispositivos en Azure Portal y comprobar que están en la nueva ubicación.

  1. Vaya al nuevo centro mediante Azure Portal. Seleccione el centro y después Dispositivos IoT. Verá los dispositivos que ha copiado del centro antiguo en el nuevo centro. También podrá ver las propiedades del nuevo centro.

  2. Para comprobar si hay errores de importación o exportación, vaya a la cuenta de almacenamiento de Azure en Azure Portal y busque ImportErrors.log en el contenedor devicefiles. Si este archivo está vacío (el tamaño es 0), no se han producido errores. Si intenta importar el mismo dispositivo más de una vez, se rechaza el dispositivo la segunda vez y se agrega un mensaje de error al archivo de registro.

Confirmación de los cambios

En este momento, ha copiado el centro en la nueva ubicación y ha migrado los dispositivos al nuevo centro. Ahora debe realizar cambios para que los dispositivos funcionen con el nuevo centro.

Para confirmar los cambios, estos son los pasos que debe realizar:

  • Actualice cada dispositivo para cambiar el nombre de host de IoT Hub a fin de que apunte al nuevo centro. Debe hacerlo con el mismo método que ha usado la primera vez que aprovisionó el dispositivo.

  • Cambie cualquier aplicación que tenga que haga referencia al centro antiguo para que apunte al nuevo.

  • Cuando haya terminado, el nuevo centro debe estar en funcionamiento. El centro antiguo no debe tener ningún dispositivo activo y debe estar desconectado.

Revertir los cambios

Si decide revertir los cambios, estos son los pasos que debe realizar:

  • Actualice cada dispositivo para cambiar el nombre de host de IoT Hub a fin de que apunte al centro antiguo. Debe hacerlo con el mismo método que ha usado la primera vez que aprovisionó el dispositivo.

  • Cambie cualquier aplicación que tenga que haga referencia al centro nuevo para que apunte al antiguo. Por ejemplo, si usa Azure Analytics, es posible que tenga que volver a configurar la entrada de Azure Stream Analytics.

  • Elimine el nuevo centro.

  • Si tiene recursos de enrutamiento, la configuración del centro antiguo debe seguir apuntando a la configuración de enrutamiento correcta y debe funcionar con esos recursos después de reiniciar el centro.

Comprobar los resultados

Para comprobar los resultados, cambie la solución de IoT para que apunte al centro en la nueva ubicación y ejecútela. En otras palabras, realice las mismas acciones con el nuevo centro que ha realizado con el centro anterior y asegúrese de que funcionan correctamente.

Si ha implementado el enrutamiento, haga pruebas y asegúrese de que los mensajes se enrutan correctamente a los recursos.

Limpieza

No limpie hasta que tenga claro que el nuevo centro está listo y en funcionamiento, y que los dispositivos funcionan correctamente. Asegúrese también de probar el enrutamiento si usa esa característica. Cuando tenga todo listo, limpie los recursos antiguos con estos pasos:

  • Si todavía no lo ha hecho, elimine el centro antiguo. De esta forma, se quitan todos los dispositivos activos del centro.

  • Si tiene recursos de enrutamiento que ha trasladado a la nueva ubicación, puede eliminar los recursos de enrutamiento antiguos.

Pasos siguientes

Ha migrado un centro de IoT en un nuevo centro en una nueva región, incluidos los dispositivos. Para obtener más información sobre cómo realizar operaciones masivas en el registro de identidades de una instancia de un centro de IoT, consulte Importación y exportación de identidades de dispositivo de IoT Hub de forma masiva.