Partilhar via


Configurar os carregamentos de ficheiros do Hub IoT com o portal do Azure

Configurar o carregamento de ficheiros no seu hub IoT permite que os seus dispositivos conectados carreguem ficheiros para uma conta de armazenamento Azure. Este artigo mostra-lhe como configurar o carregamento de ficheiros no seu hub IoT usando o portal Azure, Azure CLI e Azure PowerShell.

Para usar a funcionalidade de carregamento de arquivo no Hub IoT, você deve primeiro associar uma conta de armazenamento do Azure e um contêiner de blob ao seu hub IoT. O Hub IoT gera automaticamente URIs SAS com permissões de gravação para esse contêiner de blob para os dispositivos usarem quando carregarem arquivos. Além da conta de armazenamento e do contêiner de blob, você pode definir o tempo de vida útil para o URI SAS e o tipo de autenticação que o Hub IoT usa com o armazenamento do Azure. Você também pode definir configurações para as notificações de carregamento de arquivo opcionais que o Hub IoT pode fornecer aos serviços de back-end.

Pré-requisitos

  • Uma conta ativa do Azure. Se não tiver uma conta, pode criar uma conta gratuita em apenas alguns minutos.

  • Um hub IoT em sua assinatura do Azure. Se você ainda não tiver um hub, siga as etapas em Criar um hub IoT.

Configure o seu hub IoT no portal Azure

  1. No portal do Azure, navegue até seu hub IoT e selecione Carregamento de arquivo para exibir as propriedades de carregamento de arquivo. Em seguida, selecione Contêiner de Armazenamento do Azure em Configurações de contêiner de armazenamento.

    Captura de ecrã que mostra como configurar as definições de carregamento de ficheiros no portal.

  2. Selecione uma conta de Armazenamento do Azure e um contêiner de blob em sua assinatura atual para associar ao seu hub IoT. Se necessário, você pode criar uma conta de Armazenamento do Azure no painel Contas de armazenamento e criar um contêiner de blob no painel Contêineres.

    Captura de ecrã a mostrar como visualizar contentores de armazenamento para carregamento de ficheiros.

  3. Depois de selecionar uma conta de Armazenamento do Azure e um contêiner de blob, configure o restante das propriedades de carregamento de arquivo.

    • Receber notificações de ficheiros carregados: ative ou desative as notificações de carregamento de ficheiros através do botão de alternância.

    • TTL SAS: essa configuração é o tempo de vida útil dos URIs SAS retornados ao dispositivo pelo Hub IoT. Definido como uma hora por padrão, mas pode ser personalizado para outros valores usando o controle deslizante.

    • Configurações de notificação de arquivo TTL padrão: o tempo de vida útil de uma notificação de upload de arquivo antes de expirar. Definido como um dia por padrão, mas pode ser personalizado para outros valores usando o controle deslizante.

    • Contagem máxima de entrega de notificação de arquivo: o número de vezes que o Hub IoT tenta entregar uma notificação de carregamento de arquivo. Definido como 10 por padrão, mas pode ser personalizado para outros valores usando o controle deslizante.

    • Tipo de autenticação: por padrão, o Hub IoT do Azure usa a autenticação baseada em chave para se conectar e autorizar com o Armazenamento do Azure. Você também pode configurar identidades gerenciadas atribuídas pelo usuário ou pelo sistema para autenticar o Hub IoT do Azure com o Armazenamento do Azure. As identidades geridas proporcionam aos serviços do Azure uma identidade gerida automaticamente no Microsoft Entra ID de forma segura. Para saber como configurar identidades gerenciadas, consulte Suporte do Hub IoT para identidades gerenciadas. Depois de configurar uma ou mais identidades gerenciadas em sua conta de Armazenamento do Azure e hub IoT, você pode selecionar uma para autenticação com o armazenamento do Azure com os botões Atribuído pelo Sistema ou Atribuído pelo Usuário.

      Nota

      A configuração de tipo de autenticação define como seu hub IoT é autenticado com sua conta de Armazenamento do Azure. Os dispositivos sempre se autenticam no Armazenamento do Azure usando o URI SAS que obtêm do hub IoT.

  4. Selecione Guardar para guardar as definições. Certifique-se de verificar a confirmação para a conclusão bem-sucedida. Algumas seleções, como Tipo de autenticação, são validadas somente depois que você salva as configurações.

Pré-requisitos

  • Uma conta ativa do Azure. Se não tiver uma conta, pode criar uma conta gratuita em apenas alguns minutos.

  • Um hub IoT em sua assinatura do Azure. Se você ainda não tiver um hub, siga as etapas em Criar um hub IoT.

  • Uma conta Azure Storage com um contentor de blobs. Se não tiver uma conta Azure Storage, pode usar a CLI Azure para criar uma. Para obter mais informações, veja Criar uma conta de armazenamento.

Inicie sessão e defina a sua conta Azure

Inicie sessão na sua conta do Azure e selecione a sua subscrição. Se estiveres a usar Azure Cloud Shell, já deves estar com a sessão iniciada; no entanto, ainda podes precisar de selecionar a tua subscrição do Azure se tiveres várias subscrições.

  1. No prompt de comandos, execute o comando de login:

    az login
    

    Siga as instruções para se autenticar com o código e inicie sessão na sua conta do Azure através de um browser.

  2. Se tiver várias subscrições do Azure, iniciar sessão no Azure dá-lhe acesso a todas as contas do Azure associadas às suas credenciais. Utilize o comando para listar as contas do Azure disponíveis e que pode utilizar:

    az account list
    

    Use o comando seguinte para selecionar a subscrição que pretende usar para executar os comandos que criam o seu hub IoT. Pode utilizar o nome ou o ID da subscrição da saída do comando anterior:

    az account set --subscription {your subscription name or id}
    

Configurar o acesso à conta de armazenamento

Os passos seguintes assumem que criou a sua conta de armazenamento usando o modelo de implementação Resource Manager e não o Classic.

Para configurar o carregamento de ficheiros a partir dos seus dispositivos, precisa de dar permissões de acesso ao seu hub IoT à conta Azure Storage. A conta de armazenamento deve estar na mesma subscrição do seu hub IoT. Também precisa do nome de um contentor de blob na conta de armazenamento.

Pode usar autenticação baseada em chave ou em identidade para fornecer permissões de acesso. A Microsoft recomenda a autenticação baseada em identidade como uma opção mais segura.

Autenticação baseada em chave

Para autenticação baseada em chaves, forneça a cadeia de ligação para a sua conta de armazenamento. Use o comando az storage account show-connection-string para recuperar as chaves da sua conta de armazenamento.

Anote o valor connectionString. A cadeia de ligação assemelha-se à seguinte saída:

{
  "connectionString": "DefaultEndpointsProtocol=https;EndpointSuffix=core.windows.net;AccountName={your_storage_account_name};AccountKey={your_storage_account_key}"
}

Autenticação baseada em identidade

Pode usar identidades geridas atribuídas pelo sistema ou identidades geridas atribuídas pelo utilizador para autenticação baseada em identidade. Para mais informações, consulte o suporte IoT Hub para identidades geridas.

Usa o comando az role assignment create para atribuir uma função à sua identidade gerida. Para obter mais informações, veja Atribuir uma função do Azure para acesso aos dados de blobs.

Configurar seu hub IoT

Agora pode configurar o seu hub IoT para permitir o upload de ficheiros para o hub IoT usando os dados da sua conta de armazenamento.

A configuração requer os seguintes valores:

  • Contentor de armazenamento: Um contentor blob numa conta de armazenamento Azure na sua assinatura atual Azure para associar ao seu hub IoT. Obteve as informações necessárias da conta de armazenamento na seção anterior. O Hub IoT gera automaticamente URIs SAS com permissões de gravação para esse contêiner de blob para os dispositivos usarem quando carregarem arquivos.

  • Receber notificações para ficheiros carregados: Ative ou desative as notificações de carregamento de ficheiros.

  • TTL SAS: essa configuração é o tempo de vida útil dos URIs SAS retornados ao dispositivo pelo Hub IoT. Definido para uma hora por padrão.

  • TTL predefinido das definições de notificação de ficheiro: O tempo de vida útil de uma notificação de carregamento de ficheiro antes de expirar. Definido para um dia por padrão.

  • Contagem máxima de entrega de notificação de arquivo: o número de vezes que o Hub IoT tenta entregar uma notificação de carregamento de arquivo. Definido para 10 por padrão.

  • Duração do bloqueio de notificação de ficheiro: A duração do bloqueio da fila de notificações de ficheiros. Definido para 60 segundos por defeito.

  • Tipo de autenticação: O tipo de autenticação para o IoT Hub a usar com o Azure Storage. Esta configuração determina como o seu hub IoT se autentica e autoriza com o Azure Storage. O padrão é a autenticação baseada em chaves; no entanto, recomendam-se as opções de autenticação de identidade gerida atribuídas pelo sistema ou pelo utilizador. As identidades geridas proporcionam aos serviços do Azure uma identidade gerida automaticamente no Microsoft Entra ID de forma segura.

    Nota

    A configuração de tipo de autenticação define como seu hub IoT é autenticado com sua conta de Armazenamento do Azure. Os dispositivos sempre se autenticam no Armazenamento do Azure usando o URI SAS que obtêm do hub IoT.

Os comandos seguintes mostram como configurar as definições de upload de ficheiros no seu hub IoT. Estes comandos são mostrados separadamente para maior clareza, mas, normalmente, seria emitido um único comando com todos os parâmetros necessários para o seu cenário. Inclua aspas onde aparecem na linha de comandos. Não inclua as chaves. Mais detalhes sobre cada parâmetro podem ser encontrados na documentação do Azure CLI para o comando az iot hub update .

O comando seguinte configura a conta de armazenamento e o contentor do blob.

az iot hub update --name {your iot hub name} \
    --fileupload-storage-connectionstring "{your storage account connection string}" \
    --fileupload-storage-container-name "{your container name}" 

O comando seguinte define o tempo de vida do URI SAS para o padrão de uma hora.

az iot hub update --name {your iot hub name} \
    --fileupload-sas-ttl 1 

O comando seguinte ativa notificações de ficheiros e define as propriedades das notificações para os seus valores predefinidos. (O tempo de vida (TTL) da notificação de upload do ficheiro está definido para uma hora e o tempo de duração do bloqueio está definido para 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

O seguinte comando configura a autenticação baseada em chaves:

az iot hub update --name {your iot hub name} \
    --fileupload-storage-auth-type keyBased

O comando seguinte configura a autenticação usando a identidade gerida atribuída ao sistema do hub IoT. Antes de poder executar este comando, precisa de ativar a identidade gerida atribuída pelo sistema para o seu hub IoT e conceder-lhe o papel correto de controlo de acesso baseado em função na sua conta Azure Storage. Para saber como, consulte o suporte IoT Hub para identidades geridas.

az iot hub update --name {your iot hub name} \
    --fileupload-storage-auth-type identityBased \
    --fileupload-storage-identity [system] 

Os comandos seguintes recuperam as identidades geridas atribuídas pelo utilizador configuradas no seu hub IoT e configuram a autenticação com uma delas. Antes de poder usar uma identidade gerida atribuída pelo utilizador para autenticação, esta deve estar configurada no seu hub IoT e receber um papel de controlo de acesso baseado em funções apropriado na sua conta Azure Storage. Para mais detalhes e etapas, consulte o suporte IoT Hub para identidades geridas.

Para obter informações sobre as identidades geridas atribuídas pelo utilizador no seu hub IoT, use o comando az iot hub identity show.

az iot hub identity show --name {your iot hub name} --query userAssignedIdentities

O comando devolve uma coleção das identidades geridas atribuídas pelo utilizador configuradas no seu hub IoT. A saída seguinte mostra uma coleção que contém uma única identidade gerida atribuída pelo utilizador.

{
  "/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>"
  }
}

O comando seguinte configura a autenticação para usar a identidade atribuída pelo utilizador acima.

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}"

Pode rever as definições do seu hub IoT usando o seguinte comando:

az iot hub show --name {your iot hub name}

Para rever apenas as definições de carregamento do ficheiro, use o seguinte comando:

az iot hub show --name {your iot hub name}
    --query '[properties.storageEndpoints, properties.enableFileUploadNotifications, properties.messagingEndpoints.fileNotifications]'

Para a maioria das situações, usar os parâmetros nomeados nos comandos do Azure CLI é o mais fácil; No entanto, também pode configurar as definições de upload de ficheiros com o --set parâmetro. Os seguintes comandos podem ajudá-lo a perceber como.

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

Pré-requisitos

Inicie sessão e defina a sua conta Azure

Inicie sessão na sua conta do Azure e selecione a sua subscrição. Se estiveres a usar Azure Cloud Shell, já deves estar com a sessão iniciada; no entanto, ainda podes precisar de selecionar a tua subscrição do Azure se tiveres várias subscrições.

  1. No prompt PowerShell, execute o cmdlet Connect-AzAccount :

    Connect-AzAccount
    
  2. Se tiver várias subscrições Azure, iniciar sessão no Azure dá-lhe acesso a todas as subscrições Azure associadas às suas credenciais. Use o comando Get-AzSubscription para listar as subscrições Azure disponíveis para usar:

    Get-AzSubscription
    

    Use o comando seguinte para selecionar a subscrição que pretende usar para executar os comandos que gerem o seu hub IoT. Pode utilizar o nome ou o ID da subscrição da saída do comando anterior:

    Select-AzSubscription `
        -Name "{your subscription name}"
    

    Nota

    O comando Select-AzSubscription é um alias do Select-AzContext que permite usar o nome da subscrição (Name) ou o ID da subscrição (Id) devolvido pelo comando Get-AzSubscription , em vez do nome de contexto mais complexo exigido para o comando Select-AzContext .

Recupere os detalhes da sua conta de armazenamento

Os passos seguintes assumem que criou a sua conta de armazenamento usando o modelo de implementação Resource Manager e não o Classic.

Para configurar o carregamento de ficheiros a partir dos seus dispositivos, precisa da string de ligação para uma conta de armazenamento Azure. A conta de armazenamento deve estar na mesma subscrição do seu hub IoT. Também precisa do nome de um contentor de blob na conta de armazenamento. Use o comando Get-AzStorageAccountKey para recuperar as suas chaves de conta de armazenamento:

Get-AzStorageAccountKey `
  -Name {your storage account name} `
  -ResourceGroupName {your storage account resource group}

Anote o valor da chave da conta de armazenamento key1 . Precisa dela nos passos seguintes.

Pode usar um contentor de blob existente para os seus carregamentos de ficheiros ou criar um novo:

  • Para listar os contentores de blob existentes na sua conta de armazenamento, use os comandos New-AzStorageContext e Get-AzStorageContainer :

    $ctx = New-AzStorageContext `
        -StorageAccountName {your storage account name} `
        -StorageAccountKey {your storage account key}
    Get-AzStorageContainer -Context $ctx
    
  • Para criar um contentor de blob na sua conta de armazenamento, use os comandos New-AzStorageContext e 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
    

Configurar seu hub IoT

Agora pode configurar o seu hub IoT para carregar ficheiros no hub usando os detalhes da sua conta de armazenamento.

A configuração requer os seguintes valores:

  • Contentor de armazenamento: Um contentor blob numa conta de armazenamento Azure na sua assinatura atual Azure para associar ao seu hub IoT. Obteve as informações necessárias da conta de armazenamento na seção anterior. O Hub IoT gera automaticamente URIs SAS com permissões de gravação para esse contêiner de blob para os dispositivos usarem quando carregarem arquivos.

  • Receber notificações para ficheiros carregados: Ative ou desative as notificações de carregamento de ficheiros.

  • TTL SAS: essa configuração é o tempo de vida útil dos URIs SAS retornados ao dispositivo pelo Hub IoT. Definido para uma hora por padrão.

  • Configurações de notificação de arquivo TTL padrão: o tempo de vida útil de uma notificação de upload de arquivo antes de expirar. Definido para um dia por padrão.

  • Contagem máxima de entrega de notificação de arquivo: o número de vezes que o Hub IoT tenta entregar uma notificação de carregamento de arquivo. Definido para 10 por padrão.

Use o comando Set-AzIotHub para configurar as definições de upload de ficheiros no seu hub 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

Por padrão, o IoT Hub autentica-se com o Azure Storage usando a chave da conta na string de conexão. A autenticação utilizando identidades geridas atribuídas pelo sistema ou pelo utilizador também está disponível. As identidades geridas proporcionam aos serviços do Azure uma identidade gerida automaticamente no Microsoft Entra ID de forma segura. Para saber mais, consulte o suporte IoT Hub para identidades geridas. Atualmente, não existem parâmetros no comando Set-AzIotHub para definir o tipo de autenticação.