Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
La configuración de la subida de archivos en IoT Hub permite que los dispositivos conectados suban archivos a una cuenta de almacenamiento de Azure. En este artículo se muestra cómo configurar cargas de archivos en ioT Hub mediante Azure Portal, la CLI de Azure y Azure PowerShell.
Para usar la funcionalidad de carga de archivos en IoT Hub, primero debe asociar una cuenta de Azure Storage y un contenedor de blobs al centro de IoT. IoT Hub genera automáticamente identificadores URI de SAS con permisos de escritura en este contenedor de blobs para los dispositivos que se utilizarán cuando se carguen archivos. Además de la cuenta de almacenamiento y el contenedor de blobs, puede establecer el período de vida del URI de SAS y el tipo de autenticación que IoT Hub usa con Azure Storage. También puede configurar opciones para las notificaciones de carga de archivos opcionales que IoT Hub puede entregar a los servicios de back-end.
Requisitos previos
Una cuenta de Azure activa. En caso de no tener ninguna, puede crear una cuenta gratuita en tan solo unos minutos.
Una instancia de IoT Hub en la suscripción de Azure. Si aún no tiene un centro, puede seguir los pasos descritos en Creación de un centro de IoT.
Configuración del centro de IoT en Azure Portal
En Azure Portal, navegue a su centro de IoT y seleccione Carga de archivos para mostrar las propiedades de carga de archivos. A continuación, seleccione Contenedor de Azure Storage en Configuración del contenedor de almacenamiento.
Seleccione una cuenta de Azure Storage y un contenedor de blobs en su suscripción actual para asociarlos a su centro de IoT. Si es necesario, puede crear una cuenta de Azure Storage en el panel Cuentas de almacenamiento y un contenedor de blobs en el panel Contenedores.
Después de seleccionar una cuenta de Azure Storage y un contenedor de blobs, configure el resto de las propiedades de carga de archivos.
Receive notifications for uploaded files(Recibir notificaciones para archivos cargados): habilite o deshabilite las notificaciones de carga de archivos mediante el botón de alternancia.
SAS TTL(TTL SAS): este valor es el periodo de vida de los URI de SAS que Azure IoT Hub devuelve al dispositivo. Se establece en una hora de forma predeterminada, pero se puede personalizar con otros valores mediante el control deslizante.
File notification settings default TTL (TTL predeterminado de configuración de notificación de archivos): período de vida de una notificación de carga de archivos antes de que expire. Se establece en un día de forma predeterminada, pero se puede personalizar con otros valores mediante el control deslizante.
File notification maximum delivery count(Número máximo de entregas de notificaciones de archivo): el número de veces que Azure IoT Hub tratará de entregar una notificación de carga de archivos. Se establece en 10 días de forma predeterminada, pero se puede personalizar con otros valores mediante el control deslizante.
Tipo de autenticación: de forma predeterminada, Azure IoT Hub usa la autenticación basada en claves para la conexión y autorización con Azure Storage. También puede configurar identidades administradas asignadas por el usuario o asignadas por el sistema para autenticar Azure IoT Hub con Azure Storage. Las identidades administradas proporcionan a los servicios de Azure una identidad administrada automáticamente en Microsoft Entra ID de forma segura. Para obtener información sobre cómo configurar identidades administradas, consulte Compatibilidad de IoT Hub para identidades administradas. Después de configurar una o varias identidades administradas en su cuenta de Azure Storage e IoT Hub, puede seleccionar una para la autenticación con Azure Storage con los botones Asignado por el sistema o Asignado por el usuario.
Nota:
La configuración del tipo de autenticación establece cómo se autentica el centro de IoT con la cuenta de Azure Storage. Los dispositivos siempre se autentican con Azure Storage mediante el URI de SAS que obtienen del centro de IoT.
Haga clic en Guardar para guardar la configuración. Asegúrese de comprobar la confirmación de que finalización correcta. Algunas selecciones, como la de Tipo de autenticación, solo se validan después de guardar la configuración.
Requisitos previos
Una cuenta de Azure activa. En caso de no tener ninguna, puede crear una cuenta gratuita en tan solo unos minutos.
Una instancia de IoT Hub en la suscripción de Azure. Si aún no tiene un centro, puede seguir los pasos descritos en Creación de un centro de IoT.
Una cuenta de Azure Storage con un contenedor de blobs. Si no tiene una cuenta de Azure Storage, puede usar la CLI de Azure para crear una. Para más información, consulte Creación de una cuenta de almacenamiento.
Use el entorno de Bash en Azure Cloud Shell. Para más información, consulte Introducción a Azure Cloud Shell.
Si prefieres ejecutar comandos de referencia CLI localmente, instala la CLI de Azure. Si estás utilizando Windows o macOS, considera ejecutar Azure CLI en un contenedor Docker. Para obtener más información, consulte Cómo ejecutar el Azure CLI en un contenedor de Docker.
Si estás utilizando una instalación local, inicia sesión en Azure CLI utilizando el comando az login. Siga los pasos que se muestran en el terminal para completar el proceso de autenticación. Para ver otras opciones de inicio de sesión, consulte Autenticación en Azure mediante la CLI de Azure.
En caso de que se le solicite, instale las extensiones de la CLI de Azure la primera vez que la use. Para obtener más información sobre las extensiones, consulte Uso y administración de extensiones con la CLI de Azure.
Ejecute az version para ver la versión y las bibliotecas dependientes que están instaladas. Para actualizar a la versión más reciente, ejecute az upgrade.
Inicio de sesión y establecimiento de la cuenta de Azure
Inicie sesión en la cuenta de Azure y seleccione su suscripción. Si usa Azure Cloud Shell, debería iniciar sesión ya; Sin embargo, es posible que tenga que seleccionar la suscripción de Azure si tiene varias suscripciones.
En la línea de comandos, ejecute el comando login:
az loginSiga las instrucciones para realizar la autenticación mediante el código e inicie sesión en la cuenta de Azure a través de un explorador web.
Si tiene varias suscripciones de Azure, iniciar sesión en Azure le concede acceso a todas las cuentas de Azure asociadas con las credenciales. Use el siguiente comando para mostrar las cuentas de Azure que tiene disponibles para su uso:
az account listUse el comando siguiente para seleccionar la suscripción que desea usar para ejecutar los comandos para crear el centro de IoT. Puede usar el nombre de la suscripción o el identificador de la salida del comando anterior:
az account set --subscription {your subscription name or id}
Configuración del acceso de la cuenta de almacenamiento
En los pasos siguientes se supone que creó la cuenta de almacenamiento mediante el modelo de implementación de Resource Manager y no el modelo de implementación clásica .
Para configurar las cargas de archivos desde los dispositivos, debe conceder a su centro de IoT permisos de acceso a la cuenta de Azure Storage. La cuenta de almacenamiento debe estar en la misma suscripción que el centro de IoT. También necesita el nombre de un contenedor de blobs en la cuenta de almacenamiento.
Puede usar la autenticación basada en claves o basada en identidades para proporcionar permisos de acceso. Microsoft recomienda la autenticación basada en identidades como una opción más segura.
Autenticación basada en claves
Para la autenticación basada en claves, proporcione la cadena de conexión para la cuenta de almacenamiento. Use el comando az storage account show-connection-string para recuperar las claves de la cuenta de almacenamiento.
Anote el valor connectionString. La cadena de conexión tiene un aspecto similar al siguiente resultado:
{
"connectionString": "DefaultEndpointsProtocol=https;EndpointSuffix=core.windows.net;AccountName={your_storage_account_name};AccountKey={your_storage_account_key}"
}
Habilitación basada en identidad
Puede usar identidades administradas asignadas por el sistema o identidades administradas asignadas por el usuario para la autenticación basada en identidades. Para más información, consulte Compatibilidad de IoT Hub con identidades administradas.
Use el comando az role assignment create para asignar un rol a la identidad administrada. Para más información, vea Asignación de un rol de Azure para el acceso a datos de blob.
Configuración del centro de IoT
Ahora puede configurar el centro de IoT para permitir la capacidad de cargar archivos en IoT Hub mediante los detalles de la cuenta de almacenamiento.
La configuración requiere los siguientes valores:
Contenedor de almacenamiento:: un contenedor de blobs en una cuenta de Azure Storage en la suscripción actual para asociar con IoT Hub. Ha recuperado la información necesaria de la cuenta de almacenamiento en la sección anterior. IoT Hub genera automáticamente identificadores URI de SAS con permisos de escritura en este contenedor de blobs para los dispositivos que se utilizarán cuando se carguen archivos.
Recibir notificaciones para archivos cargados: habilite o deshabilite las notificaciones de carga de archivos.
SAS TTL(TTL SAS): este valor es el periodo de vida de los URI de SAS que Azure IoT Hub devuelve al dispositivo. Establézcalo en una hora de forma predeterminada.
File notification settings default TTL (TTL predeterminado de configuración de notificación de archivos): el periodo de vida de una notificación de carga de archivos antes de que expire. Establézcalo en un día de forma predeterminada.
File notification maximum delivery count(Número máximo de entregas de notificaciones de archivo): el número de veces que Azure IoT Hub tratará de entregar una notificación de carga de archivos. Establézcalo en 10 de forma predeterminada.
File notification lock duration (Duración del bloqueo de notificación de archivo): duración del bloqueo de la cola de notificación de archivos. Establézcalo en 60 segundos de forma predeterminada.
Tipo de autenticación: tipo de autenticación para IoT Hub que se va a usar con Azure Storage. Esta configuración determina cómo el centro de IoT se autentica y autoriza con Azure Storage. El valor predeterminado es la autenticación basada en claves; sin embargo, se recomiendan las opciones de autenticación de identidad administrada asignadas por el sistema o asignadas por el usuario. Las identidades administradas proporcionan a los servicios de Azure una identidad administrada automáticamente en Microsoft Entra ID de forma segura.
Nota:
La configuración del tipo de autenticación establece cómo se autentica el centro de IoT con la cuenta de Azure Storage. Los dispositivos siempre se autentican con Azure Storage mediante el URI de SAS que obtienen del centro de IoT.
Los comandos siguientes muestran cómo configurar las opciones de carga de archivos en ioT Hub. Estos comandos se muestran por separado para mayor claridad, pero, normalmente, emitiría un solo comando con todos los parámetros necesarios para su escenario. Incluya las comillas donde aparezcan en la línea de comandos. No incluya las llaves. Puede encontrar más detalles sobre cada parámetro en la documentación de la CLI de Azure para el comando az iot hub update .
El comando siguiente configura la cuenta de almacenamiento y el contenedor de blobs.
az iot hub update --name {your iot hub name} \
--fileupload-storage-connectionstring "{your storage account connection string}" \
--fileupload-storage-container-name "{your container name}"
El siguiente comando establece el tiempo de vida del URI de SAS al valor predeterminado (una hora).
az iot hub update --name {your iot hub name} \
--fileupload-sas-ttl 1
El siguiente comando habilita las notificaciones de archivo y establece las propiedades de notificación de archivo en sus valores predeterminados. (El tiempo de notificación de carga de archivos en vivo se establece en una hora y la duración del bloqueo se establece en 60 segundos).
az iot hub update --name {your iot hub name} \
--fileupload-notifications true \
--fileupload-notification-max-delivery-count 10 \
--fileupload-notification-ttl 1 \
--fileupload-notification-lock-duration 60
El siguiente comando configura la autenticación basada en claves:
az iot hub update --name {your iot hub name} \
--fileupload-storage-auth-type keyBased
El comando siguiente configura la autenticación mediante la identidad administrada asignada por el sistema de IoT Hub. Para poder ejecutar este comando, debe habilitar la identidad administrada asignada por el sistema para su IoT Hub y concederle el rol de control de acceso basado en roles adecuado en su cuenta de Azure Storage. Para obtener información sobre cómo hacerlo, consulte Compatibilidad de IoT Hub con identidades administradas.
az iot hub update --name {your iot hub name} \
--fileupload-storage-auth-type identityBased \
--fileupload-storage-identity [system]
Los siguientes comandos recuperan las identidades administradas asignadas por el usuario configuradas en ioT Hub y configuran la autenticación con una de ellas. Para poder usar una identidad administrada asignada a usuario para autenticarse, debe configurarse en el centro de IoT y concedérsele un rol de acceso apropiado en la cuenta de almacenamiento de Azure. Para más información y pasos, consulte Compatibilidad de IoT Hub con identidades administradas.
Para consultar las identidades gestionadas asignadas por el usuario en IoT Hub, use el comando az iot hub identity show.
az iot hub identity show --name {your iot hub name} --query userAssignedIdentities
El comando devuelve una colección de las identidades administradas asignadas por el usuario configuradas en el centro de IoT. En la salida siguiente se muestra una colección que contiene una única identidad administrada asignada por el usuario.
{
"/subscriptions/{your subscription ID}/resourcegroups/{your resource group}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{your user-assigned managed identity name}":
{
"clientId": "<client ID GUID>",
"principalId": "<principal ID GUID>"
}
}
El siguiente comando configura la autenticación para usar la identidad asignada por el usuario anterior.
az iot hub update --name {your iot hub name} \
--fileupload-storage-auth-type identityBased \
--fileupload-storage-identity "/subscriptions/{your subscription ID}/resourcegroups/{your resource group}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{your user-assigned managed identity name}"
Puede revisar la configuración en ioT Hub mediante el siguiente comando:
az iot hub show --name {your iot hub name}
Para revisar solo la configuración de carga de archivos, use el siguiente comando:
az iot hub show --name {your iot hub name}
--query '[properties.storageEndpoints, properties.enableFileUploadNotifications, properties.messagingEndpoints.fileNotifications]'
En la mayoría de las situaciones, el uso de los parámetros con nombre en los comandos de la CLI de Azure es más sencillo; sin embargo, también puede configurar las opciones de carga de archivos con el --set parámetro . Los siguientes comandos pueden ayudarle a comprender cómo.
az iot hub update --name {your iot hub name} \
--set properties.storageEndpoints.'$default'.connectionString="{your storage account connection string}"
az iot hub update --name {your iot hub name} \
--set properties.storageEndpoints.'$default'.containerName="{your storage container name}"
az iot hub update --name {your iot hub name} \
--set properties.storageEndpoints.'$default'.sasTtlAsIso8601=PT1H0M0S
az iot hub update --name {your iot hub name} \
--set properties.enableFileUploadNotifications=true
az iot hub update --name {your iot hub name} \
--set properties.messagingEndpoints.fileNotifications.maxDeliveryCount=10
az iot hub update --name {your iot hub name} \
--set properties.messagingEndpoints.fileNotifications.ttlAsIso8601=PT1H0M0S
Requisitos previos
Una cuenta de Azure activa. En caso de no tener ninguna, puede crear una cuenta gratuita en tan solo unos minutos.
Un centro de Azure IoT. Si no tiene un centro de IoT, puede usar el cmdletNew-AzIoTHub para crear uno o seguir los pasos descritos en Creación de un centro de IoT.
Una cuenta de almacenamiento de Azure. Si no tiene una cuenta de Azure Storage, puede usar los cmdlets de PowerShell de Azure Storage para crear una o usar el portal para crear una cuenta de almacenamiento.
Use el entorno PowerShell en Azure Cloud Shell.
Si lo prefiere, instale PowerShell localmente.
- Instale el módulo de Azure Az PowerShell. (El módulo se instala de forma predeterminada en el entorno de PowerShell de Azure Cloud Shell).
- Inicie sesión en PowerShell mediante el comando Connect-AzAccount . Siga los pasos que se muestran en el terminal para completar el proceso de autenticación. Para obtener más opciones de inicio de sesión, consulte Inicio de sesión con Azure PowerShell.
Inicio de sesión y establecimiento de la cuenta de Azure
Inicie sesión en la cuenta de Azure y seleccione su suscripción. Si usa Azure Cloud Shell, debería iniciar sesión ya; Sin embargo, es posible que tenga que seleccionar la suscripción de Azure si tiene varias suscripciones.
En el símbolo del sistema de PowerShell, ejecute el cmdlet Connect-AzAccount :
Connect-AzAccountSi tiene varias suscripciones de Azure, iniciar sesión en Azure le concede acceso a todas las suscripciones de Azure asociadas a sus credenciales. Use el comando Get-AzSubscription para enumerar las suscripciones de Azure disponibles para su uso:
Get-AzSubscriptionUse el siguiente comando para seleccionar la suscripción que desea usar para ejecutar los comandos para administrar el centro de IoT. Puede usar el nombre de la suscripción o el identificador de la salida del comando anterior:
Select-AzSubscription ` -Name "{your subscription name}"Nota:
El comando Select-AzSubscription es un alias del comando Select-AzContext que permite usar el nombre de suscripción (Nombre) o el identificador de suscripción (Id) devuelto por el comando Get-AzSubscription en lugar del nombre de contexto más complejo necesario para el comando Select-AzContext .
Recuperación de los detalles de la cuenta de almacenamiento
En los pasos siguientes se supone que creó la cuenta de almacenamiento mediante el modelo de implementación de Resource Manager y no el modelo de implementación clásica .
Para configurar las subidas de archivos desde sus dispositivos, necesita la cadena de conexión para una cuenta de almacenamiento de Azure. La cuenta de almacenamiento debe estar en la misma suscripción que el centro de IoT. También necesita el nombre de un contenedor de blobs en la cuenta de almacenamiento. Use el comando Get-AzStorageAccountKey para recuperar las claves de la cuenta de almacenamiento:
Get-AzStorageAccountKey `
-Name {your storage account name} `
-ResourceGroupName {your storage account resource group}
Anote el valor de clave de la cuenta de almacenamiento key1 . Lo necesita en los pasos siguientes.
Puede usar un contenedor de blobs existente para las cargas de archivos o crear uno nuevo:
Para enumerar los contenedores de blobs existentes en la cuenta de almacenamiento, use los comandos New-AzStorageContext y Get-AzStorageContainer :
$ctx = New-AzStorageContext ` -StorageAccountName {your storage account name} ` -StorageAccountKey {your storage account key} Get-AzStorageContainer -Context $ctxPara crear un contenedor de blobs en la cuenta de almacenamiento, use los comandos New-AzStorageContext y New-AzStorageContainer :
$ctx = New-AzStorageContext ` -StorageAccountName {your storage account name} ` -StorageAccountKey {your storage account key} New-AzStorageContainer ` -Name {your new container name} ` -Permission Off ` -Context $ctx
Configuración del centro de IoT
Ahora puede configurar el centro de IoT para cargar archivos en IoT Hub mediante los detalles de la cuenta de almacenamiento.
La configuración requiere los siguientes valores:
Contenedor de almacenamiento:: un contenedor de blobs en una cuenta de Azure Storage en la suscripción actual para asociar con IoT Hub. Ha recuperado la información necesaria de la cuenta de almacenamiento en la sección anterior. IoT Hub genera automáticamente identificadores URI de SAS con permisos de escritura en este contenedor de blobs para los dispositivos que se utilizarán cuando se carguen archivos.
Recibir notificaciones para archivos cargados: habilite o deshabilite las notificaciones de carga de archivos.
SAS TTL(TTL SAS): este valor es el periodo de vida de los URI de SAS que Azure IoT Hub devuelve al dispositivo. Establézcalo en una hora de forma predeterminada.
File notification settings default TTL (TTL predeterminado de configuración de notificación de archivos): período de vida de una notificación de carga de archivos antes de que expire. Establézcalo en un día de forma predeterminada.
File notification maximum delivery count(Número máximo de entregas de notificaciones de archivo): el número de veces que Azure IoT Hub tratará de entregar una notificación de carga de archivos. Establézcalo en 10 de forma predeterminada.
Utilice el comando Set-AzIotHub para configurar los valores de carga de archivos en el Hub de IoT.
Set-AzIotHub `
-ResourceGroupName "{your iot hub resource group}" `
-Name "{your iot hub name}" `
-FileUploadNotificationTtl "01:00:00" `
-FileUploadSasUriTtl "01:00:00" `
-EnableFileUploadNotifications $true `
-FileUploadStorageConnectionString "DefaultEndpointsProtocol=https;AccountName={your storage account name};AccountKey={your storage account key};EndpointSuffix=core.windows.net" `
-FileUploadContainerName "{your blob container name}" `
-FileUploadNotificationMaxDeliveryCount 10
Nota:
De forma predeterminada, IoT Hub se autentica con Azure Storage mediante la clave de cuenta en la cadena de conexión. La autenticación mediante identidades administradas asignadas por el sistema o asignadas por el usuario también está disponible. Las identidades administradas proporcionan a los servicios de Azure una identidad administrada automáticamente en Microsoft Entra ID de forma segura. Para más información, consulte Compatibilidad de IoT Hub con identidades administradas. Actualmente, no hay parámetros en el comando Set-AzIotHub para establecer el tipo de autenticación.