Configuración de cargas de archivos de IoT Hub mediante PowerShell

En este artículo se muestra cómo configurar cargas de archivos en el centro de IoT mediante 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 configurar las opciones para las notificaciones opcionales de carga de archivos que IoT Hub puede entregar a los servicios de back-end.

Nota

Se recomienda usar el módulo Azure Az de PowerShell para interactuar con Azure. Consulte Instalación de Azure PowerShell para empezar. Para más información sobre cómo migrar al módulo Az de PowerShell, consulte Migración de Azure PowerShell de AzureRM a Az.

Requisitos previos

Inicio de sesión y configuración de la cuenta de Azure

Inicie sesión en la cuenta de Azure y seleccione su suscripción. Si usa Azure Cloud Shell, ya debería haber iniciado sesión; pero es posible que todavía tenga que seleccionar la suscripción de Azure si tiene varias suscripciones.

  1. En el símbolo del sistema de PowerShell, ejecute el cmdlet Connect-AzAccount:

    Connect-AzAccount
    
  2. Si tiene varias suscripciones de Azure, el inicio de sesión en Azure le concede acceso a todas las suscripciones de Azure asociadas a sus credenciales. Use el comando Get-AzSubscription para mostrar las suscripciones de Azure que están disponibles para su uso:

    Get-AzSubscription
    

    Use el siguiente comando para seleccionar la suscripción que desea usar para ejecutar los comandos para administrar su 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 de Select-AzContext que permite usar el nombre de la suscripción (Name) o el id. (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 siguientes pasos se supone que ha creado la cuenta de almacenamiento mediante el modelo de implementación de Resource Manager, y no el modelo clásico.

Para configurar cargas de archivos desde sus dispositivos, necesitará la cadena de conexión de una cuenta de almacenamiento de Azure. Esta cuenta debe encontrarse en la misma suscripción que IoT Hub. También necesitará el nombre de un contenedor de blobs de 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 la clave de almacenamiento key1. La necesitará en los pasos siguientes.

Puede usar un contenedor de blobs existente para sus cargas de archivos o crear uno nuevo:

  • Para mostrar 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 $ctx
    
  • Para 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 el centro de IoT con los datos de su 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. En la sección anterior, recuperó la información necesaria de la cuenta de almacenamiento. 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.

  • Receive notifications for uploaded files (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. De forma predeterminada, está establecido en una hora.

  • 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 caduque. De forma predeterminada, está establecido en un día.

  • 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. De forma predeterminada, está establecido en 10.

Use el comando Set-AzIotHub para configurar la carga de archivos en el centro 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. También está disponible la autenticación mediante identidades administradas asignadas por el sistema o por el usuario. Las identidades administradas proporcionan a los servicios de Azure una identidad administrada automáticamente en Microsoft Entra ID de forma segura. Para obtener más información, vea Compatibilidad de IoT Hub con identidades administradas. Actualmente no hay ningún parámetro en el comando Set-AzIotHub para establecer el tipo de autenticación. En su lugar, puede usar Azure Portal o la CLI de Azure.

Pasos siguientes