Compartilhar via


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

Este artigo demonstra como:

  • Use os recursos de upload de arquivo do Hub IoT para carregar um arquivo no Armazenamento de Blobs do Azure usando um dispositivo da Internet das Coisas 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 upload de arquivo do Hub IoT usando os SDKs do serviço da Internet das Coisas do Azure.

Em alguns cenários, você não pode mapear facilmente os dados que seus dispositivos enviam para as mensagens relativamente pequenas do dispositivo para a nuvem aceitas pelo Hub IoT. Os recursos de upload de arquivo 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 a alta frequência
  • Alguma forma de dados pré-processados

Esses arquivos normalmente são processados em lote na nuvem usando ferramentas como o Azure Data Factory ou a pilha do Hadoop. Quando você precisar carregar arquivos de um dispositivo, ainda poderá usar a segurança e a confiabilidade do Hub IoT. Este artigo mostra como fazer isso.

Este artigo destina-se a complementar os exemplos de SDK executáveis referenciados nele.

Para saber mais, veja:

Importante

A funcionalidade de carregamento de arquivo em dispositivos que usam a autenticação da autoridade de certificação (AC) de certificados X.509 está em versão prévia. Além disso, é necessário habilitar o modo de versão prévia. Geralmente está disponível em dispositivos que usam a autenticação de impressão digital X. 509 ou o atestado de certificado X. 509 com o Serviço de Provisionamento de Dispositivos do Azure. Para saber mais sobre a autenticação X.509 com o Hub IoT, confira Certificados X.509 com suporte.

Pré-requisitos

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

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

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

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

Visão geral

Estas instruções contêm duas seções:

  • Carregar um arquivo de um aplicativo de dispositivo
  • Receber notificação de upload de arquivo em um aplicativo de back-end

Carregar um arquivo de um aplicativo de dispositivo

Esta seção descreve como carregar um arquivo de um dispositivo para um hub IoT usando a classe DeviceClient no SDK da Internet das Coisas do Azure 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 arquivo no armazenamento do Azure
  4. Notificar o hub IoT do status de upload de arquivo

Conectar um dispositivo ao Hub IoT

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

  • Certificado X.509
  • Chave de acesso compartilhada

Autenticar usando um certificado X.509

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

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

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

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

Esse exemplo mostra valores de parâmetros de entrada de 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 do nome do 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, veja:

Exemplos de código

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

Autentique 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

Chame GetFileUploadSasUriAsync para obter detalhes de upload de arquivo. 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 arquivo no Armazenamento do Microsoft Azure

Para carregar um arquivo no Armazenamento do Microsoft Azure:

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

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

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

Neste exemplo, é passado o URI SAS para BlockBlobClient para criar um cliente blob do bloco de Armazenamento do Microsoft Azure e carregar o arquivo:

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

Notificar o hub IoT do status de upload de arquivo

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

Se as notificações de upload de arquivo estiverem habilitadas, o Hub IoT enviará uma mensagem de notificação de upload de arquivo para serviços de back-end configurados para notificação de upload 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 upload de arquivo do 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 upload de arquivo do Hub IoT.

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

Adicionar um pacote NuGet do 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 compartilhado
  • 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 a autenticação em um serviço com o Microsoft Entra ID ou identidades gerenciadas é uma abordagem mais segura. Para saber mais, consulte Melhores Práticas de Segurança > Segurança da Nuvem.

Conectar-se usando a política de acesso compartilhado

Conecte um aplicativo de back-end a um dispositivo usando CreateFromConnectionString. Seu aplicativo precisa da permissão conexão de serviço. Forneça essa cadeia de conexão de política de acesso compartilhado como um parâmetro para fromConnectionString. Para obter mais informações sobre as políticas de acesso compartilhado, confira Controlar o acesso ao Hub IoT com as 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 ser autenticado com sucesso e obter 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, confira Controlar o acesso ao Hub IoT usando o Microsoft Entra ID.

Configurar o aplicativo Microsoft Entra

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

  • Segredo do cliente
  • Certificado
  • Credencial de identidade federada

Os aplicativos do 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 a módulos gêmeos. Para obter mais informações, confira 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 do Microsoft Entra, confira 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 TokenCredential específico ou ChainedTokenCredential reduzido. Para simplificar, esta seção descreve a autenticação usando DefaultAzureCredential e um segredo do cliente. Para obter mais informações sobre os prós e contras do uso de DefaultAzureCredential, confira as Diretrizes de uso para DefaultAzureCredential.

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 credencial em uma ordem até encontrar uma credencial em funcionamento.

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

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

Neste exemplo, o segredo do cliente de registro do aplicativo do 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 pelo 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 então ser passado para um método de conexão com o Hub IoT para um cliente do SDK que aceite as 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, TokenCredential é passado para RegistryManager.Create para 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 da autenticação de serviço do Microsoft Entra, confira o Exemplo de autenticação baseada em função.

Receber notificação de upload de arquivo

Para receber uma notificação de upload de arquivo:

  1. Crie um CancellationToken.
  2. Chame GetFileNotificationReceiver para criar um receptor de notificação.
  3. Use um loop com ReceiveAsync para aguardar a notificação de upload do 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 receptor de upload de arquivo SDK

O SDK inclui esse exemplo de receptor de upload de arquivo.

Visão geral

Estas instruções contêm duas seções:

  • Carregar um arquivo de um aplicativo de dispositivo
  • Receber notificação de upload de arquivo em um aplicativo de back-end

Carregar um arquivo de um aplicativo de dispositivo

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

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

  1. Conecte o dispositivo ao IoT Hub
  2. Obter um URI SAS do hub IoT
  3. Carregar o arquivo no Armazenamento do Microsoft Azure
  4. Enviar uma notificação de status de upload de arquivo para o hub IoT

Conectar um dispositivo ao Hub IoT

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

  • Certificado X.509
  • Chave de acesso compartilhada

Autenticar usando um certificado X.509

Para conectar um dispositivo ao IoT Hub 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 do dispositivo com o IoT Hub.

Esse exemplo mostra valores de parâmetros de entrada de 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, veja:

Exemplos de código

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

Autentique usando uma chave de acesso compartilhada

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

IotHubClientProtocol protocol = IotHubClientProtocol.MQTT;

Instancie DeviceClient para conectar-se 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 retornados. Os valores retornados podem ser passados para métodos de upload de arquivo.

Método Valor retornado
getCorrelationId() ID de Correlação
getContainerName() Nome do contêiner
getBlobName() Nome de blob
getBlobUri() URI do blob

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 arquivo no Armazenamento do Microsoft Azure

Passe o ponto de extremidade do 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 Armazenamento de Blobs.

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

Enviar uma notificação de status de upload de arquivo para o hub IoT

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

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

FileUploadCompletionNotification deve ser chamado mesmo quando o upload de arquivo falha. O Hub IoT tem um número fixo de URI SAS permitido para estar ativo a qualquer momento. Depois de terminar o upload de arquivo, você deverá liberar o URI SAS para que outro URI SAS possa ser gerado. Se um URI SAS não for liberado por meio dessa API, ele será liberado eventualmente com base em quanto tempo os URIs SAS estão configuradas 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

Libere os recursos client.

client.closeNow();

Criar um aplicativo de back-end

Essa seção descreve como receber uma notificação de upload de arquivo em um aplicativo de backend.

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

Adicionar instruções de importação

Adicione estas instruções de importação para usar o SDK do Java da Internet das Coisas do Azure e o manipulador de exceção.

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

Conecte-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 compartilhado
  • 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 a autenticação em um serviço com o Microsoft Entra ID ou identidades gerenciadas é uma abordagem mais segura. Para saber mais, consulte Melhores Práticas de Segurança > Segurança da Nuvem.

Conectar-se usando a política de acesso compartilhado

Definir o protocolo de conexão

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

IotHubServiceClientProtocol aceita apenas a enumeração AMQPS ou AMQPS_WS.

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 IoT Hub, seu serviço precisa da permissão Serviço de conexão. Por padrão, todo Hub IoT é criado com uma política de acesso compartilhado chamada serviço que concede essa permissão.

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

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

Abra a conexão do 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 ser autenticado com sucesso e obter 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, confira Controlar o acesso ao Hub IoT usando o Microsoft Entra ID.

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

Para simplificar, esta seção se concentra em descrever a autenticação usando o segredo do cliente.

Configurar o aplicativo Microsoft Entra

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

  • Segredo do cliente
  • Certificado
  • Credencial de identidade federada

Os aplicativos do 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 a módulos gêmeos. Para obter mais informações, confira 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 do Microsoft Entra, confira 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 TokenCredential específico ou ChainedTokenCredential reduzido. Para obter mais informações sobre os prós e contras do uso de DefaultAzureCredential, confira Cadeias de credenciais na biblioteca de clientes da Identidade do Azure para Java.

O 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 credencial em uma ordem até encontrar uma credencial em funcionamento.

Você pode autenticar as credenciais do aplicativo do Microsoft Entra usando DefaultAzureCredentialBuilder. Salve os parâmetros de conexão, como o tenantID do segredo do cliente, clientID e valores do segredo do cliente como variáveis ambientais. Depois que o TokenCredential for criado, passe-o 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 o ClientSecretCredentialBuilder

Você pode usar ClientSecretCredentialBuilder para criar uma credencial usando informações do 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, o segredo do cliente de registro do aplicativo do Microsoft Entra, a ID do cliente e os valores da ID do locatário foram adicionados a variáveis de ambiente. Essas variáveis de ambiente são usadas pelo ClientSecretCredentialBuilder para 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 SDK do Java também inclui estas classes que autenticam um aplicativo de back-end com o Microsoft Entra:

Exemplos de código

Para obter exemplos práticos da autenticação de serviço do Microsoft Entra, confira o Exemplo de autenticação baseada em função.

Verificar o status de upload de arquivo

Para verificar o status de upload de arquivo:

  1. Crie um objeto getFileUploadNotificationReceiver.
  2. Use aberto para se conectar ao hub IoT.
  3. Chame o recebimento para verificar o status de upload do arquivo. Este método retorna um objeto fileUploadNotification. Se um aviso de upload for recebido, você poderá exibir campos de status de upload usando 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 arquivo do SDK

Há dois exemplos de upload de arquivo 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 upload do arquivo.

pip install azure.storage.blob

Carregar arquivo de um aplicativo de dispositivo

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

Importar bibliotecas

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

Conectar um dispositivo ao Hub IoT

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

  • Certificado X.509
  • Chave de acesso compartilhada

Autenticar usando um certificado X.509

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

  1. Use create_from_x509_certificate para adicionar os parâmetros do certificado X.509
  2. Chame conexão para conectar o cliente do dispositivo

Esse exemplo mostra valores de parâmetros de entrada de 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 do nome do 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, veja:

Exemplos de código

Para obter amostras 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íncronos.

Autentique usando uma chave de acesso compartilhada

Para conectar um dispositivo ao IoT Hub:

  1. Chame create_from_connection_string para adicionar a cadeia de conexão primária do dispositivo.
  2. Chame a conexão 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 do Armazenamento de Blobs

Chame get_storage_info_for_blob para obter informações de um hub IoT sobre uma conta vinculada do Armazenamento do Microsoft Azure. Essas informações incluem nome do host, nome do contêiner, nome do blob e um token SAS. O método get_storage_info_for_blob também retorna um correlation_id, que é usado no método notify_blob_upload_status. correlation_id é a maneira do Hub IoT 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 arquivo no Armazenamento de Blobs

Para carregar um arquivo no Armazenamento de Blobs:

  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 estrutura blob_info para criar uma URL que ela usa para inicializar um BlobClient. Em seguida, ele chama upload_blob para carregar o arquivo no Armazenamento de Blobs.

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 upload

Use notify_blob_upload_status para notificar o Hub IoT sobre o status da operação de Armazenamento de Blobs. Passe o método correlation_id obtido pelo método get_storage_info_for_blob. 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 upload de arquivo.

Este exemplo notifica o Hub IoT sobre um upload de arquivo bem-sucedido:

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

Desligar o cliente do dispositivo

Desligue o cliente. Depois que este método é chamado, qualquer tentativa de chamadas de cliente adicionais resulta na geração de um ClientError.

device_client.shutdown()

Exemplos de upload de arquivo do SDK

O SDK inclui dois exemplos de upload de arquivo:

Visão geral

Esse artigo descreve como usar o Azure IoT SDK para Node.js para criar um aplicativo de dispositivo para carregar um arquivo e o aplicativo de serviço de backend receber uma notificação de upload 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 da Internet das Coisas do Azure para Node.js.

Instalar pacotes do 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 seu computador 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 os dispositivos IoT.

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

  1. Conecte o dispositivo ao IoT Hub
  2. Obtenha um token de assinatura de acesso compartilhado (SAS) Blob do IoT Hub
  3. Carregar o arquivo no Armazenamento do Microsoft Azure
  4. Enviar uma notificação de status de upload de arquivo para o hub IoT

Criar módulos

Crie módulos 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');

Conectar um dispositivo ao Hub IoT

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

  • Certificado X.509
  • Chave de acesso compartilhada

Autenticar usando um certificado X.509

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

Para configurar uma conexão de dispositivo para IoT Hub 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 à sequência de conexão do dispositivo para indicar que um certificado foi adicionado a 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. Chame abrir para abrir a conexão do dispositivo com o IoT Hub.

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

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, veja:

Exemplo de código

Para um exemplo funcional de autenticação de certificado X.509 do dispositivo, veja Amostra simples do dispositivo X.509.

Autentique usando uma chave de acesso compartilhada

Escolher um protocolo de transporte

O objeto Client dá suporte a esses protocolos:

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

Instale os protocolos de transporte necessários em seu computador de desenvolvimento.

Por exemplo, esse comando instala o protocolo Amqp:

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

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

Criar um objeto cliente

Crie um objeto Client usando o pacote instalado.

Por exemplo:

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

Crie um objeto Protocol 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 – protocolo de transporte.

Esse exemplo usa o protocolo de transporte Amqp:

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

Use o método open para abrir uma 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);
  }
})

Obtenha 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');
}

Carregar o arquivo no hub IoT

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

  1. Criar um pipeline de fluxo
  2. Construir a URL do blob
  3. Criar um BlockBlobClient para upload de arquivo no Armazenamento de Blobs
  4. Chamar uploadFile para carregar o arquivo no Armazenamento de Blobs
  5. Chame notifyBlobUploadStatus para notificar o hub IoT de que o upload 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 blobs

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

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

Exemplo de upload de arquivo do SDK

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

Criar um aplicativo de back-end

Essa seção descreve como receber notificações de upload de arquivos em um aplicativo de backend.

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

Instalar o pacote do SDK de serviço

Execute esse comando para instalar azure-iothub em seu computador 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 compartilhado
  • 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 a autenticação em um serviço com o Microsoft Entra ID ou identidades gerenciadas é uma abordagem mais segura. Para saber mais, consulte Melhores Práticas de Segurança > Segurança da Nuvem.

Conectar-se usando a 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 serviço de conexão. Por padrão, todo Hub IoT é criado com uma política de acesso compartilhado chamada serviço que concede essa permissão.

Como um 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 as políticas de acesso compartilhado, confira Controlar o acesso ao Hub IoT com as 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 ser autenticado com sucesso e obter 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, confira Controlar o acesso ao Hub IoT usando o Microsoft Entra ID.

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

Configurar o aplicativo Microsoft Entra

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

  • Segredo do cliente
  • Certificado
  • Credencial de identidade federada

Os aplicativos do 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 a módulos gêmeos. Para obter mais informações, confira 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 do Microsoft Entra, confira 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 TokenCredential específico ou ChainedTokenCredential reduzido. Para simplificar, esta seção descreve a autenticação usando DefaultAzureCredential e um segredo do cliente. Para obter mais informações sobre os prós e contras do uso de DefaultAzureCredential, confira Cadeias de credenciais na biblioteca de clientes da Identidade do Azure para JavaScript

O 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 credencial em uma ordem até encontrar uma credencial em funcionamento.

O Microsoft Entra requer este pacote:

npm install --save @azure/identity

Nesse exemplo, o segredo do cliente de registro do aplicativo do Microsoft Entra, a ID do cliente e a ID do locatário foram adicionados a variáveis de ambiente. Essas variáveis de ambiente são usadas pelo 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 então ser passado para fromTokenCredential para se conectar ao Hub IoT para um cliente do SDK que aceite as 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 prefixo https://. Por exemplo, MyAzureDomain.azure-devices.net.
  • O token de credencial do Azure

Nesse exemplo, a credencial do Azure é obtida usando DefaultAzureCredential. A URL de domínio e a credencial do Azure são fornecidas para Registry.fromTokenCredential para 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);
Exemplos de código

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

Crie um receptor de retorno de chamada de notificação de upload de arquivo

Para criar um receptor 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 upload de arquivo que é chamado quando 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 receptor de retorno de chamada de notificação receiveFileUploadNotification. O receptor 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 upload de arquivo SDK

O SDK inclui um exemplo de upload de arquivo.