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:
- Visão geral dos uploads de arquivos com o Hub IoT
- Introdução ao Armazenamento de Blobs do Azure
- SDKs do Azure IoT
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:
- Conectar-se ao Hub IoT
- Obter um URI SAS do hub IoT
- Carregar o arquivo no armazenamento do Azure
- 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:
Use DeviceAuthenticationWithX509Certificate para criar um objeto que contém informações do dispositivo e do certificado.
DeviceAuthenticationWithX509Certificate
é passado como o segundo parâmetro paraDeviceClient.Create
(etapa 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:
- Conecte-se com o certificado X.509
- DeviceClientX509AuthenticationE2ETests
- Projeto guiado - Provisione dispositivos IoT com segurança e em escala com o IoT Hub Device Provisioning Service
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:
Crie um objeto blockBlobClient, passando um URI de upload de arquivo.
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:
- Crie um CancellationToken.
- Chame GetFileNotificationReceiver para criar um receptor de notificação.
- 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:
- Conecte o dispositivo ao IoT Hub
- Obter um URI SAS do hub IoT
- Carregar o arquivo no Armazenamento do Microsoft Azure
- 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:
- Crie o objeto SSLContext usando buildSSLContext.
- Adicione as
SSLContext
informações a um objeto ClientOptions. - 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:
- AuthorizationCodeCredential
- AzureCliCredential
- AzureDeveloperCliCredential
- AzurePipelinesCredential
- ChainedTokenCredential
- ClientAssertionCredential
- ClientCertificateCredential
- DeviceCodeCredential
- EnvironmentCredential
- InteractiveBrowserCredential
- ManagedIdentityCredential
- OnBehalfOfCredential
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:
- Crie um objeto getFileUploadNotificationReceiver.
- Use aberto para se conectar ao hub IoT.
- 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:
- Use create_from_x509_certificate para adicionar os parâmetros do certificado X.509
- 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:
- Chame create_from_connection_string para adicionar a cadeia de conexão primária do dispositivo.
- 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:
- Use from_blob_url para criar um objeto BlobClient a partir de uma URL de blob.
- 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:
- Conecte o dispositivo ao IoT Hub
- Obtenha um token de assinatura de acesso compartilhado (SAS) Blob do IoT Hub
- Carregar o arquivo no Armazenamento do Microsoft Azure
- 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:
- 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 aDeviceClientOptions
. Por exemplo:HostName=xxxxx.azure-devices.net;DeviceId=Device-1;SharedAccessKey=xxxxxxxxxxxxx;x509=true
. - Configure uma variável JSON com detalhes do certificado e passe-a para DeviceClientOptions.
- Chame setOptions para adicionar um certificado X.509 e uma chave (e, opcionalmente, uma senha) ao transporte do cliente.
- 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 usarHttp
, a instânciaClient
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:
- Criar um pipeline de fluxo
- Construir a URL do blob
- Criar um BlockBlobClient para upload de arquivo no Armazenamento de Blobs
- Chamar uploadFile para carregar o arquivo no Armazenamento de Blobs
- 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:
- Introdução à autenticação do usuário no Azure
- Biblioteca de clientes da Identidade do Azure para JavaScript
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 prefixohttps://
. 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:
- 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.
- 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.