Nahrání souborů ze zařízení do cloudu pomocí Azure IoT Hubu
Tento článek ukazuje, jak:
- Pomocí funkcí pro nahrání souborů služby IoT Hub nahrajte soubor do služby Azure Blob Storage pomocí sad SDK pro zařízení a služby Azure IoT.
- Upozorněte ioT Hub, že se soubor úspěšně nahrál a vytvořil back-endovou službu pro příjem oznámení o nahrání souborů ze služby IoT Hub pomocí sad SDK služby Azure IoT.
V některých scénářích nemůžete snadno namapovat data, která vaše zařízení odesílají, do relativně malých zpráv typu zařízení-cloud, které IoT Hub přijímá. Možnosti nahrávání souborů ve službě IoT Hub umožňují přesun velkých nebo složitých dat do cloudu. Příklad:
- Videa
- Velké soubory obsahující obrázky
- Data kmitání vzorkovaná ve vysoké frekvenci
- Některá forma předzpracovaných dat
Tyto soubory se obvykle dávkově zpracovávají v cloudu pomocí nástrojů, jako je Azure Data Factory nebo stack Hadoop . Pokud potřebujete nahrát soubory ze zařízení, můžete dál používat zabezpečení a spolehlivost ioT Hubu. V tomto článku se dozvíte, jak na to.
Tento článek je určený k doplnění spustitelných ukázek sady SDK, na které odkazuje tento článek.
Další informace naleznete v tématu:
- Přehled nahrávání souborů ve službě IoT Hub
- Seznámení se službou Azure Blob Storage
- Sady Azure IoT SDK
Důležité
Funkce nahrávání souborů na zařízeních, která používají ověřování certifikační autority (CA) X.509, je ve verzi Public Preview a musí být povolený režim náhledu. Je obecně dostupná na zařízeních, která používají ověřování kryptografického otisku X.509 nebo ověření identity certifikátu X.509 se službou Azure Device Provisioning. Další informace o ověřování X.509 ve službě IoT Hub najdete v tématu Podporované certifikáty X.509.
Požadavky
IoT Hub. Některá volání sady SDK vyžadují primární připojovací řetězec ioT Hubu, proto si poznamenejte připojovací řetězec.
Registrované zařízení. Některá volání sady SDK vyžadují primární připojovací řetězec zařízení, proto si poznamenejte připojovací řetězec.
Oprávnění ke službě IoT Hub Service Connect – K příjmu zpráv s oznámením o nahrání souboru potřebuje vaše back-endová služba oprávnění Service Connect . Ve výchozím nastavení se každá služba IoT Hub vytvoří pomocí zásady sdíleného přístupu s názvem služby , která toto oprávnění uděluje. Další informace najdete v tématu Připojení k centru IoT.
Nakonfigurujte nahrávání souborů ve službě IoT Hub propojením účtu služby Azure Storage a kontejneru Azure Blob Storage. Můžete je nakonfigurovat pomocí webu Azure Portal, Azure CLI nebo Azure PowerShellu.
Přehled
Tento postup obsahuje dvě části:
- Nahrání souboru z aplikace zařízení
- Příjem oznámení o nahrání souboru v back-endové aplikaci
Nahrání souboru z aplikace zařízení
Tato část popisuje, jak nahrát soubor ze zařízení do centra IoT pomocí třídy DeviceClient v sadě Azure IoT SDK pro .NET.
Tímto postupem nahrajete soubor ze zařízení do centra IoT:
- Připojení ke službě IoT Hub
- Získání identifikátoru URI SAS ze služby IoT Hub
- Nahrání souboru do úložiště Azure
- Oznámení ioT Hubu o stavu nahrání souboru
Připojení zařízení ke službě IoT Hub
Aplikace zařízení se může ověřit ve službě IoT Hub pomocí následujících metod:
- Certifikát X.509
- Sdílený přístupový klíč
Ověřování pomocí certifikátu X.509
Připojení zařízení ke službě IoT Hub pomocí certifikátu X.509:
Pomocí DeviceAuthenticationWithX509Certificate vytvořte objekt, který obsahuje informace o zařízení a certifikátu.
DeviceAuthenticationWithX509Certificate
je předán jako druhý parametr (DeviceClient.Create
krok 2).Pomocí DeviceClient.Create připojte zařízení ke službě IoT Hub pomocí certifikátu X.509.
V tomto příkladu jsou informace o zařízení a certifikátu vyplněny v objektu auth
DeviceAuthenticationWithX509Certificate
, který je předán DeviceClient.Create
.
Tento příklad ukazuje hodnoty vstupních parametrů certifikátu jako místní proměnné pro přehlednost. V produkčním systému uložte citlivé vstupní parametry do proměnných prostředí nebo do jiného bezpečnějšího umístění úložiště. Slouží Environment.GetEnvironmentVariable("HOSTNAME")
například ke čtení proměnné prostředí názvu hostitele.
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);
Další informace o ověřování certifikátů najdete tady:
Ukázky kódu
Pracovní ukázky ověřování certifikátů X.509 zařízení najdete tady:
- Připojení pomocí certifikátu X.509
- DeviceClientX509AuthenticationE2ETests
- Projekt s asistencí – Zabezpečené a škálovatelné zřizování zařízení IoT pomocí služby IoT Hub Device Provisioning
Ověřování pomocí sdíleného přístupového klíče
Volání CreateFromConnectionString pro připojení k zařízení. Předejte primární připojovací řetězec zařízení.
AMQP
je výchozí přenosový protokol.
static string connectionString = "{device primary connection string}";
deviceClient = DeviceClient.CreateFromConnectionString(connectionString);
Získání identifikátoru URI SAS ze služby IoT Hub
Pokud chcete získat podrobnosti o nahrávání souborů, zavolejte GetFileUploadSasUriAsync . Identifikátor URI SAS se používá v dalším kroku k nahrání souboru ze zařízení do služby Blob Storage.
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();
Nahrání souboru do úložiště Azure
Nahrání souboru do úložiště Azure:
Vytvořte objekt blockBlobClient a předejte identifikátor URI pro nahrání souboru.
Pomocí metody UploadAsync nahrajte soubor do služby Blob Storage a předejte identifikátor URI SAS. Volitelně můžete přidat možnosti nahrání objektu blob a parametry tokenu zrušení.
Klient Azure Blob vždy používá jako protokol HTTPS k nahrání souboru do Služby Azure Storage.
V tomto příkladu se předá identifikátor URI SAS k BlockBlobClient
vytvoření klienta objektů blob bloku služby Azure Storage a nahraje soubor:
var blockBlobClient = new BlockBlobClient(uploadUri);
await blockBlobClient.UploadAsync(fileStreamSource, null, null);
Oznámení ioT Hubu o stavu nahrání souboru
Pomocí CompleteFileUploadAsync upozorněte službu IoT Hub, že klient zařízení dokončil nahrávání a předal objekt FileUploadCompletionNotification . Příznak IsSuccess
označuje, jestli nahrávání proběhlo úspěšně. Po oznámení služba IoT Hub uvolní prostředky přidružené k nahrání (identifikátor URI SAS).
Pokud jsou povolená oznámení o nahrávání souborů, služba IoT Hub odešle zprávu s oznámením o nahrání souboru do back-endových služeb, které jsou nakonfigurované pro oznámení o nahrání souboru.
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);
Ukázka nahrání souboru sady SDK
Sada SDK obsahuje tuto ukázku nahrání souboru.
Přijetí oznámení o nahrání souboru v back-endové aplikaci
Můžete vytvořit back-endovou službu pro příjem zpráv oznámení o nahrání souboru z Centra IoT.
Třída ServiceClient obsahuje metody, které mohou služby použít k přijímání oznámení o nahrávání souborů.
Přidání balíčku NuGet služby
Aplikace back-endových služeb vyžadují balíček NuGet Microsoft.Azure.Devices .
Připojení ke službě IoT Hub
Back-endovou službu můžete ke službě IoT Hub připojit pomocí následujících metod:
- Zásady sdíleného přístupu
- Microsoft Entra
Důležité
Tento článek obsahuje postup připojení ke službě pomocí sdíleného přístupového podpisu. Tato metoda ověřování je vhodná pro testování a vyhodnocení, ale ověřování ve službě pomocí MICROSOFT Entra ID nebo spravovaných identit je bezpečnější přístup. Další informace najdete v tématu Osvědčené postupy > zabezpečení cloudu.
Připojení pomocí zásad sdíleného přístupu
Připojte back-endovou aplikaci k zařízení pomocí createFromConnectionString. Vaše aplikace potřebuje oprávnění pro připojení ke službě. Zadejte tuto zásadu sdíleného přístupu připojovací řetězec jako parametr .fromConnectionString
Další informace o zásadách sdíleného přístupu najdete v tématu Řízení přístupu ke službě IoT Hub pomocí sdílených přístupových podpisů.
Příklad:
using Microsoft.Azure.Devices;
static ServiceClient serviceClient;
static string connectionString = "{Shared access policy connection string}";
serviceClient = ServiceClient.CreateFromConnectionString(connectionString);
Připojení pomocí Microsoft Entra
Back-endová aplikace, která používá Microsoft Entra, se musí před připojením ke službě IoT Hub úspěšně ověřit a získat přihlašovací údaje tokenu zabezpečení. Tento token se předá metodě připojení ioT Hubu. Obecné informace o nastavení a používání Microsoft Entra pro IoT Hub naleznete v tématu Řízení přístupu ke službě IoT Hub pomocí Microsoft Entra ID.
Konfigurace aplikace Microsoft Entra
Musíte nastavit aplikaci Microsoft Entra, která je nakonfigurovaná pro vaše upřednostňované přihlašovací údaje ověřování. Aplikace obsahuje parametry, jako je tajný klíč klienta, který používá back-endová aplikace k ověření. Dostupné konfigurace ověřování aplikací:
- Tajný klíč klienta
- Certifikát
- Přihlašovací údaje federované identity
Aplikace Microsoft Entra mohou v závislosti na provedených operacích vyžadovat určitá oprávnění role. K povolení přístupu ke čtení a zápisu k zařízení a dvojčatům modulů služby IoT Hub je například potřeba přispěvatel dvojčete služby IoT Hub. Další informace najdete v tématu Správa přístupu ke službě IoT Hub pomocí přiřazení role Azure RBAC.
Další informace o nastavení aplikace Microsoft Entra najdete v tématu Rychlý start: Registrace aplikace na platformě Microsoft Identity Platform.
Ověřování pomocí DefaultAzureCredential
Nejjednodušší způsob, jak použít Microsoft Entra k ověření back-endové aplikace, je použít DefaultAzureCredential, ale doporučuje se použít jinou metodu v produkčním prostředí, včetně konkrétní TokenCredential
nebo pared-down ChainedTokenCredential
. Pro zjednodušení popisuje tato část ověřování pomocí DefaultAzureCredential
a tajný klíč klienta. Další informace o výhodách a nevýhodách použití naleznete v pokynech k použití DefaultAzureCredential
pro DefaultAzureCredential.
DefaultAzureCredential
podporuje různé mechanismy ověřování a určuje odpovídající typ přihlašovacích údajů na základě prostředí, ve které se provádí. Pokusí se použít více typů přihlašovacích údajů v pořadí, dokud nenajde funkční přihlašovací údaje.
Microsoft Entra vyžaduje tyto balíčky NuGet a odpovídající using
příkazy:
- Azure.Core
- Azure.Identity
using Azure.Core;
using Azure.Identity;
V tomto příkladu se do proměnných prostředí přidá tajný klíč klienta registrace aplikace Microsoft Entra, ID klienta a ID tenanta. Tyto proměnné prostředí se používají DefaultAzureCredential
k ověření aplikace. Výsledkem úspěšného ověřování Microsoft Entra je přihlašovací údaje tokenu zabezpečení předávané metodě připojení ioT Hubu.
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();
Výsledný tokenCredential se pak dá předat metodě připojení ke službě IoT Hub pro libovolného klienta sady SDK, který přijímá přihlašovací údaje Microsoft Entra:
V tomto příkladu TokenCredential
se předá objekt ServiceClient.Create
připojení ServiceClient k vytvoření objektu připojení ServiceClient .
string hostname = "xxxxxxxxxx.azure-devices.net";
using var serviceClient = ServiceClient.Create(hostname, tokenCredential, TransportType.Amqp);
V tomto příkladu TokenCredential
se předá k RegistryManager.Create
vytvoření objektu RegistryManager .
string hostname = "xxxxxxxxxx.azure-devices.net";
registryManager = RegistryManager.Create(hostname, tokenCredential);
Ukázka kódu
Funkční ukázka ověřování služby Microsoft Entra najdete v ukázce ověřování na základě rolí.
Příjem oznámení o nahrání souboru
Příjem oznámení o nahrání souboru:
- Vytvořte CancellationToken.
- Volání GetFileNotificationReceiver vytvořit příjemce oznámení.
- Pomocí smyčky ReceiveAsync počkejte na oznámení o nahrání souboru.
Příklad:
// 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);
}
Ukázka příjemce nahrání souboru sady SDK
Sada SDK obsahuje tuto ukázku příjemce pro nahrání souboru.
Přehled
Tento postup obsahuje dvě části:
- Nahrání souboru z aplikace zařízení
- Příjem oznámení o nahrání souboru v back-endové aplikaci
Nahrání souboru z aplikace zařízení
Tato část popisuje, jak nahrát soubor ze zařízení do centra IoT pomocí třídy DeviceClient ze sady Azure IoT SDK pro Javu.
Tímto postupem nahrajete soubor ze zařízení do centra IoT:
- Připojení zařízení ke službě IoT Hub
- Získání identifikátoru URI SAS ze služby IoT Hub
- Nahrání souboru do Azure Storage
- Odeslání oznámení o stavu nahrání souboru do ioT Hubu
Připojení zařízení ke službě IoT Hub
Aplikace zařízení se může ověřit ve službě IoT Hub pomocí následujících metod:
- Certifikát X.509
- Sdílený přístupový klíč
Ověřování pomocí certifikátu X.509
Připojení zařízení ke službě IoT Hub pomocí certifikátu X.509:
- Sestavte objekt SSLContext pomocí buildSSLContext.
SSLContext
Přidejte informace do objektu ClientOptions.- Pomocí informací zavolejte DeviceClient
ClientOptions
a vytvořte připojení typu device-to-IoT Hub.
Tento příklad ukazuje hodnoty vstupních parametrů certifikátu jako místní proměnné pro přehlednost. V produkčním systému uložte citlivé vstupní parametry do proměnných prostředí nebo do jiného bezpečnějšího umístění úložiště. Slouží Environment.GetEnvironmentVariable("PUBLICKEY")
například ke čtení proměnné prostředí řetězce certifikátu veřejného klíče.
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);
Další informace o ověřování certifikátů najdete tady:
Ukázky kódu
Pracovní ukázky ověřování certifikátů X.509 zařízení najdete tady:
Ověřování pomocí sdíleného přístupového klíče
Operace nahrávání souborů vždy používají protokol HTTPS, ale DeviceClient může definovat IotHubClientProtocol pro jiné služby, jako jsou telemetrie, metoda zařízení a dvojče zařízení.
IotHubClientProtocol protocol = IotHubClientProtocol.MQTT;
DeviceClient
Vytvořte instanci pro připojení k zařízení pomocí primárního připojovací řetězec zařízení.
String connString = "{IoT hub connection string}";
DeviceClient client = new DeviceClient(connString, protocol);
Získání identifikátoru URI SAS ze služby IoT Hub
Volání getFileUploadSasUri získat FileUploadSasUriResponse objektu.
FileUploadSasUriResponse
zahrnuje tyto metody a návratové hodnoty. Návratové hodnoty je možné předávat metodám nahrávání souborů.
metoda | Vrácená hodnota |
---|---|
getCorrelationId() |
ID korelace |
getContainerName() |
Název kontejneru |
getBlobName() |
Název objektu blob |
getBlobUri() |
Blob URI |
Příklad:
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());
Nahrání souboru do Azure Storage
Předáním koncového bodu identifikátoru URI objektu blob objektu BlobClientBuilder.buildclient vytvořte objekt BlobClient .
BlobClient blobClient =
new BlobClientBuilder()
.endpoint(sasUriResponse.getBlobUri().toString())
.buildClient();
Volání uploadFromFile pro nahrání souboru do blob Storage.
String fullFileName = "Path of the file to upload";
blobClient.uploadFromFile(fullFileName);
Odeslání oznámení o stavu nahrání souboru do ioT Hubu
Po pokusu o nahrání souboru odešlete do služby IoT Hub oznámení o stavu nahrávání.
Vytvořte FileUploadCompletionNotification objekt. Předejte stav úspěšného nahrání souboru a isSuccess
odešlete hocorrelationId
. isSuccess
true
Pokud ne, předejte hodnotu při false
úspěšném nahrání souboru.
FileUploadCompletionNotification
musí být volána i v případě, že se nahrávání souboru nezdaří. IoT Hub má pevný počet identifikátorů URI SAS, který může být v daném okamžiku aktivní. Až nahrávání souboru dokončíte, měli byste identifikátor URI SAS uvolnit, aby bylo možné vygenerovat další identifikátor URI SAS. Pokud identifikátor URI SAS není prostřednictvím tohoto rozhraní API uvolněný, uvolní se nakonec na základě toho, jak dlouho se identifikátory URI SAS konfigurují tak, aby v centru IoT žili.
Tento příklad předá úspěšný stav.
FileUploadCompletionNotification completionNotification = new FileUploadCompletionNotification(sasUriResponse.getCorrelationId(), true);
client.completeFileUpload(completionNotification);
Zavření klienta
Uvolněte client
prostředky.
client.closeNow();
Vytvoření back-endové aplikace
Tato část popisuje, jak přijímat oznámení o nahrání souboru v back-endové aplikaci.
Třída ServiceClient obsahuje metody, které mohou služby použít k přijímání oznámení o nahrávání souborů.
Přidání příkazů importu
Přidejte tyto příkazy importu pro použití sady Azure IoT Java SDK a obslužné rutiny výjimek.
import com.microsoft.azure.sdk.iot.service.*;
import java.io.IOException;
import java.net.URISyntaxException;
Připojení ke službě IoT Hub
Back-endovou službu můžete ke službě IoT Hub připojit pomocí následujících metod:
- Zásady sdíleného přístupu
- Microsoft Entra
Důležité
Tento článek obsahuje postup připojení ke službě pomocí sdíleného přístupového podpisu. Tato metoda ověřování je vhodná pro testování a vyhodnocení, ale ověřování ve službě pomocí MICROSOFT Entra ID nebo spravovaných identit je bezpečnější přístup. Další informace najdete v tématu Osvědčené postupy > zabezpečení cloudu.
Připojení pomocí zásad sdíleného přístupu
Definování protokolu připojení
Pomocí IotHubServiceClientProtocol definujte protokol aplikační vrstvy používaný klientem služby ke komunikaci se službou IoT Hub.
IotHubServiceClientProtocol
přijímá pouze výčet AMQPS
nebo AMQPS_WS
výčt.
private static final IotHubServiceClientProtocol protocol =
IotHubServiceClientProtocol.AMQPS;
Vytvoření objektu ServiceClient
Vytvořte objekt ServiceClient a zadejte připojovací řetězec a protokol iot Hubu.
K nahrání souboru na zařízení do IoT Hubu potřebuje vaše služba oprávnění pro připojení ke službě. Ve výchozím nastavení se každá služba IoT Hub vytvoří pomocí zásady sdíleného přístupu s názvem služby , která toto oprávnění uděluje.
Jako parametr ServiceClient
konstruktoru zadejte zásadu sdíleného přístupu služby . Další informace o zásadách sdíleného přístupu najdete v tématu Řízení přístupu ke službě IoT Hub pomocí sdílených přístupových podpisů.
String iotHubConnectionString = "HostName=xxxxx.azure-devices.net;SharedAccessKeyName=service;SharedAccessKey=xxxxxxxxxxxxxxxxxxxxxxxx";
private static final ServiceClient serviceClient (iotHubConnectionString, protocol);
Otevření připojení mezi aplikací a IoT Hubem
Otevřete připojení odesílatele AMQP. Tato metoda vytvoří připojení mezi aplikací a IoT Hubem.
serviceClient.open();
Připojení pomocí Microsoft Entra
Back-endová aplikace, která používá Microsoft Entra, se musí před připojením ke službě IoT Hub úspěšně ověřit a získat přihlašovací údaje tokenu zabezpečení. Tento token se předá metodě připojení ioT Hubu. Obecné informace o nastavení a používání Microsoft Entra pro IoT Hub naleznete v tématu Řízení přístupu ke službě IoT Hub pomocí Microsoft Entra ID.
Přehled ověřování v sadě Java SDK najdete v tématu Ověřování Azure s využitím Javy a identity Azure.
Pro zjednodušení se tato část zaměřuje na popis ověřování pomocí tajného klíče klienta.
Konfigurace aplikace Microsoft Entra
Musíte nastavit aplikaci Microsoft Entra, která je nakonfigurovaná pro vaše upřednostňované přihlašovací údaje ověřování. Aplikace obsahuje parametry, jako je tajný klíč klienta, který používá back-endová aplikace k ověření. Dostupné konfigurace ověřování aplikací:
- Tajný klíč klienta
- Certifikát
- Přihlašovací údaje federované identity
Aplikace Microsoft Entra mohou v závislosti na provedených operacích vyžadovat určitá oprávnění role. K povolení přístupu ke čtení a zápisu k zařízení a dvojčatům modulů služby IoT Hub je například potřeba přispěvatel dvojčete služby IoT Hub. Další informace najdete v tématu Správa přístupu ke službě IoT Hub pomocí přiřazení role Azure RBAC.
Další informace o nastavení aplikace Microsoft Entra najdete v tématu Rychlý start: Registrace aplikace na platformě Microsoft Identity Platform.
Ověřování pomocí DefaultAzureCredential
Nejjednodušší způsob, jak použít Microsoft Entra k ověření back-endové aplikace, je použít DefaultAzureCredential, ale doporučuje se použít jinou metodu v produkčním prostředí, včetně konkrétní TokenCredential
nebo pared-down ChainedTokenCredential
.
Další informace o výhodách a nevýhodách použití DefaultAzureCredential
najdete v řetězcích přihlašovacích údajů v klientské knihovně Azure Identity pro Javu.
DefaultAzureCredential podporuje různé mechanismy ověřování a určuje odpovídající typ přihlašovacích údajů na základě prostředí, ve které se provádí. Pokusí se použít více typů přihlašovacích údajů v pořadí, dokud nenajde funkční přihlašovací údaje.
Přihlašovací údaje aplikace Microsoft Entra můžete ověřit pomocí defaultAzureCredentialBuilder. Uložte parametry připojení, jako jsou id tenanta tajného klíče klienta, ID klienta a hodnoty tajných kódů klienta, jako jsou proměnné prostředí. Po vytvoření ho TokenCredential
předejte ServiceClient nebo jinému tvůrci jako parametr credential.
V tomto příkladu DefaultAzureCredentialBuilder
se pokusí ověřit připojení ze seznamu popsaného v části DefaultAzureCredential. Výsledkem úspěšného ověřování Microsoft Entra je přihlašovací údaje tokenu zabezpečení předávané konstruktoru, jako je ServiceClient.
TokenCredential defaultAzureCredential = new DefaultAzureCredentialBuilder().build();
Ověřování pomocí ClientSecretCredentialBuilder
Pomocí ClientSecretCredentialBuilder můžete vytvořit přihlašovací údaje pomocí tajných informací klienta. Pokud je tato metoda úspěšná, vrátí tokenCredential , který lze předat ServiceClient nebo jinému tvůrci jako parametr credential.
V tomto příkladu byly do proměnných prostředí přidány hodnoty klienta registrace aplikace Microsoft Entra, ID klienta a ID tenanta. Tyto proměnné prostředí se používají ClientSecretCredentialBuilder
k sestavení přihlašovacích údajů.
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();
Jiné třídy ověřování
Sada Java SDK také obsahuje tyto třídy, které ověřují back-endovou aplikaci pomocí Microsoft Entra:
- AuthorizationCodeCredential
- AzureCliCredential
- AzureDeveloperCliCredential
- AzurePipelinesCredential
- ChainedTokenCredential
- ClientAssertionCredential
- ClientCertificateCredential
- DeviceCodeCredential
- EnvironmentCredential
- InteractiveBrowserCredential
- ManagedIdentityCredential
- OnBehalfOfCredential
Ukázky kódu
Pracovní ukázky ověřování služby Microsoft Entra najdete v ukázce ověřování na základě rolí.
Kontrola stavu nahrání souboru
Kontrola stavu nahrání souboru:
- Vytvořte objekt getFileUploadNotificationReceiver .
- Pro připojení ke službě IoT Hub použijte open .
- Volání příjmu a zkontroluje stav nahrání souboru. Tato metoda vrátí fileUploadNotification objekt. Pokud se zobrazí oznámení o nahrání, můžete zobrazit pole stavu nahrání pomocí metod fileUploadNotification .
Příklad:
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();
Ukázky nahrávání souborů sady SDK
Ukázky pro nahrání dvou souborů v Javě.
Instalace balíčků
Před voláním jakéhokoli souvisejícího kódu je nutné nainstalovat knihovnu azure-iot-device.
pip install azure-iot-device
Balíček azure.storage.blob slouží k nahrání souboru.
pip install azure.storage.blob
Nahrání souboru z aplikace zařízení
Tato část popisuje, jak nahrát soubor ze zařízení do centra IoT pomocí třídy IoTHubDeviceClient ze sady Azure IoT SDK pro Python.
Import knihoven
import os
from azure.iot.device import IoTHubDeviceClient
from azure.core.exceptions import AzureError
from azure.storage.blob import BlobClient
Připojení zařízení ke službě IoT Hub
Aplikace zařízení se může ověřit ve službě IoT Hub pomocí následujících metod:
- Certifikát X.509
- Sdílený přístupový klíč
Ověřování pomocí certifikátu X.509
Připojení zařízení ke službě IoT Hub pomocí certifikátu X.509:
- Přidání parametrů certifikátu X.509 pomocí create_from_x509_certificate
- Volání připojení pro připojení klienta zařízení
Tento příklad ukazuje hodnoty vstupních parametrů certifikátu jako místní proměnné pro přehlednost. V produkčním systému uložte citlivé vstupní parametry do proměnných prostředí nebo do jiného bezpečnějšího umístění úložiště. Slouží os.getenv("HOSTNAME")
například ke čtení proměnné prostředí názvu hostitele.
# 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()
Další informace o ověřování certifikátů najdete tady:
Ukázky kódu
Pracovní ukázky ověřování certifikátů X.509 zařízení najdete v příkladech, jejichž názvy souborů končí ve scénářích centra Async.
Ověřování pomocí sdíleného přístupového klíče
Připojení zařízení ke službě IoT Hub:
- Voláním create_from_connection_string přidejte primární připojovací řetězec zařízení.
- Voláním připojení připojte klienta zařízení.
Příklad:
# 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()
Získání informací o službě Blob Storage
Zavolejte get_storage_info_for_blob a získejte informace z centra IoT o propojeném účtu Azure Storage. Tyto informace zahrnují název hostitele, název kontejneru, název objektu blob a token SAS. Metoda get_storage_info_for_blob
také vrátí correlation_id
, který se používá v notify_blob_upload_status
metodě. Je to correlation_id
způsob označení objektu blob, na kterém pracujete.
# 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)
Nahrání souboru do služby Blob Storage
Nahrání souboru do služby Blob Storage:
- Pomocí from_blob_url vytvořte objekt BlobClient z adresy URL objektu blob.
- Voláním upload_blob nahrajte soubor do služby Blob Storage.
Tento příklad analyzuje blob_info
strukturu a vytvoří adresu URL, kterou používá k inicializaci objektu BlobClient. Potom se zavolá upload_blob
k nahrání souboru do služby Blob Storage.
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)
Oznámení ioT Hubu o stavu nahrání
Pomocí notify_blob_upload_status upozorněte službu IoT Hub na stav operace Blob Storage. Předejte získané correlation_id
metodou get_storage_info_for_blob
. IoT correlation_id
Hub používá k upozornění jakékoli služby, která může naslouchat oznámení o stavu úlohy nahrání souboru.
Tento příklad upozorní službu IoT Hub na úspěšné nahrání souboru:
device_client.notify_blob_upload_status(storage_info["correlationId"], True, 200, "OK: {}".format(PATH_TO_FILE)
Vypnutí klienta zařízení
Vypněte klienta. Jakmile se tato metoda zavolá, jakýkoli pokus o další volání klienta způsobí vyvolání ClientError .
device_client.shutdown()
Ukázky nahrávání souborů sady SDK
Sada SDK obsahuje dvě ukázky nahrávání souborů:
Přehled
Tento článek popisuje, jak pomocí sady Azure IoT SDK pro Node.js vytvořit aplikaci zařízení pro nahrání souboru a aplikace back-endové služby přijímat oznámení o nahrání souboru.
Vytvoření aplikace zařízení
Tato část popisuje, jak nahrát soubor ze zařízení do centra IoT pomocí balíčku azure-iot-device v sadě Azure IoT SDK pro Node.js.
Instalace balíčků SADY SDK
Spuštěním tohoto příkazu nainstalujte sadu SDK zařízení azure-iot-device , azure-iot-device-mqtt a balíčky @azure/storage-blob na vývojovém počítači:
npm install azure-iot-device azure-iot-device-mqtt @azure/storage-blob --save
Balíček zařízení azure-iot-device obsahuje objekty, které jsou rozhraní se zařízeními IoT.
Tímto postupem nahrajete soubor ze zařízení do centra IoT:
- Připojení zařízení ke službě IoT Hub
- Získání tokenu sdíleného přístupového podpisu objektu blob (SAS) ze služby IoT Hub
- Nahrání souboru do Azure Storage
- Odeslání oznámení o stavu nahrání souboru do ioT Hubu
Vytváření modulů
Pomocí nainstalovaných balíčků vytvořte moduly klienta, protokolu, chyb a cest.
const Protocol = require('azure-iot-device-mqtt').Mqtt;
const errors = require('azure-iot-common').errors;
const path = require('path');
Připojení zařízení ke službě IoT Hub
Aplikace zařízení se může ověřit ve službě IoT Hub pomocí následujících metod:
- Certifikát X.509
- Sdílený přístupový klíč
Ověřování pomocí certifikátu X.509
Certifikát X.509 je připojený k přenosu připojení typu device-to-IoT Hub.
Konfigurace připojení typu device-to-IoT Hub pomocí certifikátu X.509:
- Voláním zConnectionString přidejte typ připojovací řetězec a přenosu zařízení. Přidejte
x509=true
do zařízení připojovací řetězec označující, že se doDeviceClientOptions
zařízení přidá certifikát . Například:HostName=xxxxx.azure-devices.net;DeviceId=Device-1;SharedAccessKey=xxxxxxxxxxxxx;x509=true
. - Nakonfigurujte proměnnou JSON s podrobnostmi o certifikátu a předejte ji do DeviceClientOptions.
- Volání setOptions pro přidání certifikátu a klíče X.509 (a volitelně i přístupového hesla) do přenosu klienta.
- Voláním otevřete připojení ze zařízení ke službě IoT Hub.
Tento příklad ukazuje informace o konfiguraci certifikátu v rámci proměnné JSON. Konfigurace options
certifikace se předá setOptions
a připojení se otevře pomocí open
.
var options = {
cert: myX509Certificate,
key: myX509Key,
passphrase: passphrase,
http: {
receivePolicy: {
interval: 10
}
}
}
client.setOptions(options, callback);
client.open(connectCallback);
Další informace o ověřování certifikátů najdete tady:
Ukázka kódu
Funkční ukázka ověřování certifikátu X.509 zařízení najdete v tématu Jednoduché ukázkové zařízení X.509.
Ověřování pomocí sdíleného přístupového klíče
Volba přenosového protokolu
Objekt Client
podporuje tyto protokoly:
Amqp
Http
– Při použitíHttp
Client
instance kontroluje zprávy ze služby IoT Hub zřídka (minimálně každých 25 minut).Mqtt
MqttWs
AmqpWs
Nainstalujte na svůj vývojový počítač potřebné přenosové protokoly.
Tento příkaz například nainstaluje Amqp
protokol:
npm install azure-iot-device-amqp --save
Další informace o rozdílech mezi podporou MQTT, AMQP a HTTPS najdete v pokynech ke komunikaci typu Cloud-zařízení a volba komunikačního protokolu.
Vytvoření objektu klienta
Vytvořte Client
objekt pomocí nainstalovaného balíčku.
Příklad:
const Client = require('azure-iot-device').Client;
Vytvoření objektu protokolu
Vytvořte Protocol
objekt pomocí nainstalovaného přenosového balíčku.
Tento příklad přiřadí protokol AMQP:
const Protocol = require('azure-iot-device-amqp').Amqp;
Přidání připojovací řetězec zařízení a přenosového protokolu
Volání zConnectionString pro zadání parametrů připojení zařízení:
- connStr - zařízení připojovací řetězec.
- transportCtor - transportní protokol.
V tomto příkladu se používá přenosový Amqp
protokol:
const deviceConnectionString = "{IoT hub device connection string}"
const Protocol = require('azure-iot-device-mqtt').Amqp;
let client = Client.fromConnectionString(deviceConnectionString, Protocol);
Otevření připojení ke službě IoT Hub
Pomocí otevřené metody otevřete připojení mezi zařízením IoT a IoT Hubem.
Příklad:
client.open(function(err) {
if (err) {
console.error('error connecting to hub: ' + err);
process.exit(1);
}
})
Získání tokenu SAS ze služby IoT Hub
Pomocí getBlobSharedAccessSignature získejte token SAS propojeného účtu úložiště ze služby IoT Hub.
Příklad:
// 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');
}
Nahrání souboru do IoT Hubu
Nahrání souboru ze zařízení do IoT Hubu:
- Vytvoření kanálu streamu
- Vytvoření adresy URL objektu blob
- Vytvoření BlockBlobClient pro nahrání souboru do služby Blob Storage
- Volání uploadFile pro nahrání souboru do služby Blob Storage
- Volání notifyBlobUploadStatus pro oznámení IoT Hubu, že nahrávání proběhlo úspěšně nebo selhalo
Příklad:
// 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);
Nahrání místního souboru do úložiště objektů blob
Místní soubor můžete nahrát do úložiště objektů blob z počítače.
const deviceClient = Client.fromConnectionString(deviceConnectionString, Protocol);
uploadToBlob(localFilePath, deviceClient)
.catch((err) => {
console.log(err);
})
.finally(() => {
process.exit();
});
Ukázka nahrání souboru sady SDK
Sada SDK obsahuje ukázku pro nahrání do rozšířeného objektu blob.
Vytvoření back-endové aplikace
Tato část popisuje, jak přijímat oznámení o nahrávání souborů v back-endové aplikaci.
Třída ServiceClient obsahuje metody, které mohou služby použít k přijímání oznámení o nahrávání souborů.
Instalace balíčku sady SDK služby
Spuštěním tohoto příkazu nainstalujte azure-iothub na vývojový počítač:
npm install azure-iothub --save
Připojení ke službě IoT Hub
Back-endovou službu můžete ke službě IoT Hub připojit pomocí následujících metod:
- Zásady sdíleného přístupu
- Microsoft Entra
Důležité
Tento článek obsahuje postup připojení ke službě pomocí sdíleného přístupového podpisu. Tato metoda ověřování je vhodná pro testování a vyhodnocení, ale ověřování ve službě pomocí MICROSOFT Entra ID nebo spravovaných identit je bezpečnější přístup. Další informace najdete v tématu Osvědčené postupy > zabezpečení cloudu.
Připojení pomocí zásad sdíleného přístupu
Použijte fromConnectionString pro připojení ke službě IoT Hub.
K nahrání souboru ze zařízení potřebuje vaše služba oprávnění pro připojení ke službě. Ve výchozím nastavení se každá služba IoT Hub vytvoří pomocí zásady sdíleného přístupu s názvem služby , která toto oprávnění uděluje.
Jako parametr CreateFromConnectionString
zadejte zásady sdíleného přístupu služby připojovací řetězec. Další informace o zásadách sdíleného přístupu najdete v tématu Řízení přístupu ke službě IoT Hub pomocí sdílených přístupových podpisů.
var Client = require('azure-iothub').Client;
var connectionString = '{IoT hub shared access policy connection string}';
var client = Client.fromConnectionString(connectionString);
Připojení pomocí Microsoft Entra
Back-endová aplikace, která používá Microsoft Entra, se musí před připojením ke službě IoT Hub úspěšně ověřit a získat přihlašovací údaje tokenu zabezpečení. Tento token se předá metodě připojení ioT Hubu. Obecné informace o nastavení a používání Microsoft Entra pro IoT Hub naleznete v tématu Řízení přístupu ke službě IoT Hub pomocí Microsoft Entra ID.
Přehled ověřování Node.js SDK najdete v těchto tématech:
Konfigurace aplikace Microsoft Entra
Musíte nastavit aplikaci Microsoft Entra, která je nakonfigurovaná pro vaše upřednostňované přihlašovací údaje ověřování. Aplikace obsahuje parametry, jako je tajný klíč klienta, který používá back-endová aplikace k ověření. Dostupné konfigurace ověřování aplikací:
- Tajný klíč klienta
- Certifikát
- Přihlašovací údaje federované identity
Aplikace Microsoft Entra mohou v závislosti na provedených operacích vyžadovat určitá oprávnění role. K povolení přístupu ke čtení a zápisu k zařízení a dvojčatům modulů služby IoT Hub je například potřeba přispěvatel dvojčete služby IoT Hub. Další informace najdete v tématu Správa přístupu ke službě IoT Hub pomocí přiřazení role Azure RBAC.
Další informace o nastavení aplikace Microsoft Entra najdete v tématu Rychlý start: Registrace aplikace na platformě Microsoft Identity Platform.
Ověřování pomocí DefaultAzureCredential
Nejjednodušší způsob, jak použít Microsoft Entra k ověření back-endové aplikace, je použít DefaultAzureCredential, ale doporučuje se použít jinou metodu v produkčním prostředí, včetně konkrétní TokenCredential
nebo pared-down ChainedTokenCredential
. Pro zjednodušení popisuje tato část ověřování pomocí DefaultAzureCredential
a tajný klíč klienta.
Další informace o výhodách a nevýhodách použití DefaultAzureCredential
najdete v řetězcích přihlašovacích údajů v klientské knihovně Azure Identity pro JavaScript.
DefaultAzureCredential podporuje různé mechanismy ověřování a určuje odpovídající typ přihlašovacích údajů na základě prostředí, ve které se provádí. Pokusí se použít více typů přihlašovacích údajů v pořadí, dokud nenajde funkční přihlašovací údaje.
Microsoft Entra vyžaduje tento balíček:
npm install --save @azure/identity
V tomto příkladu se do proměnných prostředí přidal tajný klíč klienta registrace aplikace Microsoft Entra, ID klienta a ID tenanta. Tyto proměnné prostředí se používají DefaultAzureCredential
k ověření aplikace. Výsledkem úspěšného ověřování Microsoft Entra je přihlašovací údaje tokenu zabezpečení předávané metodě připojení ioT Hubu.
import { DefaultAzureCredential } from "@azure/identity";
// Azure SDK clients accept the credential as a parameter
const credential = new DefaultAzureCredential();
Výsledný token přihlašovacích údajů se pak dá předat zTokenCredential pro připojení ke službě IoT Hub pro libovolného klienta sady SDK, který přijímá přihlašovací údaje Microsoft Entra:
fromTokenCredential
vyžaduje dva parametry:
- Adresa URL služby Azure – Adresa URL služby Azure by měla být ve formátu
{Your Entra domain URL}.azure-devices.net
bez předponyhttps://
. NapříkladMyAzureDomain.azure-devices.net
. - Token přihlašovacích údajů Azure
V tomto příkladu se přihlašovací údaje Azure získávají pomocí DefaultAzureCredential
. Adresa URL domény Azure a přihlašovací údaje se pak zadají k Registry.fromTokenCredential
vytvoření připojení ke službě IoT Hub.
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);
Ukázky kódu
Pracovní ukázky ověřování služby Microsoft Entra najdete v příkladech identit Azure.
Vytvoření příjemce zpětného volání oznámení nahrání souboru
Vytvoření příjemce zpětného volání oznámení pro nahrání souboru:
- Volání getFileNotificationReceiver Zadejte název metody zpětného volání pro nahrání souboru, která se volá při přijetí oznámení zpráv.
- Zpracování oznámení o nahrání souboru v metodě zpětného volání
Tento příklad nastaví příjemce zpětného receiveFileUploadNotification
volání oznámení. Příjemce interpretuje informace o stavu nahrání souboru a vytiskne stavovou zprávu do konzoly.
//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');
}
});
});
}
Ukázka oznámení nahrání souboru sady SDK
Sada SDK obsahuje ukázku nahrání souboru.