Partilhar via


Carregar arquivos de um dispositivo para a nuvem com o Hub IoT do Azure

Este artigo demonstra como:

  • Use os recursos de carregamento de arquivos do Hub IoT para carregar um arquivo no Armazenamento de Blobs do Azure, usando um dispositivo IoT do Azure e SDKs de serviço.
  • Notifique o Hub IoT de que o arquivo foi carregado com êxito e crie um serviço de back-end para receber notificações de carregamento de arquivos do Hub IoT, usando os SDKs de serviço IoT do Azure.

Em alguns cenários, você não pode mapear facilmente os dados que seus dispositivos enviam para as mensagens relativamente pequenas de dispositivo para nuvem que o Hub IoT aceita. Os recursos de carregamento de arquivos no Hub IoT permitem mover dados grandes ou complexos para a nuvem. Por exemplo:

  • Vídeos
  • Arquivos grandes que contêm imagens
  • Dados de vibração amostrados em alta frequência
  • Alguma forma de dados pré-processados

Esses arquivos geralmente são processados em lote na nuvem, usando ferramentas como o Azure Data Factory ou a pilha Hadoop . Quando você precisa carregar arquivos de um dispositivo, ainda pode usar a segurança e a confiabilidade do Hub IoT. Este artigo mostra-lhe como.

Este artigo destina-se a complementar exemplos de SDK executáveis que são referenciados a partir deste artigo.

Para obter mais informações, consulte:

Importante

A funcionalidade de carregamento de ficheiros em dispositivos que utilizam a autenticação da autoridade de certificação (CA) X.509 está em pré-visualização pública e o modo de pré-visualização tem de estar ativado. Está geralmente disponível em dispositivos que utilizam a autenticação de impressão digital X.509 ou o atestado de certificado X.509 com o Serviço de Aprovisionamento de Dispositivos do Azure. Para saber mais sobre a autenticação X.509 com o Hub IoT, consulte Certificados X.509 suportados.

Pré-requisitos

  • Um hub IoT. Algumas chamadas SDK exigem a cadeia de conexão primária do Hub IoT, portanto, anote a cadeia de conexão.

  • Um dispositivo registado. Algumas chamadas SDK exigem a cadeia de conexão primária do dispositivo, portanto, anote a cadeia de conexão.

  • Permissão do Hub IoT Service Connect - Para receber mensagens de notificação de carregamento de arquivos, seu serviço de back-end precisa da permissão Service Connect . Por padrão, cada Hub IoT é criado com uma política de acesso compartilhado chamada serviço que concede essa permissão. Para obter mais informações, consulte Conectar-se a um hub IoT.

  • Configure o carregamento de arquivos em seu hub IoT vinculando uma conta de Armazenamento do Azure e um contêiner de Armazenamento de Blob do Azure. Você pode configurá-los usando o portal do Azure, a CLI do Azure ou o Azure PowerShell.

Descrição geral

Este tutorial contém duas seções:

  • Carregar um ficheiro a partir de uma aplicação de dispositivo
  • Receber notificação de upload de arquivo em um aplicativo de back-end

Carregar um ficheiro a partir de uma aplicação de dispositivo

Esta seção descreve como carregar um arquivo de um dispositivo para um hub IoT usando a classe DeviceClient no SDK do Azure IoT para .NET.

Siga este procedimento para carregar um arquivo de um dispositivo para o hub IoT:

  1. Conectar-se ao hub IoT
  2. Obter um URI SAS do hub IoT
  3. Carregar o ficheiro para o armazenamento do Azure
  4. Notificar o hub IoT sobre o status de carregamento do arquivo

Ligar um dispositivo ao Hub IoT

Um aplicativo de dispositivo pode se autenticar com o Hub IoT usando os seguintes métodos:

  • Certificado X.509
  • Chave de acesso partilhada

Autenticar usando um certificado X.509

Para conectar um dispositivo ao Hub IoT usando um certificado X.509:

  1. Use DeviceAuthenticationWithX509Certificate para criar um objeto que contenha informações de dispositivo e certificado. DeviceAuthenticationWithX509Certificate é passado como o segundo parâmetro para DeviceClient.Create (etapa 2).

  2. Use DeviceClient.Create para conectar o dispositivo ao Hub IoT usando um certificado X.509.

Neste exemplo, as informações do dispositivo e do certificado são preenchidas auth DeviceAuthenticationWithX509Certificate no objeto que é passado para DeviceClient.Create.

Este exemplo mostra os valores dos parâmetros de entrada do certificado como variáveis locais para maior clareza. Em um sistema de produção, armazene parâmetros de entrada confidenciais em variáveis de ambiente ou em outro local de armazenamento mais seguro. Por exemplo, use Environment.GetEnvironmentVariable("HOSTNAME") para ler a variável de ambiente de nome de host.

RootCertPath = "~/certificates/certs/sensor-thl-001-device.cert.pem";
Intermediate1CertPath = "~/certificates/certs/sensor-thl-001-device.intermediate1.cert.pem";
Intermediate2CertPath = "~/certificates/certs/sensor-thl-001-device.intermediate2.cert.pem";
DevicePfxPath = "~/certificates/certs/sensor-thl-001-device.cert.pfx";
DevicePfxPassword = "1234";
DeviceName = "MyDevice";
HostName = "xxxxx.azure-devices.net";

var chainCerts = new X509Certificate2Collection();
chainCerts.Add(new X509Certificate2(RootCertPath));
chainCerts.Add(new X509Certificate2(Intermediate1CertPath));
chainCerts.Add(new X509Certificate2(Intermediate2CertPath));
using var deviceCert = new X509Certificate2(DevicePfxPath, DevicePfxPassword);
using var auth = new DeviceAuthenticationWithX509Certificate(DeviceName, deviceCert, chainCerts);

using var deviceClient = DeviceClient.Create(
    HostName,
    auth,
    TransportType.Amqp);

Para obter mais informações sobre autenticação de certificado, consulte:

Amostras de código

Para obter exemplos funcionais de autenticação de certificado X.509 do dispositivo, consulte:

Autenticar usando uma chave de acesso compartilhada

Chame CreateFromConnectionString para se conectar ao dispositivo. Passe a cadeia de conexão primária do dispositivo.

AMQP é o protocolo de transporte padrão.

static string connectionString = "{device primary connection string}";
deviceClient = DeviceClient.CreateFromConnectionString(connectionString);

Obter um URI SAS do hub IoT

Ligue para GetFileUploadSasUriAsync para obter detalhes de upload de arquivos. O URI SAS é usado na próxima etapa para carregar um arquivo de um dispositivo para o Armazenamento de Blobs.

const string filePath = "TestPayload.txt";
using var fileStreamSource = new FileStream(filePath, FileMode.Open);
var fileName = Path.GetFileName(fileStreamSource.Name);
var fileUploadSasUriRequest = new FileUploadSasUriRequest
{
    BlobName = fileName
};

FileUploadSasUriResponse sasUri = await _deviceClient.GetFileUploadSasUriAsync(fileUploadSasUriRequest, System.Threading.CancellationToken cancellationToken = default);
Uri uploadUri = sasUri.GetBlobUri();

Carregar um ficheiro para o armazenamento do Azure

Para carregar um arquivo no armazenamento do Azure:

  1. Crie um objeto blockBlobClient , passando um URI de carregamento de arquivo.

  2. Use o método UploadAsync para carregar um arquivo no Armazenamento de Blob, passando o URI SAS. Opcionalmente, você pode adicionar opções de upload de Blob e parâmetros de token de cancelamento.

O cliente de Blob do Azure sempre usa HTTPS como o protocolo para carregar o arquivo no Armazenamento do Azure.

Neste exemplo, BlockBlobClient é passado o URI SAS para criar um cliente Blob de bloco de armazenamento do Azure e carrega o arquivo:

var blockBlobClient = new BlockBlobClient(uploadUri);
await blockBlobClient.UploadAsync(fileStreamSource, null, null);

Notificar o hub IoT sobre o status de carregamento do arquivo

Use CompleteFileUploadAsync para notificar o hub IoT de que o cliente do dispositivo concluiu o carregamento, passando um objeto FileUploadCompletionNotification . O IsSuccess sinalizador indica se o carregamento foi bem-sucedido ou não. Depois de ser notificado, o hub IoT liberará recursos associados ao upload (o URI SAS).

Se as notificações de carregamento de arquivo estiverem habilitadas, o hub IoT enviará uma mensagem de notificação de carregamento de arquivo para serviços de back-end configurados para notificação de carregamento de arquivo.

var successfulFileUploadCompletionNotification = new FileUploadCompletionNotification
{
    // Mandatory. Must be the same value as the correlation id returned in the sas uri response
    CorrelationId = sasUri.CorrelationId,

    // Mandatory. Will be present when service client receives this file upload notification
    IsSuccess = true,

    // Optional, user defined status code. Will be present when service client receives this file upload notification
    StatusCode = 200,

    // Optional, user-defined status description. Will be present when service client receives this file upload notification
    StatusDescription = "Success"
};

await _deviceClient.CompleteFileUploadAsync(successfulFileUploadCompletionNotification);

Exemplo de carregamento de arquivo SDK

O SDK inclui este exemplo de upload de arquivo.

Receber uma notificação de upload de arquivo em um aplicativo de back-end

Você pode criar um serviço de back-end para receber mensagens de notificação de carregamento de arquivos do hub IoT.

A classe ServiceClient contém métodos que os serviços podem usar para receber notificações de carregamento de arquivo.

Adicionar pacote NuGet de serviço

Os aplicativos de serviço de back-end exigem o pacote NuGet Microsoft.Azure.Devices.

Conectar-se ao hub IoT

Você pode conectar um serviço de back-end ao Hub IoT usando os seguintes métodos:

  • Política de acesso partilhado
  • Microsoft Entra

Importante

Este artigo inclui etapas para se conectar a um serviço usando uma assinatura de acesso compartilhado. Esse método de autenticação é conveniente para teste e avaliação, mas autenticar em um serviço com ID do Microsoft Entra ou identidades gerenciadas é uma abordagem mais segura. Para saber mais, consulte Práticas > recomendadas de segurança Segurança na nuvem.

Conectar-se usando uma política de acesso compartilhado

Conecte um aplicativo back-end a um dispositivo usando CreateFromConnectionString. Seu aplicativo precisa de permissão de conexão de serviço. Forneça esta cadeia de conexão de política de acesso compartilhado como um parâmetro para fromConnectionString. Para obter mais informações sobre políticas de acesso compartilhado, consulte Controlar o acesso ao Hub IoT com assinaturas de acesso compartilhado.

Por exemplo:

using Microsoft.Azure.Devices;
static ServiceClient serviceClient;
static string connectionString = "{Shared access policy connection string}";
serviceClient = ServiceClient.CreateFromConnectionString(connectionString);

Conectar-se usando o Microsoft Entra

Um aplicativo de back-end que usa o Microsoft Entra deve autenticar e obter com êxito uma credencial de token de segurança antes de se conectar ao Hub IoT. Esse token é passado para um método de conexão do Hub IoT. Para obter informações gerais sobre como configurar e usar o Microsoft Entra para Hub IoT, consulte Controlar o acesso ao Hub IoT usando a ID do Microsoft Entra.

Configurar o aplicativo Microsoft Entra

Você deve configurar um aplicativo Microsoft Entra configurado para sua credencial de autenticação preferida. O aplicativo contém parâmetros como segredo do cliente que são usados pelo aplicativo back-end para autenticar. As configurações de autenticação de aplicativo disponíveis são:

  • Segredo do cliente
  • Certificado
  • Credencial de identidade federada

Os aplicativos Microsoft Entra podem exigir permissões de função específicas, dependendo das operações que estão sendo executadas. Por exemplo, o Colaborador Gêmeo do Hub IoT é necessário para habilitar o acesso de leitura e gravação a um dispositivo do Hub IoT e gêmeos de módulo. Para obter mais informações, consulte Gerenciar o acesso ao Hub IoT usando a atribuição de função RBAC do Azure.

Para obter mais informações sobre como configurar um aplicativo Microsoft Entra, consulte Guia de início rápido: registrar um aplicativo com a plataforma de identidade da Microsoft.

Autenticar usando DefaultAzureCredential

A maneira mais fácil de usar o Microsoft Entra para autenticar um aplicativo de back-end é usar DefaultAzureCredential, mas é recomendável usar um método diferente em um ambiente de produção, incluindo um específico TokenCredential ou ChainedTokenCredentialreduzido. Para simplificar, esta seção descreve o uso da DefaultAzureCredential autenticação e o segredo do cliente. Para obter mais informações sobre os prós e contras do uso DefaultAzureCredentialdo , consulte Diretrizes de uso para DefaultAzureCredential.

DefaultAzureCredential suporta diferentes mecanismos de autenticação e determina o tipo de credencial apropriado com base no ambiente em que está sendo executado. Ele tenta usar vários tipos de credenciais em uma ordem até encontrar uma credencial de trabalho.

O Microsoft Entra requer estes pacotes NuGet e instruções correspondentes using :

  • Azure.Core
  • Azure.Identity
using Azure.Core;
using Azure.Identity;

Neste exemplo, o segredo do cliente de registro do aplicativo Microsoft Entra, a ID do cliente e a ID do locatário são adicionados às variáveis de ambiente. Essas variáveis de ambiente são usadas por DefaultAzureCredential para autenticar o aplicativo. O resultado de uma autenticação bem-sucedida do Microsoft Entra é uma credencial de token de segurança que é passada para um método de conexão do Hub IoT.

string clientSecretValue = "xxxxxxxxxxxxxxx";
string clientID = "xxxxxxxxxxxxxx";
string tenantID = "xxxxxxxxxxxxx";

Environment.SetEnvironmentVariable("AZURE_CLIENT_SECRET", clientSecretValue);
Environment.SetEnvironmentVariable("AZURE_CLIENT_ID", clientID);
Environment.SetEnvironmentVariable("AZURE_TENANT_ID", tenantID);

TokenCredential tokenCredential = new DefaultAzureCredential();

O TokenCredential resultante pode ser passado para um método de conexão ao Hub IoT para qualquer cliente SDK que aceite credenciais do Microsoft Entra:

Neste exemplo, o TokenCredential é passado para ServiceClient.Create para criar um objeto de conexão ServiceClient .

string hostname = "xxxxxxxxxx.azure-devices.net";
using var serviceClient = ServiceClient.Create(hostname, tokenCredential, TransportType.Amqp);

Neste exemplo, o TokenCredential é passado para RegistryManager.Create criar um objeto RegistryManager .

string hostname = "xxxxxxxxxx.azure-devices.net";
registryManager = RegistryManager.Create(hostname, tokenCredential);
Exemplo de código

Para obter um exemplo prático de autenticação de serviço do Microsoft Entra, consulte Exemplo de autenticação baseada em função.

Receber notificação de upload de arquivo

Para receber a notificação de carregamento de ficheiros:

  1. Crie um CancellationToken.
  2. Chame GetFileNotificationReceiver para criar um recetor de notificação.
  3. Use um loop com ReceiveAsync para aguardar a notificação de upload de arquivo.

Por exemplo:

// Define the cancellation token
CancellationTokenSource source = new CancellationTokenSource();
CancellationToken token = source.Token;

// Create a notification receiver
var notificationReceiver = serviceClient.GetFileNotificationReceiver();
Console.WriteLine("\nReceiving file upload notification from service");

// Check for file upload notifications
while (true)
{
    var fileUploadNotification = await notificationReceiver.ReceiveAsync(token);
    if (fileUploadNotification == null) continue;
    Console.ForegroundColor = ConsoleColor.Yellow;
    Console.WriteLine("Received file upload notification: {0}", 
        string.Join(", ", fileUploadNotification.BlobName));
    Console.ResetColor();
    await notificationReceiver.CompleteAsync(fileUploadNotification);
}

Exemplo de recetor de upload de arquivo SDK

O SDK inclui este exemplo de recetor de upload de arquivo.

Descrição geral

Este tutorial contém duas seções:

  • Carregar um ficheiro a partir de uma aplicação de dispositivo
  • Receber notificação de upload de arquivo em um aplicativo de back-end

Carregar um ficheiro a partir de uma aplicação de dispositivo

Esta seção descreve como carregar um arquivo de um dispositivo para um hub IoT usando a classe DeviceClient do SDK do Azure IoT para Java.

Siga este procedimento para carregar um arquivo de um dispositivo para o hub IoT:

  1. Conectar o dispositivo ao Hub IoT
  2. Obter um URI SAS do hub IoT
  3. Carregar o ficheiro para o Armazenamento do Azure
  4. Enviar notificação de status de carregamento de arquivo para o hub IoT

Ligar um dispositivo ao Hub IoT

Um aplicativo de dispositivo pode se autenticar com o Hub IoT usando os seguintes métodos:

  • Certificado X.509
  • Chave de acesso partilhada

Autenticar usando um certificado X.509

Para conectar um dispositivo ao Hub IoT usando um certificado X.509:

  1. Crie o objeto SSLContext usando buildSSLContext.
  2. Adicione as SSLContext informações a um objeto ClientOptions .
  3. Chame DeviceClient usando as ClientOptions informações para criar a conexão dispositivo-a-Hub IoT.

Este exemplo mostra os valores dos parâmetros de entrada do certificado como variáveis locais para maior clareza. Em um sistema de produção, armazene parâmetros de entrada confidenciais em variáveis de ambiente ou em outro local de armazenamento mais seguro. Por exemplo, use Environment.GetEnvironmentVariable("PUBLICKEY") para ler uma variável de ambiente de cadeia de caracteres de certificado de chave pública.

private static final String publicKeyCertificateString =
        "-----BEGIN CERTIFICATE-----\n" +
        "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n" +
        "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n" +
        "-----END CERTIFICATE-----\n";

//PEM encoded representation of the private key
private static final String privateKeyString =
        "-----BEGIN EC PRIVATE KEY-----\n" +
        "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n" +
        "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n" +
        "-----END EC PRIVATE KEY-----\n";

SSLContext sslContext = SSLContextBuilder.buildSSLContext(publicKeyCertificateString, privateKeyString);
ClientOptions clientOptions = ClientOptions.builder().sslContext(sslContext).build();
DeviceClient client = new DeviceClient(connString, protocol, clientOptions);

Para obter mais informações sobre autenticação de certificado, consulte:

Amostras de código

Para obter exemplos funcionais de autenticação de certificado X.509 do dispositivo, consulte:

Autenticar usando uma chave de acesso compartilhada

As operações de carregamento de arquivos sempre usam HTTPS, mas o DeviceClient pode definir o IotHubClientProtocol para outros serviços, como telemetria, método de dispositivo e gêmeo de dispositivo.

IotHubClientProtocol protocol = IotHubClientProtocol.MQTT;

Instancie o DeviceClient para se conectar ao dispositivo usando a cadeia de conexão primária do dispositivo.

String connString = "{IoT hub connection string}";
DeviceClient client = new DeviceClient(connString, protocol);

Obter um URI SAS do hub IoT

Chame getFileUploadSasUri para obter um objeto FileUploadSasUriResponse .

FileUploadSasUriResponse inclui esses métodos e valores de retorno. Os valores de retorno podem ser passados para métodos de upload de arquivo.

Método Valor devolvido
getCorrelationId() ID de Correlação
getContainerName() Nome do contentor
getBlobName() Blob name
getBlobUri() Blob URI

Por exemplo:

FileUploadSasUriResponse sasUriResponse = client.getFileUploadSasUri(new FileUploadSasUriRequest(file.getName()));

System.out.println("Successfully got SAS URI from IoT hub");
System.out.println("Correlation Id: " + sasUriResponse.getCorrelationId());
System.out.println("Container name: " + sasUriResponse.getContainerName());
System.out.println("Blob name: " + sasUriResponse.getBlobName());
System.out.println("Blob Uri: " + sasUriResponse.getBlobUri());

Carregar o ficheiro para o Armazenamento do Azure

Passe o ponto de extremidade URI do blob para BlobClientBuilder.buildclient para criar o objeto BlobClient .

BlobClient blobClient =
    new BlobClientBuilder()
        .endpoint(sasUriResponse.getBlobUri().toString())
        .buildClient();

Chame uploadFromFile para carregar o arquivo no Blob Storage.

String fullFileName = "Path of the file to upload";
blobClient.uploadFromFile(fullFileName);

Enviar notificação de status de carregamento de arquivo para o hub IoT

Envie uma notificação de status de carregamento para o hub IoT após uma tentativa de carregamento de arquivo.

Crie um objeto FileUploadCompletionNotification . Passe o status de sucesso do upload do correlationId arquivo isSuccess . Passe um isSuccess true valor quando o upload do arquivo foi bem-sucedido, false quando não.

FileUploadCompletionNotification deve ser chamado mesmo quando o upload do arquivo falhar. O hub IoT tem um número fixo de URI SAS permitido para estar ativo a qualquer momento. Depois de concluir o upload do arquivo, você deve liberar seu URI SAS para que outro URI SAS possa ser gerado. Se um URI SAS não for liberado por meio dessa API, ele se liberará eventualmente com base em quanto tempo os URIs SAS estão configurados para viver em um hub IoT.

Este exemplo passa um status bem-sucedido.

FileUploadCompletionNotification completionNotification = new FileUploadCompletionNotification(sasUriResponse.getCorrelationId(), true);
client.completeFileUpload(completionNotification);

Fechar o cliente

Liberte os client recursos.

client.closeNow();

Criar um aplicativo de back-end

Esta seção descreve como receber uma notificação de carregamento de arquivo em um aplicativo de back-end.

A classe ServiceClient contém métodos que os serviços podem usar para receber notificações de carregamento de arquivo.

Adicionar instruções de importação

Adicione essas instruções de importação para usar o SDK Java do Azure IoT e o manipulador de exceções.

import com.microsoft.azure.sdk.iot.service.*;
import java.io.IOException;
import java.net.URISyntaxException;

Conectar-se ao Hub IoT

Você pode conectar um serviço de back-end ao Hub IoT usando os seguintes métodos:

  • Política de acesso partilhado
  • Microsoft Entra

Importante

Este artigo inclui etapas para se conectar a um serviço usando uma assinatura de acesso compartilhado. Esse método de autenticação é conveniente para teste e avaliação, mas autenticar em um serviço com ID do Microsoft Entra ou identidades gerenciadas é uma abordagem mais segura. Para saber mais, consulte Práticas > recomendadas de segurança Segurança na nuvem.

Conectar-se usando uma política de acesso compartilhado

Definir o protocolo de conexão

Use IotHubServiceClientProtocol para definir o protocolo de camada de aplicativo usado pelo cliente de serviço para se comunicar com um Hub IoT.

IotHubServiceClientProtocol só aceita o AMQPS ou AMQPS_WS enum.

private static final IotHubServiceClientProtocol protocol =    
    IotHubServiceClientProtocol.AMQPS;
Criar o objeto ServiceClient

Crie o objeto ServiceClient , fornecendo a cadeia de conexão e o protocolo do Hub IoT.

Para carregar um arquivo em um dispositivo para o Hub IoT, seu serviço precisa da permissão de conexão de serviço. Por padrão, cada Hub IoT é criado com uma política de acesso compartilhado chamada serviço que concede essa permissão.

Como parâmetro para o ServiceClient construtor, forneça a política de acesso compartilhado do serviço . Para obter mais informações sobre políticas de acesso compartilhado, consulte Controlar o acesso ao Hub IoT com assinaturas de acesso compartilhado.

String iotHubConnectionString = "HostName=xxxxx.azure-devices.net;SharedAccessKeyName=service;SharedAccessKey=xxxxxxxxxxxxxxxxxxxxxxxx";
private static final ServiceClient serviceClient (iotHubConnectionString, protocol);
Abra a conexão entre o aplicativo e o Hub IoT

Abra a conexão de remetente AMQP. Esse método cria a conexão entre o aplicativo e o Hub IoT.

serviceClient.open();

Conectar-se usando o Microsoft Entra

Um aplicativo de back-end que usa o Microsoft Entra deve autenticar e obter com êxito uma credencial de token de segurança antes de se conectar ao Hub IoT. Esse token é passado para um método de conexão do Hub IoT. Para obter informações gerais sobre como configurar e usar o Microsoft Entra para Hub IoT, consulte Controlar o acesso ao Hub IoT usando a ID do Microsoft Entra.

Para obter uma visão geral da autenticação do Java SDK, consulte Autenticação do Azure com Java e Identidade do Azure.

Para simplificar, esta seção se concentra na descrição da autenticação usando o segredo do cliente.

Configurar o aplicativo Microsoft Entra

Você deve configurar um aplicativo Microsoft Entra configurado para sua credencial de autenticação preferida. O aplicativo contém parâmetros como segredo do cliente que são usados pelo aplicativo back-end para autenticar. As configurações de autenticação de aplicativo disponíveis são:

  • Segredo do cliente
  • Certificado
  • Credencial de identidade federada

Os aplicativos Microsoft Entra podem exigir permissões de função específicas, dependendo das operações que estão sendo executadas. Por exemplo, o Colaborador Gêmeo do Hub IoT é necessário para habilitar o acesso de leitura e gravação a um dispositivo do Hub IoT e gêmeos de módulo. Para obter mais informações, consulte Gerenciar o acesso ao Hub IoT usando a atribuição de função RBAC do Azure.

Para obter mais informações sobre como configurar um aplicativo Microsoft Entra, consulte Guia de início rápido: registrar um aplicativo com a plataforma de identidade da Microsoft.

Autenticar usando DefaultAzureCredential

A maneira mais fácil de usar o Microsoft Entra para autenticar um aplicativo de back-end é usar DefaultAzureCredential, mas é recomendável usar um método diferente em um ambiente de produção, incluindo um específico TokenCredential ou ChainedTokenCredentialreduzido. Para obter mais informações sobre os prós e contras do uso DefaultAzureCredentialdo , consulte Cadeias de credenciais na biblioteca de cliente do Azure Identity para Java.

DefaultAzureCredential dá suporte a diferentes mecanismos de autenticação e determina o tipo de credencial apropriado com base no ambiente em que está sendo executado. Ele tenta usar vários tipos de credenciais em uma ordem até encontrar uma credencial de trabalho.

Você pode autenticar as credenciais do aplicativo Microsoft Entra usando DefaultAzureCredentialBuilder. Salve parâmetros de conexão, como tenantID secreto do cliente, clientID e valores de segredo do cliente como variáveis ambientais. Uma vez criado, passe-o TokenCredential para ServiceClient ou outro construtor como o parâmetro 'credential'.

Neste exemplo, DefaultAzureCredentialBuilder tenta autenticar uma conexão da lista descrita em DefaultAzureCredential. O resultado de uma autenticação bem-sucedida do Microsoft Entra é uma credencial de token de segurança que é passada para um construtor como ServiceClient.

TokenCredential defaultAzureCredential = new DefaultAzureCredentialBuilder().build();
Autenticar usando ClientSecretCredentialBuilder

Você pode usar ClientSecretCredentialBuilder para criar uma credencial usando informações de segredo do cliente. Se bem-sucedido, esse método retorna um TokenCredential que pode ser passado para ServiceClient ou outro construtor como o parâmetro 'credential'.

Neste exemplo, os valores de segredo do cliente de registro do aplicativo Microsoft Entra, ID do cliente e ID do locatário foram adicionados às variáveis de ambiente. Essas variáveis de ambiente são usadas para ClientSecretCredentialBuilder criar a credencial.

string clientSecretValue = System.getenv("AZURE_CLIENT_SECRET");
string clientID = System.getenv("AZURE_CLIENT_ID");
string tenantID = System.getenv("AZURE_TENANT_ID");

TokenCredential credential =
     new ClientSecretCredentialBuilder()
          .tenantId(tenantID)
          .clientId(clientID)
          .clientSecret(clientSecretValue)
          .build();
Outras classes de autenticação

O Java SDK também inclui estas classes que autenticam um aplicativo de back-end com o Microsoft Entra:

Amostras de código

Para obter exemplos de funcionamento da autenticação de serviço do Microsoft Entra, consulte Exemplo de autenticação baseada em função.

Verificar o estado do carregamento de ficheiros

Para verificar o estado do carregamento de ficheiros:

  1. Crie um objeto getFileUploadNotificationReceiver .
  2. Use open para se conectar ao hub IoT.
  3. Ligue para receber para verificar o status de upload do arquivo. Esse método retorna um objeto fileUploadNotification . Se um aviso de upload for recebido, você poderá visualizar os campos de status de carregamento usando os métodos fileUploadNotification .

Por exemplo:

FileUploadNotificationReceiver receiver = serviceClient.getFileUploadNotificationReceiver();
receiver.open();
FileUploadNotification fileUploadNotification = receiver.receive(2000);

if (fileUploadNotification != null)
{
    System.out.println("File Upload notification received");
    System.out.println("Device Id : " + fileUploadNotification.getDeviceId());
    System.out.println("Blob Uri: " + fileUploadNotification.getBlobUri());
    System.out.println("Blob Name: " + fileUploadNotification.getBlobName());
    System.out.println("Last Updated : " + fileUploadNotification.getLastUpdatedTimeDate());
    System.out.println("Blob Size (Bytes): " + fileUploadNotification.getBlobSizeInBytes());
    System.out.println("Enqueued Time: " + fileUploadNotification.getEnqueuedTimeUtcDate());
}
else
{
    System.out.println("No file upload notification");
}

// Close the receiver object
receiver.close();

Exemplos de upload de arquivos SDK

Há dois exemplos de upload de arquivos Java.

Instalar pacotes

A biblioteca azure-iot-device deve ser instalada antes de chamar qualquer código relacionado.

pip install azure-iot-device

O pacote azure.storage.blob é usado para executar o carregamento do arquivo.

pip install azure.storage.blob

Carregar ficheiro a partir de uma aplicação de dispositivo

Esta seção descreve como carregar um arquivo de um dispositivo para um hub IoT usando a classe IoTHubDeviceClient do SDK do Azure IoT para Python.

Importar bibliotecas

import os
from azure.iot.device import IoTHubDeviceClient
from azure.core.exceptions import AzureError
from azure.storage.blob import BlobClient

Ligar um dispositivo ao Hub IoT

Um aplicativo de dispositivo pode se autenticar com o Hub IoT usando os seguintes métodos:

  • Certificado X.509
  • Chave de acesso partilhada

Autenticar usando um certificado X.509

Para conectar um dispositivo ao Hub IoT usando um certificado X.509:

  1. Use create_from_x509_certificate para adicionar os parâmetros de certificado X.509
  2. Ligue para conectar o cliente do dispositivo

Este exemplo mostra os valores dos parâmetros de entrada do certificado como variáveis locais para maior clareza. Em um sistema de produção, armazene parâmetros de entrada confidenciais em variáveis de ambiente ou em outro local de armazenamento mais seguro. Por exemplo, use os.getenv("HOSTNAME") para ler a variável de ambiente de nome de host.

# The Azure IoT hub name
hostname = "xxxxx.azure-devices.net"

# The device that has been created on the portal using X509 CA signing or self-signing capabilities
device_id = "MyDevice"

# The X.509 certificate file name
cert_file = "~/certificates/certs/sensor-thl-001-device.cert.pfx"
key_file = "~/certificates/certs/sensor-thl-001-device.cert.key"
# The optional certificate pass phrase
pass_phrase = "1234"

x509 = X509(
    cert_file,
    key_file,
    pass_phrase,
)

# The client object is used to interact with your Azure IoT hub.
device_client = IoTHubDeviceClient.create_from_x509_certificate(
    hostname=hostname, device_id=device_id, x509=x509
)

# Connect to IoT Hub
await device_client.connect()

Para obter mais informações sobre autenticação de certificado, consulte:

Amostras de código

Para obter exemplos funcionais de autenticação de certificado X.509 do dispositivo, consulte os exemplos cujos nomes de arquivo terminam em x509 em cenários de hub assíncrono.

Autenticar usando uma chave de acesso compartilhada

Para conectar um dispositivo ao Hub IoT:

  1. Chame create_from_connection_string para adicionar a cadeia de conexão primária do dispositivo.
  2. Ligue para conectar o cliente do dispositivo.

Por exemplo:

# Add your IoT hub primary connection string
CONNECTION_STRING = "{Device primary connection string}"
device_client = IoTHubDeviceClient.create_from_connection_string(CONNECTION_STRING)

# Connect the client
device_client.connect()

Obter informações de armazenamento de Blob

Ligue para get_storage_info_for_blob para obter informações de um hub IoT sobre uma conta de Armazenamento do Azure vinculada. Essas informações incluem o nome do host, o nome do contêiner, o nome do blob e um token SAS. O get_storage_info_for_blob método também retorna um correlation_id, que é usado no notify_blob_upload_status método. A correlation_id é a maneira do Hub IoT de marcar em qual Blob você está trabalhando.

# Get the storage info for the blob
PATH_TO_FILE = "{Full path to local file}"
blob_name = os.path.basename(PATH_TO_FILE)
blob_info = device_client.get_storage_info_for_blob(blob_name)

Carregar um ficheiro para o Armazenamento de Blobs

Para carregar um arquivo no Armazenamento de Blob:

  1. Use from_blob_url para criar um objeto BlobClient a partir de uma URL de blob.
  2. Chame upload_blob para carregar o arquivo no Armazenamento de Blobs.

Este exemplo analisa a blob_info estrutura para criar uma URL que ela usa para inicializar um BlobClient. Em seguida, ele chama upload_blob para carregar o arquivo no Armazenamento de Blob.

try:
    sas_url = "https://{}/{}/{}{}".format(
        blob_info["hostName"],
        blob_info["containerName"],
        blob_info["blobName"],
        blob_info["sasToken"]
    )

    print("\nUploading file: {} to Azure Storage as blob: {} in container {}\n".format(file_name, blob_info["blobName"], blob_info["containerName"]))

    # Upload the specified file
    with BlobClient.from_blob_url(sas_url) as blob_client:
        with open(file_name, "rb") as f:
            result = blob_client.upload_blob(f, overwrite=True)
            return (True, result)

except FileNotFoundError as ex:
    # catch file not found and add an HTTP status code to return in notification to IoT hub
    ex.status_code = 404
    return (False, ex)

except AzureError as ex:
    # catch Azure errors that might result from the upload operation
    return (False, ex)

Notificar o hub IoT sobre o status de carregamento

Use notify_blob_upload_status para notificar o hub IoT sobre o status da operação de Armazenamento de Blob. Passar o correlation_id obtido pelo get_storage_info_for_blob método. O correlation_id é usado pelo hub IoT para notificar qualquer serviço que possa estar escutando uma notificação sobre o status da tarefa de carregamento de arquivo.

Este exemplo notifica o hub IoT sobre um carregamento de arquivo bem-sucedido:

device_client.notify_blob_upload_status(storage_info["correlationId"], True, 200, "OK: {}".format(PATH_TO_FILE)

Desligue o cliente do dispositivo

Desligue o cliente. Uma vez que esse método é chamado, qualquer tentativa de chamadas de cliente adicionais resulta em um ClientError sendo gerado.

device_client.shutdown()

Exemplos de upload de arquivos SDK

O SDK inclui dois exemplos de upload de arquivos:

Descrição geral

Este artigo descreve como usar o SDK do Azure IoT para Node.js para criar um aplicativo de dispositivo para carregar um arquivo e o aplicativo de serviço de back-end receber notificação de carregamento de arquivo.

Criar um aplicativo de dispositivo

Esta seção descreve como carregar um arquivo de um dispositivo para um hub IoT usando o pacote azure-iot-device no SDK do Azure IoT para Node.js.

Instalar pacotes SDK

Execute este comando para instalar o SDK do dispositivo azure-iot-device , o azure-iot-device-mqtt e os pacotes @azure/storage-blob em sua máquina de desenvolvimento:

npm install azure-iot-device azure-iot-device-mqtt @azure/storage-blob --save

O pacote azure-iot-device contém objetos que fazem interface com dispositivos IoT.

Siga este procedimento para carregar um arquivo de um dispositivo para o hub IoT:

  1. Conectar o dispositivo ao Hub IoT
  2. Obter um token de assinatura de acesso compartilhado (SAS) de Blob do Hub IoT
  3. Carregar o ficheiro para o Armazenamento do Azure
  4. Enviar notificação de status de carregamento de arquivo para o hub IoT

Criar módulos

Crie módulos de cliente, protocolo, erros e caminho usando os pacotes instalados.

const Protocol = require('azure-iot-device-mqtt').Mqtt;
const errors = require('azure-iot-common').errors;
const path = require('path');

Ligar um dispositivo ao Hub IoT

Um aplicativo de dispositivo pode se autenticar com o Hub IoT usando os seguintes métodos:

  • Certificado X.509
  • Chave de acesso partilhada

Autenticar usando um certificado X.509

O certificado X.509 é anexado ao transporte de conexão dispositivo-para-Hub IoT.

Para configurar uma conexão de dispositivo para Hub IoT usando um certificado X.509:

  1. Chame fromConnectionString para adicionar a cadeia de conexão do dispositivo e o tipo de transporte. Adicione x509=true à cadeia de conexão do dispositivo para indicar que um certificado foi adicionado ao DeviceClientOptions. Por exemplo: HostName=xxxxx.azure-devices.net;DeviceId=Device-1;SharedAccessKey=xxxxxxxxxxxxx;x509=true.
  2. Configure uma variável JSON com detalhes do certificado e passe-a para DeviceClientOptions.
  3. Chame setOptions para adicionar um certificado X.509 e uma chave (e, opcionalmente, uma senha) ao transporte do cliente.
  4. Chamada aberta para abrir a conexão do dispositivo com o Hub IoT.

Este exemplo mostra informações de configuração de certificado em uma variável JSON. A configuração options de certificação é passada para setOptions e a conexão é aberta usando openo .

var options = {
   cert: myX509Certificate,
   key: myX509Key,
   passphrase: passphrase,
   http: {
     receivePolicy: {
       interval: 10
     }
   }
 }
 client.setOptions(options, callback);
 client.open(connectCallback);

Para obter mais informações sobre autenticação de certificado, consulte:

Exemplo de código

Para obter um exemplo funcional de autenticação de certificado X.509 do dispositivo, consulte Dispositivo de exemplo simples X.509.

Autenticar usando uma chave de acesso compartilhada

Escolha um protocolo de transporte

O Client objeto suporta estes protocolos:

  • Amqp
  • Http - Ao usar Httpo , a Client instância verifica mensagens do Hub IoT com pouca frequência (no mínimo a cada 25 minutos).
  • Mqtt
  • MqttWs
  • AmqpWs

Instale os protocolos de transporte necessários em sua máquina de desenvolvimento.

Por exemplo, este comando instala o Amqp protocolo:

npm install azure-iot-device-amqp --save

Para obter mais informações sobre as diferenças entre o suporte a MQTT, AMQP e HTTPS, consulte Orientação de comunicações da nuvem para o dispositivo e Escolha um protocolo de comunicação.

Criar um objeto cliente

Crie um Client objeto usando o pacote instalado.

Por exemplo:

const Client = require('azure-iot-device').Client;
Criar um objeto de protocolo

Crie um Protocol objeto usando um pacote de transporte instalado.

Este exemplo atribui o protocolo AMQP:

const Protocol = require('azure-iot-device-amqp').Amqp;
Adicionar a cadeia de conexão do dispositivo e o protocolo de transporte

Chame fromConnectionString para fornecer parâmetros de conexão do dispositivo:

  • connStr - A cadeia de conexão do dispositivo.
  • transportCtor - O protocolo de transporte.

Este exemplo usa o Amqp protocolo de transporte:

const deviceConnectionString = "{IoT hub device connection string}"
const Protocol = require('azure-iot-device-mqtt').Amqp;
let client = Client.fromConnectionString(deviceConnectionString, Protocol);
Abra a conexão com o Hub IoT

Use o método open para abrir a conexão entre um dispositivo IoT e o Hub IoT.

Por exemplo:

client.open(function(err) {
  if (err) {
    console.error('error connecting to hub: ' + err);
    process.exit(1);
  }
})

Obter um token SAS do hub IoT

Use getBlobSharedAccessSignature para obter o token SAS da conta de armazenamento vinculada do hub IoT.

Por exemplo:

// make sure you set these environment variables prior to running the sample.
const localFilePath = process.env.PATH_TO_FILE;
const storageBlobName = path.basename(localFilePath);
const blobInfo = await client.getBlobSharedAccessSignature(storageBlobName);
if (!blobInfo) {
throw new errors.ArgumentError('Invalid upload parameters');
}

Carregue o arquivo para o hub IoT

Para carregar um arquivo de um dispositivo para o hub IoT:

  1. Criar um pipeline de fluxo
  2. Construir o URL do blob
  3. Criar um BlockBlobClient para upload de arquivos para o Armazenamento de Blobs
  4. Chamada uploadFile para carregar o arquivo para o Armazenamento de Blob
  5. Chame notifyBlobUploadStatus para notificar o hub IoT de que o carregamento foi bem-sucedido ou falhou

Por exemplo:

// Open the pipeline
const pipeline = newPipeline(new AnonymousCredential(), {
retryOptions: { maxTries: 4 },
telemetry: { value: 'HighLevelSample V1.0.0' }, // Customized telemetry string
keepAliveOptions: { enable: false }
});

// Construct the blob URL
const { hostName, containerName, blobName, sasToken } = blobInfo;
const blobUrl = `https://${hostName}/${containerName}/${blobName}${sasToken}`;

// Create the BlockBlobClient for file upload to Blob Storage
const blobClient = new BlockBlobClient(blobUrl, pipeline);

// Setup blank status notification arguments to be filled in on success/failure
let isSuccess;
let statusCode;
let statusDescription;

const uploadStatus = await blobClient.uploadFile(localFilePath);
console.log('uploadStreamToBlockBlob success');

  try {
    const uploadStatus = await blobClient.uploadFile(localFilePath);
    console.log('uploadStreamToBlockBlob success');

    // Save successful status notification arguments
    isSuccess = true;
    statusCode = uploadStatus._response.status;
    statusDescription = uploadStatus._response.bodyAsText;

    // Notify IoT hub of upload to blob status (success)
    console.log('notifyBlobUploadStatus success');
  }
  catch (err) {
    isSuccess = false;
    statusCode = err.code;
    statusDescription = err.message;

    console.log('notifyBlobUploadStatus failed');
    console.log(err);
  }

// Send file upload status notification to IoT hub
await client.notifyBlobUploadStatus(blobInfo.correlationId, isSuccess, statusCode, statusDescription);

Carregue o arquivo local para o armazenamento de blob

Você pode carregar um arquivo local para o armazenamento de blob de um computador

const deviceClient = Client.fromConnectionString(deviceConnectionString, Protocol);
uploadToBlob(localFilePath, deviceClient)
  .catch((err) => {
    console.log(err);
  })
  .finally(() => {
    process.exit();
  });

Exemplo de carregamento de arquivo SDK

O SDK inclui um upload para o exemplo avançado de blob.

Criar um aplicativo de back-end

Esta seção descreve como receber notificações de carregamento de arquivo em um aplicativo de back-end.

A classe ServiceClient contém métodos que os serviços podem usar para receber notificações de carregamento de arquivo.

Instalar pacote SDK de serviço

Execute este comando para instalar o azure-iothub em sua máquina de desenvolvimento:

npm install azure-iothub --save

Conectar-se ao hub IoT

Você pode conectar um serviço de back-end ao Hub IoT usando os seguintes métodos:

  • Política de acesso partilhado
  • Microsoft Entra

Importante

Este artigo inclui etapas para se conectar a um serviço usando uma assinatura de acesso compartilhado. Esse método de autenticação é conveniente para teste e avaliação, mas autenticar em um serviço com ID do Microsoft Entra ou identidades gerenciadas é uma abordagem mais segura. Para saber mais, consulte Práticas > recomendadas de segurança Segurança na nuvem.

Conectar-se usando uma política de acesso compartilhado

Use fromConnectionString para se conectar ao hub IoT.

Para carregar um arquivo de um dispositivo, seu serviço precisa da permissão de conexão de serviço. Por padrão, cada Hub IoT é criado com uma política de acesso compartilhado chamada serviço que concede essa permissão.

Como parâmetro para CreateFromConnectionString, forneça a cadeia de conexão da política de acesso compartilhado do serviço . Para obter mais informações sobre políticas de acesso compartilhado, consulte Controlar o acesso ao Hub IoT com assinaturas de acesso compartilhado.

var Client = require('azure-iothub').Client;
var connectionString = '{IoT hub shared access policy connection string}';
var client = Client.fromConnectionString(connectionString);

Conectar-se usando o Microsoft Entra

Um aplicativo de back-end que usa o Microsoft Entra deve autenticar e obter com êxito uma credencial de token de segurança antes de se conectar ao Hub IoT. Esse token é passado para um método de conexão do Hub IoT. Para obter informações gerais sobre como configurar e usar o Microsoft Entra para Hub IoT, consulte Controlar o acesso ao Hub IoT usando a ID do Microsoft Entra.

Para obter uma visão geral da autenticação Node.js SDK, consulte:

Configurar o aplicativo Microsoft Entra

Você deve configurar um aplicativo Microsoft Entra configurado para sua credencial de autenticação preferida. O aplicativo contém parâmetros como segredo do cliente que são usados pelo aplicativo back-end para autenticar. As configurações de autenticação de aplicativo disponíveis são:

  • Segredo do cliente
  • Certificado
  • Credencial de identidade federada

Os aplicativos Microsoft Entra podem exigir permissões de função específicas, dependendo das operações que estão sendo executadas. Por exemplo, o Colaborador Gêmeo do Hub IoT é necessário para habilitar o acesso de leitura e gravação a um dispositivo do Hub IoT e gêmeos de módulo. Para obter mais informações, consulte Gerenciar o acesso ao Hub IoT usando a atribuição de função RBAC do Azure.

Para obter mais informações sobre como configurar um aplicativo Microsoft Entra, consulte Guia de início rápido: registrar um aplicativo com a plataforma de identidade da Microsoft.

Autenticar usando DefaultAzureCredential

A maneira mais fácil de usar o Microsoft Entra para autenticar um aplicativo de back-end é usar DefaultAzureCredential, mas é recomendável usar um método diferente em um ambiente de produção, incluindo um específico TokenCredential ou ChainedTokenCredentialreduzido. Para simplificar, esta seção descreve o uso da DefaultAzureCredential autenticação e o segredo do cliente. Para obter mais informações sobre os prós e contras do uso DefaultAzureCredentialdo , consulte Cadeias de credenciais na biblioteca de cliente do Azure Identity para JavaScript

DefaultAzureCredential dá suporte a diferentes mecanismos de autenticação e determina o tipo de credencial apropriado com base no ambiente em que está sendo executado. Ele tenta usar vários tipos de credenciais em uma ordem até encontrar uma credencial de trabalho.

O Microsoft Entra requer este pacote:

npm install --save @azure/identity

Neste exemplo, o segredo do cliente de registro do aplicativo Microsoft Entra, a ID do cliente e a ID do locatário foram adicionados às variáveis de ambiente. Essas variáveis de ambiente são usadas por DefaultAzureCredential para autenticar o aplicativo. O resultado de uma autenticação bem-sucedida do Microsoft Entra é uma credencial de token de segurança que é passada para um método de conexão do Hub IoT.

import { DefaultAzureCredential } from "@azure/identity";

// Azure SDK clients accept the credential as a parameter
const credential = new DefaultAzureCredential();

O token de credencial resultante pode ser passado para fromTokenCredential para se conectar ao Hub IoT para qualquer cliente SDK que aceite credenciais do Microsoft Entra:

fromTokenCredential requer dois parâmetros:

  • A URL do serviço do Azure - A URL do serviço do Azure deve estar no formato {Your Entra domain URL}.azure-devices.net sem um https:// prefixo. Por exemplo, MyAzureDomain.azure-devices.net.
  • O token de credencial do Azure

Neste exemplo, a credencial do Azure é obtida usando DefaultAzureCredentialo . A URL e a credencial do domínio do Azure são fornecidas para Registry.fromTokenCredential criar a conexão com o Hub IoT.

const { DefaultAzureCredential } = require("@azure/identity");

let Registry = require('azure-iothub').Registry;

// Define the client secret values
clientSecretValue = 'xxxxxxxxxxxxxxx'
clientID = 'xxxxxxxxxxxxxx'
tenantID = 'xxxxxxxxxxxxx'

// Set environment variables
process.env['AZURE_CLIENT_SECRET'] = clientSecretValue;
process.env['AZURE_CLIENT_ID'] = clientID;
process.env['AZURE_TENANT_ID'] = tenantID;

// Acquire a credential object
const credential = new DefaultAzureCredential()

// Create an instance of the IoTHub registry
hostName = 'MyAzureDomain.azure-devices.net';
let registry = Registry.fromTokenCredential(hostName,credential);
Amostras de código

Para obter exemplos de trabalho da autenticação do serviço Microsoft Entra, consulte Exemplos de identidade do Azure.

Criar um recetor de retorno de chamada de notificação de upload de arquivo

Para criar um recetor de retorno de chamada de notificação de upload de arquivo:

  1. Chame getFileNotificationReceiver. Forneça o nome de um método de retorno de chamada de carregamento de arquivo que é chamado quando as mensagens de notificação são recebidas.
  2. Processar notificações de upload de arquivo no método de retorno de chamada.

Este exemplo configura um recetor de retorno de receiveFileUploadNotification chamada de notificação. O recetor interpreta as informações de status de upload do arquivo e imprime uma mensagem de status no console.

//Set up the receiveFileUploadNotification notification message callback receiver
serviceClient.getFileNotificationReceiver(function receiveFileUploadNotification(err, receiver){
if (err) {
  console.error('error getting the file notification receiver: ' + err.toString());
} else {
  receiver.on('message', function (msg) {
    console.log('File upload from device:')
    console.log(msg.getData().toString('utf-8'));
    receiver.complete(msg, function (err) {
      if (err) {
        console.error('Could not finish the upload: ' + err.message);
      } else {
        console.log('Upload complete');
      }
    });
  });
}

Exemplo de notificação de carregamento de arquivo SDK

O SDK inclui um exemplo de carregamento de arquivo.