Implementación del módulo de Azure Blob Storage en IoT Edge en el dispositivo
Se aplica a: IoT Edge 1.5 IoT Edge 1.4
Importante
IoT Edge 1.5 LTS e IoT Edge 1.4 LTS son versiones compatibles. IoT Edge 1.4 LTS finaliza el ciclo de vida el 12 de noviembre de 2024. Si está usando una versión anterior, consulte Actualización de IoT Edge.
Hay varias maneras de implementar módulos en un dispositivo de IoT Edge, y todas ellas funcionan en los módulos de Azure Blob Storage en IoT Edge. Los dos métodos más sencillos son usar Azure Portal o las plantillas de Visual Studio Code.
Requisitos previos
Una instancia de IoT Hub en la suscripción de Azure.
Un dispositivo IoT Edge.
Si no tiene un dispositivo IoT Edge configurado, puede crear uno en una máquina virtual de Azure. Siga los pasos de alguno de los artículos de inicio rápido para Crear un dispositivo virtual Linux o Crear un dispositivo virtual Windows.
Extensión de Azure IoT Edge. La extensión de Herramientas de Azure IoT Edge para Visual Studio Code está en modo de mantenimiento.
Extensión de Azure IoT Hub si se implementa desde Visual Studio Code.
Implementación desde Azure Portal
Azure Portal le guía en la creación de un manifiesto de implementación y la inserción de la implementación en un dispositivo de IoT Edge.
Selección del dispositivo
- Inicie sesión en Azure Portal y vaya a IoT Hub.
- En el menú Administración de dispositivos, seleccione Dispositivos.
- En la lista, seleccione el dispositivo de IoT Edge de destino.
- Seleccione Set modules (Establecer módulos).
Configuración de un manifiesto de implementación
Un manifiesto de implementación es un documento JSON que describe qué módulos se van a implementar, cómo fluyen los datos entre los módulos y las propiedades deseadas de los módulos gemelos. Azure Portal cuenta con un asistente que le guía en la creación de un manifiesto de implementación. Tiene tres pasos organizados en pestañas: Módulos, Rutasy Revisar y crear.
Adición de módulos
En la sección Módulos IoT Edge de la página, seleccione la lista desplegable Agregar y seleccione Agregar módulo IoT Edge para mostrar la página Agregar módulo IoT Edge.
En la pestaña Configuración, proporcione un nombre para el módulo y especifique el URI de imagen del contenedor:
- Nombre del módulo IoT Edge:
azureblobstorageoniotedge
- URI de imagen:
mcr.microsoft.com/azure-blob-storage:latest
No seleccione Agregar hasta que haya especificado los valores en las pestañas Configuración del módulo, Opciones de creación del contenedor y Configuración de módulos gemelos, tal como se describe en este procedimiento.
Importante
Azure IoT Edge distingue mayúsculas y minúsculas al realizar llamadas a los módulos y el SDK de Storage también toma como valor predeterminado la minúsculas. Para asegurarse de que no se interrumpan las conexiones al módulo de Azure Blob Storage en IoT Edge, asígnele un nombre en minúsculas.
- Nombre del módulo IoT Edge:
Abra la pestaña Opciones de creación del contenedor.
Copie y pegue el siguiente código JSON en el cuadro para proporcionar información sobre la cuenta de almacenamiento y un punto de montaje para el almacenamiento en el dispositivo.
{ "Env":[ "LOCAL_STORAGE_ACCOUNT_NAME=<local storage account name>", "LOCAL_STORAGE_ACCOUNT_KEY=<local storage account key>" ], "HostConfig":{ "Binds":[ "<mount>" ], "PortBindings":{ "11002/tcp":[{"HostPort":"11002"}] } } }
Actualice el código JSON que ha copiado en Opciones de creación del contenedor con la siguiente información:
Reemplace
<local storage account name>
por un nombre que pueda recordar. Los nombres de cuenta tener de 3 a 24 caracteres, con letras en minúscula y números. No deben tener espacios.Actualice
<local storage account key>
por una clave base64 de 64 bytes. Puede generar una clave con herramientas como GeneratePlus. Estas credenciales se usan para acceder a Blob Storage desde otros módulos.Reemplace
<mount>
según el sistema operativo del contenedor. Especifique el nombre de un volumen o la ruta de acceso absoluta a un directorio del dispositivo de IoT Edge donde el módulo del blob almacena sus datos. El montaje de almacenamiento asigna una ubicación del dispositivo proporcionada a una ubicación establecida del módulo.
En el caso de contenedores Linux, el formato es <la ruta de acceso o el volumen de almacenamiento>:/blobroot. Por ejemplo:
- Use montaje de volumen:
my-volume:/blobroot
- Use montaje de enlace:
/srv/containerdata:/blobroot
. Asegúrese de seguir los pasos para conceder acceso al directorio al usuario del contenedor.
Importante
No cambie la segunda mitad del valor de montaje de almacenamiento, que señala a una ubicación específica en Blob Storage en el módulo de IoT Edge. El montaje de almacenamiento siempre debe terminar con :/blobroot para contenedores de Linux.
IoT Edge no quita volúmenes conectados a contenedores de módulos. Este comportamiento es por diseño, ya que permite conservar los datos entre instancias de contenedor, como escenarios de actualización. Sin embargo, si estos volúmenes se dejan sin usar, puede provocar el agotamiento del espacio en disco y los errores del sistema posteriores. Si usa volúmenes de Docker en su escenario, le recomendamos que use herramientas de Docker como eliminación de volúmenes de Docker o docker volume rm para quitar los volúmenes sin usar, especialmente en escenarios de producción.
En la pestaña Configuración de módulos gemelos, copie el siguiente código JSON y péguelo en el cuadro.
{ "deviceAutoDeleteProperties": { "deleteOn": <true, false>, "deleteAfterMinutes": <timeToLiveInMinutes>, "retainWhileUploading": <true,false> }, "deviceToCloudUploadProperties": { "uploadOn": <true, false>, "uploadOrder": "<NewestFirst, OldestFirst>", "cloudStorageConnectionString": "DefaultEndpointsProtocol=https;AccountName=<your Azure Storage Account Name>;AccountKey=<your Azure Storage Account Key>; EndpointSuffix=<your end point suffix>", "storageContainersForUpload": { "<source container name1>": { "target": "<your-target-container-name>" } }, "deleteAfterUpload": <true,false> } }
Configure cada propiedad con un valor adecuado, como indican los marcadores de posición. Si usa el simulador de IoT Edge, establezca los valores en las variables de entorno relacionadas de estas propiedades, como se describe en deviceToCloudUploadProperties y deviceAutoDeleteProperties.
Sugerencia
El nombre del contenedor
target
tiene restricciones de nomenclatura; por ejemplo, no se admite el uso de un prefijo$
. Para ver todas las restricciones, consulte Nombres de contenedor.Nota:
Si el destino del contenedor no tiene nombre o tiene el valor null en el parámetro
storageContainersForUpload
, se asignará un nombre predeterminado al destino. Si desea detener el proceso de carga en un contenedor, deberá quitarlo completamente del elementostorageContainersForUpload
. Para obtener más información, consulte la seccióndeviceToCloudUploadProperties
del artículo Almacenamiento de datos en el perímetro con Azure Blob Storage en IoT Edge.Para obtener información sobre cómo configurar deviceToCloudUploadProperties y deviceAutoDeleteProperties después de implementar el módulo, consulte Edición del módulo gemelo. Para más información sobre las propiedades deseadas, consulte Definición o actualización de las propiedades deseadas.
Seleccione Agregar.
Seleccione Siguiente: Rutas para continuar con la sección de rutas.
Especificación de rutas
Mantenga las rutas predeterminadas y seleccione Siguiente: revisar y crear para pasar a la sección de revisión.
Revisión de la implementación
La sección de revisión le muestra el manifiesto de implementación en formato JSON que se ha creado en función de las selecciones de las dos secciones anteriores. También hay dos módulos declarados que no agregó: $edgeAgent y $edgeHub. Estos dos módulos constituyen el entorno de ejecución de Azure IoT Edge y son valores predeterminados necesarios en todas las implementaciones.
Revise la información de implementación y seleccione Crear.
Comprobación de la implementación
Después de crear la implementación, regresará a la página Dispositivos de tu centro de IoT.
- Seleccione el dispositivo IoT Edge elegido como destino con la implementación para abrir sus detalles.
- En los detalles del dispositivo, compruebe que el módulo de Blob Storage aparece como Especificado en la implementación y Notificado por el dispositivo.
Los módulos pueden tardar unos minutos en iniciarse en el dispositivo y después notificarlo a IoT Hub. Actualice la página para ver el estado actualizado.
Implementación desde Visual Studio Code
Azure IoT Edge proporciona plantillas de Visual Studio Code que facilitan el desarrollo de soluciones de perímetro. Siga estos pasos para crear una nueva solución de IoT Edge con un módulo de Blob Storage y configurar el manifiesto de implementación.
Importante
La extensión de Visual Studio Code de Azure IoT Edge está en modo de mantenimiento.
Seleccione Ver>Paleta de comandos.
En la paleta de comandos, escriba y ejecute el comando Azure IoT Edge: New IoT Edge solution (Azure IoT Edge: nueva solución de IoT Edge).
Para crear la solución, siga las indicaciones de la paleta de comandos.
Campo Value Seleccionar carpeta Elija la ubicación en el equipo de desarrollo en la que Visual Studio Code creará los archivos de la solución. Proporcionar un nombre de la solución Escriba un nombre descriptivo para la solución o acepte el valor predeterminado EdgeSolution. Seleccionar plantilla del módulo Elija Existing Module (Enter full image URL) (Módulo existente [escribir URL completa de la imagen]). Proporcionar un nombre de módulo Escriba un nombre en minúsculas para el módulo, como azureblobstorageoniotedge.
Es importante usar un nombre en minúsculas para el módulo de Azure Blob Storage en IoT Edge. IoT Edge distingue mayúsculas y minúsculas al hacer referencia a módulos y el SDK de Storage toma como valor predeterminado la minúsculas.Provide Docker image for the module (Proporcionar imagen de Docker para el módulo) Proporcione el identificador URI: mcr.microsoft.com/azure-blob-storage:latest Visual Studio Code toma la información que le ha proporcionado, crea una solución IoT Edge y la carga en una nueva ventana. La plantilla de solución crea una plantilla de manifiesto de implementación que incluye la imagen del módulo de Blob Storage, pero es preciso configurar las opciones de creación del módulo.
Abra deployment.template.json en el área de trabajo de la solución nueva y busque la sección modules. Realice los cambios de configuración siguientes:
Copie y pegue el código siguiente en el campo
createOptions
del módulo blob Storage:```json "Env":[ "LOCAL_STORAGE_ACCOUNT_NAME=<local storage account name>", "LOCAL_STORAGE_ACCOUNT_KEY=<local storage account key>" ], "HostConfig":{ "Binds": ["<mount>"], "PortBindings":{ "11002/tcp": [{"HostPort":"11002"}] } }
Reemplace
<local storage account name>
por un nombre que pueda recordar. Los nombres de cuenta tener de 3 a 24 caracteres, con letras en minúscula y números. No deben tener espacios.Actualice
<local storage account key>
por una clave base64 de 64 bytes. Puede generar una clave con herramientas como GeneratePlus. Estas credenciales se usan para acceder a Blob Storage desde otros módulos.Reemplace
<mount>
según el sistema operativo del contenedor. Especifique el nombre de un volumen o la ruta de acceso absoluta a un directorio del dispositivo de IoT Edge en el que desea que el módulo del blob almacene sus datos. El montaje de almacenamiento asigna una ubicación del dispositivo proporcionada a una ubicación establecida del módulo.En el caso de contenedores Linux, el formato es <la ruta de acceso o el volumen de almacenamiento>:/blobroot. Por ejemplo:
- Use montaje de volumen:
my-volume:/blobroot
- Use montaje de enlace:
/srv/containerdata:/blobroot
. Asegúrese de seguir los pasos para conceder acceso al directorio al usuario del contenedor.
Importante
No cambie la segunda mitad del valor de montaje de almacenamiento, que señala a una ubicación específica en Blob Storage en el módulo de IoT Edge. El montaje de almacenamiento siempre debe terminar con :/blobroot para contenedores de Linux.
IoT Edge no quita volúmenes conectados a contenedores de módulos. Este comportamiento es por diseño, ya que permite conservar los datos entre instancias de contenedor, como escenarios de actualización. Sin embargo, si estos volúmenes se dejan sin usar, puede provocar el agotamiento del espacio en disco y los errores del sistema posteriores. Si usa volúmenes de Docker en su escenario, le recomendamos que use herramientas de Docker como eliminación de volúmenes de Docker o docker volume rm para quitar los volúmenes sin usar, especialmente en escenarios de producción.
- Use montaje de volumen:
Configure los elementos deviceToCloudUploadProperties y deviceAutoDeleteProperties del módulo. Para ello, agregue el siguiente código JSON al archivo deployment.template.json. Configure cada propiedad con un valor adecuado y guarde el archivo. Si usa el simulador de IoT Edge, establezca los valores en las variables de entorno relacionadas de estas propiedades, que puede encontrar en la sección de explicación de deviceToCloudUploadProperties y deviceAutoDeleteProperties
"<your azureblobstorageoniotedge module name>":{ "properties.desired": { "deviceAutoDeleteProperties": { "deleteOn": <true, false>, "deleteAfterMinutes": <timeToLiveInMinutes>, "retainWhileUploading": <true, false> }, "deviceToCloudUploadProperties": { "uploadOn": <true, false>, "uploadOrder": "<NewestFirst, OldestFirst>", "cloudStorageConnectionString": "DefaultEndpointsProtocol=https;AccountName=<your Azure Storage Account Name>;AccountKey=<your Azure Storage Account Key>;EndpointSuffix=<your end point suffix>", "storageContainersForUpload": { "<source container name1>": { "target": "<target container name1>" } }, "deleteAfterUpload": <true, false> } } }
Para obtener información sobre cómo configurar deviceToCloudUploadProperties y deviceAutoDeleteProperties después de implementar el módulo, consulte Edición del módulo gemelo. Para más información sobre las opciones de creación del contenedor, la directiva de reinicio y el estado deseado, consulte Propiedades deseadas de EdgeAgent.
Guarde el archivo deployment.template.json.
Haga clic con el botón derecho en deployment.template.json y seleccione Generar manifiesto de implementación de IoT Edge.
Visual Studio Code toma la información que especificó en deployment.template.json y la usa para crear un nuevo archivo de manifiesto de implementación. El manifiesto de implementación se crea en una carpeta config nueva en el área de trabajo de la solución. Una vez que tenga ese archivo, puede seguir los pasos descritos en Implementación de módulos de Azure IoT Edge con la CLI de Azure 2.0.
Implementación de varias instancias de módulo
Si desea implementar varias instancias del módulo Azure Blob Storage en IoT Edge, debe proporcionar una ruta de acceso de almacenamiento diferente y cambiar el valor HostPort
al que se enlaza el módulo. Los módulos de Blob Storage siempre exponen el puerto 11002 del contenedor, pero se puede declarar el puerto al que está enlazado en el host.
Edite el campo Opciones de creación del contenedor (en Azure Portal) o createOptions (en el archivo deployment.template.json en Visual Studio Code) para cambiar el valor HostPort
:
"PortBindings":{
"11002/tcp": [{"HostPort":"<port number>"}]
}
Cuando se conecta a módulos de Blob Storage adicionales, cambie el punto de conexión para que apunte al puerto de host actualizado.
Configuración de la compatibilidad de proxy
Si su organización usa un servidor proxy, tiene que configurar la compatibilidad con el proxy para los módulos en tiempo de ejecución de edgeAgent y edgeHub. Este proceso implica dos tareas:
- Configuración de los demonios en el entorno en tiempo de ejecución y del agente de IoT Edge en el dispositivo.
- Establezca la variable de entorno HTTPS_PROXY para los módulos en el archivo JSON del manifiesto de implementación.
Este proceso se describe en Configuración de un dispositivo de IoT Edge para que se comunique a través de un servidor proxy.
Además, un módulo de almacenamiento de blobs también requiere el valor HTTPS_PROXY en el archivo del manifiesto de implementación. Puede editar directamente el archivo del manifiesto de implementación o usar Azure Portal.
Navegue a su centro de IoT en Azure Portal y seleccione Dispositivos en el menú Administración de dispositivos.
Seleccione el dispositivo con el módulo que desea configurar.
Seleccione Set modules (Establecer módulos).
En la sección Módulos de IoT Edge de la página, seleccione el módulo de almacenamiento de blobs.
En la página Actualizar módulo IoT Edge, seleccione la pestaña Variables de entorno.
Agregue
HTTPS_PROXY
para el Nombre y la dirección URL para el Valor.Seleccione Actualizar y, a continuación, Revisar y crear.
Observe que el proxy se agrega al módulo en el manifiesto de implementación y seleccione Crear.
Para comprobar la configuración, seleccione el módulo en la página de detalles del dispositivo y, en la parte inferior de la página de Detalles de los módulos de IoT Edge, seleccione la pestaña Variables de entorno.
Pasos siguientes
Más información sobre Azure Blob Storage en IoT Edge.
Para más información sobre los manifiestos de implementación y cómo crearlos, consulte Descripción de cómo se pueden utilizar, configurar y reutilizar los módulos de IoT Edge.