Ladda upp filer från en enhet till molnet med Azure IoT Hub
Den här artikeln visar hur du:
- Använd filuppladdningsfunktionerna i IoT Hub för att ladda upp en fil till Azure Blob Storage med hjälp av en Azure IoT-enhet och tjänst-SDK:er.
- Meddela IoT Hub att filen har laddats upp och skapa en serverdelstjänst för att ta emot meddelanden om filuppladdning från IoT Hub med hjälp av Azure IoT-tjänstens SDK:er.
I vissa scenarier kan du inte enkelt mappa de data som dina enheter skickar till de relativt små meddelanden från enhet till moln som IoT Hub accepterar. Med filuppladdningsfunktionerna i IoT Hub kan du flytta stora eller komplexa data till molnet. Till exempel:
- Videoklipp
- Stora filer som innehåller bilder
- Vibrationsdata samplas med hög frekvens
- Någon form av förbearbetade data
Dessa filer bearbetas vanligtvis i molnet med hjälp av verktyg som Azure Data Factory eller Hadoop-stacken. När du behöver ladda upp filer från en enhet kan du fortfarande använda IoT Hubs säkerhet och tillförlitlighet. Den här artikeln visar hur.
Den här artikeln är avsedd att komplettera runnable SDK-exempel som refereras inifrån den här artikeln.
Mer information finns i:
Viktigt!
Filuppladdningsfunktioner på enheter som använder X.509-certifikatutfärdarautentisering (CA) är i offentlig förhandsversion och förhandsgranskningsläget måste vara aktiverat. Det är allmänt tillgängligt på enheter som använder X.509 tumavtrycksautentisering eller X.509-certifikatattestering med Azure Device Provisioning Service. Mer information om X.509-autentisering med IoT Hub finns i X.509-certifikat som stöds.
Förutsättningar
En IoT-hubb. Vissa SDK-anrop kräver den primära IoT Hub-anslutningssträng, så anteckna anslutningssträng.
En registrerad enhet. Vissa SDK-anrop kräver enhetens primära anslutningssträng, så anteckna anslutningssträng.
IoT Hub Service Connect-behörighet – För att ta emot meddelanden om filuppladdning behöver serverdelstjänsten behörigheten Service Connect . Som standard skapas varje IoT Hub med en princip för delad åtkomst med namnet service som ger den här behörigheten. Mer information finns i Ansluta till en IoT-hubb.
Konfigurera filuppladdning i din IoT-hubb genom att länka ett Azure Storage-konto och en Azure Blob Storage-container. Du kan konfigurera dessa med hjälp av Azure Portal, Azure CLI eller Azure PowerShell.
Översikt
Den här instruktioner innehåller två avsnitt:
- Ladda upp en fil från ett enhetsprogram
- Ta emot meddelande om filuppladdning i ett serverdelsprogram
Ladda upp en fil från ett enhetsprogram
I det här avsnittet beskrivs hur du laddar upp en fil från en enhet till en IoT-hubb med klassen DeviceClient i Azure IoT SDK för .NET.
Följ den här proceduren för att ladda upp en fil från en enhet till IoT Hub:
- Ansluta till IoT Hub
- Hämta en SAS-URI från IoT Hub
- Ladda upp filen till Azure Storage
- Meddela IoT Hub om filuppladdningsstatusen
Ansluta en enhet till IoT Hub
En enhetsapp kan autentisera med IoT Hub med hjälp av följande metoder:
- X.509-certifikat
- Nyckel för delad åtkomst
Autentisera med ett X.509-certifikat
Så här ansluter du en enhet till IoT Hub med ett X.509-certifikat:
Använd DeviceAuthenticationWithX509Certificate för att skapa ett objekt som innehåller enhetsinformation och certifikatinformation.
DeviceAuthenticationWithX509Certificate
skickas som den andra parametern tillDeviceClient.Create
(steg 2).Använd DeviceClient.Create för att ansluta enheten till IoT Hub med hjälp av ett X.509-certifikat.
I det här exemplet fylls enhetsinformation och certifikatinformation i objektet auth
DeviceAuthenticationWithX509Certificate
som skickas till DeviceClient.Create
.
I det här exemplet visas parametervärden för certifikatindata som lokala variabler för tydlighetens skull. Lagra känsliga indataparametrar i miljövariabler eller en annan säkrare lagringsplats i ett produktionssystem. Använd till exempel Environment.GetEnvironmentVariable("HOSTNAME")
för att läsa miljövariabeln för värdnamn.
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);
Mer information om certifikatautentisering finns i:
- Autentisera identiteter med X.509-certifikat
- Självstudie: Skapa och ladda upp certifikat för testning
Kodexempel
Arbetsexempel för X.509-enhetscertifikatautentisering finns i:
- Ansluta med X.509-certifikat
- DeviceClientX509AuthenticationE2ETests
- Guidat projekt – Etablera IoT-enheter på ett säkert sätt och i stor skala med IoT Hub Device Provisioning Service
Autentisera med hjälp av en nyckel för delad åtkomst
Anropa CreateFromConnectionString för att ansluta till enheten. Skicka enhetens primära anslutningssträng.
AMQP
är standardprotokollet för transport.
static string connectionString = "{device primary connection string}";
deviceClient = DeviceClient.CreateFromConnectionString(connectionString);
Hämta en SAS-URI från IoT Hub
Anropa GetFileUploadSasUriAsync för att hämta information om filuppladdning. SAS-URI:n används i nästa steg för att ladda upp en fil från en enhet till 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();
Ladda upp en fil till Azure Storage
Så här laddar du upp en fil till Azure Storage:
Skapa ett blockBlobClient-objekt som skickar en URI för filuppladdning.
Använd metoden UploadAsync för att ladda upp en fil till Blob Storage och skicka SAS-URI:n. Du kan också lägga till alternativ för blobuppladdning och tokenparametrar för annullering.
Azure Blob-klienten använder alltid HTTPS som protokoll för att ladda upp filen till Azure Storage.
I det här exemplet BlockBlobClient
skickas SAS-URI:n för att skapa en Azure Storage-blockblobklient och laddar upp filen:
var blockBlobClient = new BlockBlobClient(uploadUri);
await blockBlobClient.UploadAsync(fileStreamSource, null, null);
Meddela IoT Hub om filuppladdningsstatusen
Använd CompleteFileUploadAsync för att meddela IoT Hub att enhetsklienten har slutfört uppladdningen och skickar ett FileUploadCompletionNotification-objekt . Flaggan IsSuccess
anger om uppladdningen lyckades eller inte. När du har fått ett meddelande släpper IoT Hub resurser som är associerade med uppladdningen (SAS-URI:n).
Om meddelanden om filuppladdning är aktiverade skickar IoT Hub ett meddelande om filuppladdning till serverdelstjänster som har konfigurerats för meddelande om filuppladdning.
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);
Exempel på SDK-filuppladdning
SDK:et innehåller det här filuppladdningsexemplet.
Få ett meddelande om filuppladdning i ett serverdelsprogram
Du kan skapa en serverdelstjänst för att ta emot meddelanden om filuppladdning från IoT Hub.
Klassen ServiceClient innehåller metoder som tjänster kan använda för att ta emot meddelanden om filuppladdning.
Lägg till tjänstens NuGet-paket
Serverdelstjänstprogram kräver NuGet-paketet Microsoft.Azure.Devices .
Ansluta till IoT Hub
Du kan ansluta en serverdelstjänst till IoT Hub med hjälp av följande metoder:
- Princip för delad åtkomst
- Microsoft Entra
Viktigt!
Den här artikeln innehåller steg för att ansluta till en tjänst med hjälp av en signatur för delad åtkomst. Den här autentiseringsmetoden är praktisk för testning och utvärdering, men autentisering till en tjänst med Microsoft Entra-ID eller hanterade identiteter är en säkrare metod. Mer information finns i Metodtips för > säkerhet Molnsäkerhet.
Ansluta med en princip för delad åtkomst
Anslut ett serverdelsprogram till en enhet med CreateFromConnectionString. Programmet behöver behörighet att ansluta till tjänsten. Ange den här principen för delad åtkomst anslutningssträng som en parameter till fromConnectionString
. Mer information om principer för delad åtkomst finns i Kontrollera åtkomst till IoT Hub med signaturer för delad åtkomst.
Till exempel:
using Microsoft.Azure.Devices;
static ServiceClient serviceClient;
static string connectionString = "{Shared access policy connection string}";
serviceClient = ServiceClient.CreateFromConnectionString(connectionString);
Ansluta med Microsoft Entra
En serverdelsapp som använder Microsoft Entra måste autentisera och hämta en autentiseringsuppgift för säkerhetstoken innan den ansluter till IoT Hub. Den här token skickas till en IoT Hub-anslutningsmetod. Allmän information om hur du konfigurerar och använder Microsoft Entra för IoT Hub finns i Kontrollera åtkomst till IoT Hub med hjälp av Microsoft Entra-ID.
Konfigurera Microsoft Entra-app
Du måste konfigurera en Microsoft Entra-app som är konfigurerad för dina önskade autentiseringsautentiseringsuppgifter. Appen innehåller parametrar som klienthemlighet som används av serverdelsprogrammet för att autentisera. De tillgängliga appautentiseringskonfigurationerna är:
- Klienthemlighet
- Certifikat
- Federerade identitetsautentiseringsuppgifter
Microsoft Entra-appar kan kräva specifika rollbehörigheter beroende på åtgärder som utförs. Till exempel krävs IoT Hub Twin-deltagare för att aktivera läs- och skrivåtkomst till en IoT Hub-enhet och modultvillingar. Mer information finns i Hantera åtkomst till IoT Hub med hjälp av Rolltilldelning i Azure RBAC.
Mer information om hur du konfigurerar en Microsoft Entra-app finns i Snabbstart: Registrera ett program med Microsofts identitetsplattform.
Autentisera med defaultAzureCredential
Det enklaste sättet att använda Microsoft Entra för att autentisera ett serverdelsprogram är att använda DefaultAzureCredential, men vi rekommenderar att du använder en annan metod i en produktionsmiljö, inklusive en specifik TokenCredential
eller avskalad ChainedTokenCredential
. För enkelhetens skull beskriver det här avsnittet autentisering med hjälp av DefaultAzureCredential
och klienthemlighet. Mer information om fördelar och nackdelar med att använda finns DefaultAzureCredential
i Användningsvägledning för DefaultAzureCredential.
DefaultAzureCredential
stöder olika autentiseringsmekanismer och avgör lämplig typ av autentiseringsuppgifter baserat på den miljö som körs i. Den försöker använda flera typer av autentiseringsuppgifter i en ordning tills den hittar en fungerande autentiseringsuppgift.
Microsoft Entra kräver dessa NuGet-paket och motsvarande using
instruktioner:
- Azure.Core
- Azure.Identity
using Azure.Core;
using Azure.Identity;
I det här exemplet läggs Microsoft Entra-appregistreringsklienthemlighet, klient-ID och klient-ID till i miljövariabler. Dessa miljövariabler används av DefaultAzureCredential
för att autentisera programmet. Resultatet av en lyckad Microsoft Entra-autentisering är en säkerhetstokenautentiseringsuppgift som skickas till en IoT Hub-anslutningsmetod.
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();
Den resulterande TokenCredential kan sedan skickas till en connect to IoT Hub-metod för alla SDK-klienter som accepterar Microsoft Entra-autentiseringsuppgifter:
I det här exemplet TokenCredential
skickas till för att ServiceClient.Create
skapa ett ServiceClient-anslutningsobjekt .
string hostname = "xxxxxxxxxx.azure-devices.net";
using var serviceClient = ServiceClient.Create(hostname, tokenCredential, TransportType.Amqp);
I det här exemplet TokenCredential
skickas till för att RegistryManager.Create
skapa ett RegistryManager-objekt .
string hostname = "xxxxxxxxxx.azure-devices.net";
registryManager = RegistryManager.Create(hostname, tokenCredential);
Kodexempel
Ett fungerande exempel på Microsoft Entra-tjänstautentisering finns i Exempel på rollbaserad autentisering.
Ta emot meddelande om filuppladdning
Så här tar du emot meddelande om filuppladdning:
- Skapa en CancellationToken.
- Anropa GetFileNotificationReceiver för att skapa en meddelandemottagare.
- Använd en loop med ReceiveAsync för att vänta på filuppladdningsmeddelandet.
Till exempel:
// 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);
}
Exempel på SDK-filuppladdningsmottagare
SDK:et innehåller det här exemplet på filuppladdningsmottagare.
Översikt
Den här instruktioner innehåller två avsnitt:
- Ladda upp en fil från ett enhetsprogram
- Ta emot meddelande om filuppladdning i ett serverdelsprogram
Ladda upp en fil från ett enhetsprogram
I det här avsnittet beskrivs hur du laddar upp en fil från en enhet till en IoT-hubb med klassen DeviceClient från Azure IoT SDK för Java.
Följ den här proceduren för att ladda upp en fil från en enhet till IoT Hub:
- Ansluta enheten till IoT Hub
- Hämta en SAS-URI från IoT Hub
- Ladda upp filen till Azure Storage
- Skicka statusmeddelande för filuppladdning till IoT Hub
Ansluta en enhet till IoT Hub
En enhetsapp kan autentisera med IoT Hub med hjälp av följande metoder:
- X.509-certifikat
- Nyckel för delad åtkomst
Autentisera med ett X.509-certifikat
Så här ansluter du en enhet till IoT Hub med ett X.509-certifikat:
- Skapa SSLContext-objektet med buildSSLContext.
- Lägg till informationen i
SSLContext
ett ClientOptions-objekt . - Anropa DeviceClient med hjälp av
ClientOptions
informationen för att skapa anslutningen mellan enheter och IoT Hub.
I det här exemplet visas parametervärden för certifikatindata som lokala variabler för tydlighetens skull. Lagra känsliga indataparametrar i miljövariabler eller en annan säkrare lagringsplats i ett produktionssystem. Använd till exempel Environment.GetEnvironmentVariable("PUBLICKEY")
för att läsa en miljövariabel för certifikatsträngar med offentlig nyckel.
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);
Mer information om certifikatautentisering finns i:
- Autentisera identiteter med X.509-certifikat
- Självstudie: Skapa och ladda upp certifikat för testning
Kodexempel
Arbetsexempel för X.509-enhetscertifikatautentisering finns i:
Autentisera med hjälp av en nyckel för delad åtkomst
Filuppladdningsåtgärder använder alltid HTTPS, men DeviceClient kan definiera IotHubClientProtocol för andra tjänster som telemetri, enhetsmetod och enhetstvilling.
IotHubClientProtocol protocol = IotHubClientProtocol.MQTT;
Instansiera DeviceClient
för att ansluta till enheten med hjälp av enhetens primära anslutningssträng.
String connString = "{IoT hub connection string}";
DeviceClient client = new DeviceClient(connString, protocol);
Hämta en SAS-URI från IoT Hub
Anropa getFileUploadSasUri för att hämta ett FileUploadSasUriResponse-objekt .
FileUploadSasUriResponse
innehåller dessa metoder och returnerar värden. Returvärdena kan skickas till filuppladdningsmetoder.
Metod | Returvärde |
---|---|
getCorrelationId() |
Korrelations-ID |
getContainerName() |
Containerns namn |
getBlobName() |
Blobnamn |
getBlobUri() |
Blob-URI |
Till exempel:
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());
Ladda upp filen till Azure Storage
Skicka blob-URI-slutpunkten till BlobClientBuilder.buildclient för att skapa BlobClient-objektet .
BlobClient blobClient =
new BlobClientBuilder()
.endpoint(sasUriResponse.getBlobUri().toString())
.buildClient();
Anropa uploadFromFile för att ladda upp filen till Blob Storage.
String fullFileName = "Path of the file to upload";
blobClient.uploadFromFile(fullFileName);
Skicka statusmeddelande för filuppladdning till IoT Hub
Skicka ett meddelande om uppladdningsstatus till IoT Hub efter ett filuppladdningsförsök.
Skapa ett FileUploadCompletionNotification-objekt . Skicka statusen correlationId
för lyckad filuppladdning och isSuccess
filuppladdning. Skicka ett isSuccess
true
värde när filuppladdningen lyckades, false
när inte.
FileUploadCompletionNotification
måste anropas även när filuppladdningen misslyckas. IoT Hub har ett fast antal SAS-URI:er som tillåts vara aktiva vid en viss tidpunkt. När du är klar med filuppladdningen bör du frigöra DIN SAS-URI så att andra SAS-URI:er kan genereras. Om en SAS-URI inte frigörs via det här API:et frigörs den så småningom baserat på hur länge SAS-URI:er har konfigurerats för att leva på en IoT-hubb.
Det här exemplet skickar en lyckad status.
FileUploadCompletionNotification completionNotification = new FileUploadCompletionNotification(sasUriResponse.getCorrelationId(), true);
client.completeFileUpload(completionNotification);
Stäng klienten
client
Frigör resurserna.
client.closeNow();
Skapa ett serverdelsprogram
I det här avsnittet beskrivs hur du tar emot ett meddelande om filuppladdning i ett serverdelsprogram.
Klassen ServiceClient innehåller metoder som tjänster kan använda för att ta emot meddelanden om filuppladdning.
Lägga till importinstruktioner
Lägg till dessa importinstruktioner för att använda Azure IoT Java SDK och undantagshanteraren.
import com.microsoft.azure.sdk.iot.service.*;
import java.io.IOException;
import java.net.URISyntaxException;
Ansluta till IoT Hub
Du kan ansluta en serverdelstjänst till IoT Hub med hjälp av följande metoder:
- Princip för delad åtkomst
- Microsoft Entra
Viktigt!
Den här artikeln innehåller steg för att ansluta till en tjänst med hjälp av en signatur för delad åtkomst. Den här autentiseringsmetoden är praktisk för testning och utvärdering, men autentisering till en tjänst med Microsoft Entra-ID eller hanterade identiteter är en säkrare metod. Mer information finns i Metodtips för > säkerhet Molnsäkerhet.
Ansluta med en princip för delad åtkomst
Definiera anslutningsprotokollet
Använd IotHubServiceClientProtocol för att definiera det protokoll på programnivå som används av tjänstklienten för att kommunicera med en IoT Hub.
IotHubServiceClientProtocol
accepterar AMQPS
endast uppräkningen eller AMQPS_WS
.
private static final IotHubServiceClientProtocol protocol =
IotHubServiceClientProtocol.AMQPS;
Skapa ServiceClient-objektet
Skapa ServiceClient-objektet och ange Iot Hub-anslutningssträng och protokollet.
Om du vill ladda upp en fil på en enhet till IoT Hub behöver din tjänst behörighet för tjänstanslutning . Som standard skapas varje IoT Hub med en princip för delad åtkomst med namnet service som ger den här behörigheten.
Som en parameter till ServiceClient
konstruktorn anger du principen för delad åtkomst för tjänsten . Mer information om principer för delad åtkomst finns i Kontrollera åtkomst till IoT Hub med signaturer för delad åtkomst.
String iotHubConnectionString = "HostName=xxxxx.azure-devices.net;SharedAccessKeyName=service;SharedAccessKey=xxxxxxxxxxxxxxxxxxxxxxxx";
private static final ServiceClient serviceClient (iotHubConnectionString, protocol);
Öppna anslutningen mellan programmet och IoT Hub
Öppna AMQP-avsändaranslutningen. Den här metoden skapar anslutningen mellan programmet och IoT Hub.
serviceClient.open();
Ansluta med Microsoft Entra
En serverdelsapp som använder Microsoft Entra måste autentisera och hämta en autentiseringsuppgift för säkerhetstoken innan den ansluter till IoT Hub. Den här token skickas till en IoT Hub-anslutningsmetod. Allmän information om hur du konfigurerar och använder Microsoft Entra för IoT Hub finns i Kontrollera åtkomst till IoT Hub med hjälp av Microsoft Entra-ID.
En översikt över Java SDK-autentisering finns i Azure-autentisering med Java och Azure Identity.
För enkelhetens skull fokuserar det här avsnittet på att beskriva autentisering med hjälp av klienthemlighet.
Konfigurera Microsoft Entra-app
Du måste konfigurera en Microsoft Entra-app som är konfigurerad för dina önskade autentiseringsautentiseringsuppgifter. Appen innehåller parametrar som klienthemlighet som används av serverdelsprogrammet för att autentisera. De tillgängliga appautentiseringskonfigurationerna är:
- Klienthemlighet
- Certifikat
- Federerade identitetsautentiseringsuppgifter
Microsoft Entra-appar kan kräva specifika rollbehörigheter beroende på åtgärder som utförs. Till exempel krävs IoT Hub Twin-deltagare för att aktivera läs- och skrivåtkomst till en IoT Hub-enhet och modultvillingar. Mer information finns i Hantera åtkomst till IoT Hub med hjälp av Rolltilldelning i Azure RBAC.
Mer information om hur du konfigurerar en Microsoft Entra-app finns i Snabbstart: Registrera ett program med Microsofts identitetsplattform.
Autentisera med defaultAzureCredential
Det enklaste sättet att använda Microsoft Entra för att autentisera ett serverdelsprogram är att använda DefaultAzureCredential, men vi rekommenderar att du använder en annan metod i en produktionsmiljö, inklusive en specifik TokenCredential
eller avskalad ChainedTokenCredential
.
Mer information om fördelar och nackdelar med att använda finns DefaultAzureCredential
i Kedjor för autentiseringsuppgifter i Azure Identity-klientbiblioteket för Java.
DefaultAzureCredential stöder olika autentiseringsmekanismer och bestämmer lämplig typ av autentiseringsuppgifter baserat på den miljö som körs i. Den försöker använda flera typer av autentiseringsuppgifter i en ordning tills den hittar en fungerande autentiseringsuppgift.
Du kan autentisera autentiseringsuppgifter för Microsoft Entra-appen med defaultAzureCredentialBuilder. Spara anslutningsparametrar som klienthemlighetsklient-ID, klient-ID och klienthemlighetsvärden som miljövariabler. När du har skapat den TokenCredential
skickar du den till ServiceClient eller någon annan byggare som parametern "autentiseringsuppgifter".
I det här exemplet DefaultAzureCredentialBuilder
försöker autentisera en anslutning från listan som beskrivs i DefaultAzureCredential. Resultatet av en lyckad Microsoft Entra-autentisering är en säkerhetstokenautentiseringsuppgift som skickas till en konstruktor, till exempel ServiceClient.
TokenCredential defaultAzureCredential = new DefaultAzureCredentialBuilder().build();
Autentisera med ClientSecretCredentialBuilder
Du kan använda ClientSecretCredentialBuilder för att skapa en autentiseringsuppgift med hjälp av klienthemlig information. Om det lyckas returnerar den här metoden en TokenCredential som kan skickas till ServiceClient eller annan byggare som parametern "autentiseringsuppgifter".
I det här exemplet har Microsoft Entra-appregistreringsklienthemlighet, klient-ID och klient-ID-värden lagts till i miljövariabler. Dessa miljövariabler används av ClientSecretCredentialBuilder
för att skapa autentiseringsuppgifterna.
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();
Andra autentiseringsklasser
Java SDK innehåller även dessa klasser som autentiserar en serverdelsapp med Microsoft Entra:
- AuthorizationCodeCredential
- AzureCliCredential
- AzureDeveloperCliCredential
- AzurePipelinesCredential
- ChainedTokenCredential
- ClientAssertionCredential
- ClientCertificateCredential
- DeviceCodeCredential
- EnvironmentCredential
- InteractiveBrowserCredential
- ManagedIdentityCredential
- OnBehalfOfCredential
Kodexempel
Arbetsexempel för Microsoft Entra-tjänstautentisering finns i Exempel på rollbaserad autentisering.
Sök efter filuppladdningsstatus
Så här söker du efter filuppladdningsstatus:
- Skapa ett getFileUploadNotificationReceiver-objekt .
- Använd open för att ansluta till IoT Hub.
- Anropa mottagningen för att söka efter filuppladdningsstatusen. Den här metoden returnerar ett fileUploadNotification-objekt . Om ett uppladdningsmeddelande tas emot kan du visa fält för uppladdningsstatus med hjälp av fileUploadNotification-metoder .
Till exempel:
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();
Exempel på SDK-filuppladdning
Installera paket
Biblioteket azure-iot-device måste installeras innan någon relaterad kod anropas.
pip install azure-iot-device
Azure.storage.blob-paketet används för att utföra filuppladdningen.
pip install azure.storage.blob
Ladda upp fil från ett enhetsprogram
I det här avsnittet beskrivs hur du laddar upp en fil från en enhet till en IoT-hubb med klassen IoTHubDeviceClient från Azure IoT SDK för Python.
Importera bibliotek
import os
from azure.iot.device import IoTHubDeviceClient
from azure.core.exceptions import AzureError
from azure.storage.blob import BlobClient
Ansluta en enhet till IoT Hub
En enhetsapp kan autentisera med IoT Hub med hjälp av följande metoder:
- X.509-certifikat
- Nyckel för delad åtkomst
Autentisera med ett X.509-certifikat
Så här ansluter du en enhet till IoT Hub med ett X.509-certifikat:
- Använd create_from_x509_certificate för att lägga till X.509-certifikatparametrarna
- Anropa anslut för att ansluta enhetsklienten
I det här exemplet visas parametervärden för certifikatindata som lokala variabler för tydlighetens skull. Lagra känsliga indataparametrar i miljövariabler eller en annan säkrare lagringsplats i ett produktionssystem. Använd till exempel os.getenv("HOSTNAME")
för att läsa miljövariabeln för värdnamn.
# 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()
Mer information om certifikatautentisering finns i:
- Autentisera identiteter med X.509-certifikat
- Självstudie: Skapa och ladda upp certifikat för testning
Kodexempel
Exempel på enhetsautentisering med X.509-certifikat finns i exemplen vars filnamn slutar med x509 i Async Hub-scenarier.
Autentisera med hjälp av en nyckel för delad åtkomst
Så här ansluter du en enhet till IoT Hub:
- Anropa create_from_connection_string för att lägga till enhetens primära anslutningssträng.
- Anropa anslut för att ansluta enhetsklienten.
Till exempel:
# 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()
Hämta bloblagringsinformation
Anropa get_storage_info_for_blob för att få information från en IoT-hubb om ett länkat Azure Storage-konto. Den här informationen innehåller värdnamnet, containernamnet, blobnamnet och en SAS-token. Metoden get_storage_info_for_blob
returnerar också en correlation_id
, som används i notify_blob_upload_status
-metoden. correlation_id
är IoT Hub:s sätt att markera vilken blob du arbetar med.
# 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)
Ladda upp en fil till Blob Storage
Så här laddar du upp en fil till Blob Storage:
- Använd from_blob_url för att skapa ett BlobClient-objekt från en blob-URL.
- Anropa upload_blob för att ladda upp filen till Blob Storage.
I det här exemplet parsas blob_info
strukturen för att skapa en URL som används för att initiera en BlobClient. Sedan anropas upload_blob
för att ladda upp filen till 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)
Meddela IoT-hubben om uppladdningsstatus
Använd notify_blob_upload_status för att meddela IoT Hub om status för bloblagringsåtgärden. Skicka den erhållna correlation_id
get_storage_info_for_blob
metoden. correlation_id
Används av IoT Hub för att meddela alla tjänster som kanske lyssnar efter ett meddelande om status för filuppladdningsaktiviteten.
I det här exemplet meddelas IoT-hubben för en lyckad filuppladdning:
device_client.notify_blob_upload_status(storage_info["correlationId"], True, 200, "OK: {}".format(PATH_TO_FILE)
Stäng av enhetsklienten
Stäng av klienten. När den här metoden anropas leder alla försök till ytterligare klientanrop till att en ClientError aktiveras.
device_client.shutdown()
Exempel på SDK-filuppladdning
SDK:et innehåller två exempel på filuppladdning:
Översikt
Den här artikeln beskriver hur du använder Azure IoT SDK för Node.js för att skapa en enhetsapp för att ladda upp en fil och serverdelstjänstprogrammet får filuppladdningsmeddelande.
Skapa ett enhetsprogram
I det här avsnittet beskrivs hur du laddar upp en fil från en enhet till en IoT-hubb med azure-iot-device-paketet i Azure IoT SDK för Node.js.
Installera SDK-paket
Kör det här kommandot för att installera azure-iot-device SDK, azure-iot-device-mqtt och paketen @azure/storage-blob på utvecklingsdatorn:
npm install azure-iot-device azure-iot-device-mqtt @azure/storage-blob --save
Paketet azure-iot-device innehåller objekt som samverkar med IoT-enheter.
Följ den här proceduren för att ladda upp en fil från en enhet till IoT Hub:
- Ansluta enheten till IoT Hub
- Hämta en SAS-token (Blob Shared Access Signature) från IoT Hub
- Ladda upp filen till Azure Storage
- Skicka statusmeddelande för filuppladdning till IoT Hub
Skapa moduler
Skapa klient-, protokoll-, fel- och sökvägsmoduler med hjälp av de installerade paketen.
const Protocol = require('azure-iot-device-mqtt').Mqtt;
const errors = require('azure-iot-common').errors;
const path = require('path');
Ansluta en enhet till IoT Hub
En enhetsapp kan autentisera med IoT Hub med hjälp av följande metoder:
- X.509-certifikat
- Nyckel för delad åtkomst
Autentisera med ett X.509-certifikat
X.509-certifikatet är kopplat till anslutningstransporten från enhet till IoT Hub.
Så här konfigurerar du en enhet-till-IoT Hub-anslutning med hjälp av ett X.509-certifikat:
Anropa fromConnectionString för att lägga till enheten eller identitetsmodulen anslutningssträng och transporttypen till
Client
objektet. Lägg tillx509=true
i anslutningssträng för att ange att ett certifikat läggs till iDeviceClientOptions
. Till exempel:En enhet anslutningssträng:
HostName=xxxxx.azure-devices.net;DeviceId=Device-1;SharedAccessKey=xxxxxxxxxxxxx;x509=true
En identitetsmodul anslutningssträng:
HostName=xxxxx.azure-devices.net;DeviceId=Device-1;ModuleId=Module-1;SharedAccessKey=xxxxxxxxxxxxx;x509=true
Konfigurera en JSON-variabel med certifikatinformation och skicka den till DeviceClientOptions.
Anropa setOptions för att lägga till ett X.509-certifikat och en nyckel (och eventuellt lösenfras) till klienttransporten.
Anropa öppna för att öppna anslutningen från enheten till IoT Hub.
Det här exemplet visar information om certifikatkonfiguration i en JSON-variabel. Certifieringskonfigurationen clientOptions
skickas till setOptions
och anslutningen öppnas med .open
const Client = require('azure-iot-device').Client;
const Protocol = require('azure-iot-device-mqtt').Mqtt;
// Connection string illustrated for demonstration only. Never hard-code the connection string in production. Instead use an environmental variable or other secure storage.
const connectionString = `HostName=xxxxx.azure-devices.net;DeviceId=Device-1;SharedAccessKey=xxxxxxxxxxxxx;x509=true`
const client = Client.fromConnectionString(connectionString, Protocol);
var clientOptions = {
cert: myX509Certificate,
key: myX509Key,
passphrase: passphrase,
http: {
receivePolicy: {
interval: 10
}
}
}
client.setOptions(clientOptions);
client.open(connectCallback);
Mer information om certifikatautentisering finns i:
Kodexempel
Ett fungerande exempel på X.509-enhetscertifikatautentisering finns i Enkel exempelenhet X.509.
Autentisera med hjälp av en nyckel för delad åtkomst
Välj ett transportprotokoll
Objektet Client
stöder följande protokoll:
Amqp
Http
– När du använderHttp
söker instansenClient
efter meddelanden från IoT Hub sällan (minst var 25:e minut).Mqtt
MqttWs
AmqpWs
Installera nödvändiga transportprotokoll på utvecklingsdatorn.
Det här kommandot installerar till exempel protokollet Amqp
:
npm install azure-iot-device-amqp --save
Mer information om skillnaderna mellan MQTT-, AMQP- och HTTPS-stöd finns i Vägledning för kommunikation från moln till enhet och Välj ett kommunikationsprotokoll.
Skapa ett klientobjekt
Skapa ett Client
objekt med det installerade paketet.
Till exempel:
const Client = require('azure-iot-device').Client;
Skapa ett protokollobjekt
Skapa ett Protocol
objekt med ett installerat transportpaket.
I det här exemplet tilldelas AMQP-protokollet:
const Protocol = require('azure-iot-device-amqp').Amqp;
Lägg till anslutningssträng- och transportprotokollet för enheten
Anropa fromConnectionString för att ange parametrar för enhetsanslutning:
- connStr – enheten anslutningssträng.
- transportCtor – transportprotokollet.
I det här exemplet används transportprotokollet Amqp
:
const deviceConnectionString = "{IoT hub device connection string}"
const Protocol = require('azure-iot-device-mqtt').Amqp;
let client = Client.fromConnectionString(deviceConnectionString, Protocol);
Öppna anslutningen till IoT Hub
Använd den öppna metoden för att öppna anslutningen mellan en IoT-enhet och IoT Hub.
Till exempel:
client.open(function(err) {
if (err) {
console.error('error connecting to hub: ' + err);
process.exit(1);
}
})
Hämta en SAS-token från IoT Hub
Använd getBlobSharedAccessSignature för att hämta sas-token för det länkade lagringskontot från IoT Hub.
Till exempel:
// 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');
}
Ladda upp filen till IoT Hub
Så här laddar du upp en fil från en enhet till IoT Hub:
- Skapa en dataströmspipeline
- Skapa blob-URL:en
- Skapa en BlockBlobClient för filuppladdning till Blob Storage
- Anropa uploadFile för att ladda upp filen till Blob Storage
- Anropa notifyBlobUploadStatus för att meddela IoT Hub att uppladdningen lyckades eller misslyckades
Till exempel:
// 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);
Ladda upp den lokala filen till bloblagringen
Du kan ladda upp en lokal fil till bloblagring från en dator
const deviceClient = Client.fromConnectionString(deviceConnectionString, Protocol);
uploadToBlob(localFilePath, deviceClient)
.catch((err) => {
console.log(err);
})
.finally(() => {
process.exit();
});
Exempel på SDK-filuppladdning
SDK:et innehåller en uppladdning till det avancerade blobexemplet.
Skapa ett serverdelsprogram
I det här avsnittet beskrivs hur du tar emot meddelanden om filuppladdning i ett serverdelsprogram.
Klassen ServiceClient innehåller metoder som tjänster kan använda för att ta emot meddelanden om filuppladdning.
Installera tjänst-SDK-paketet
Kör det här kommandot för att installera azure-iothub på utvecklingsdatorn:
npm install azure-iothub --save
Ansluta till IoT Hub
Du kan ansluta en serverdelstjänst till IoT Hub med hjälp av följande metoder:
- Princip för delad åtkomst
- Microsoft Entra
Viktigt!
Den här artikeln innehåller steg för att ansluta till en tjänst med hjälp av en signatur för delad åtkomst. Den här autentiseringsmetoden är praktisk för testning och utvärdering, men autentisering till en tjänst med Microsoft Entra-ID eller hanterade identiteter är en säkrare metod. Mer information finns i Metodtips för > säkerhet Molnsäkerhet.
Ansluta med en princip för delad åtkomst
Använd fromConnectionString för att ansluta till IoT Hub.
Om du vill ladda upp en fil från en enhet behöver tjänsten behörigheten för tjänstanslutning . Som standard skapas varje IoT Hub med en princip för delad åtkomst med namnet service som ger den här behörigheten.
Som en parameter till CreateFromConnectionString
anger du principen för delad åtkomst för tjänsten anslutningssträng. Mer information om principer för delad åtkomst finns i Kontrollera åtkomst till IoT Hub med signaturer för delad åtkomst.
var Client = require('azure-iothub').Client;
var connectionString = '{IoT hub shared access policy connection string}';
var client = Client.fromConnectionString(connectionString);
Ansluta med Microsoft Entra
En serverdelsapp som använder Microsoft Entra måste autentisera och hämta en autentiseringsuppgift för säkerhetstoken innan den ansluter till IoT Hub. Den här token skickas till en IoT Hub-anslutningsmetod. Allmän information om hur du konfigurerar och använder Microsoft Entra för IoT Hub finns i Kontrollera åtkomst till IoT Hub med hjälp av Microsoft Entra-ID.
En översikt över Node.js SDK-autentisering finns i:
Konfigurera Microsoft Entra-app
Du måste konfigurera en Microsoft Entra-app som är konfigurerad för dina önskade autentiseringsautentiseringsuppgifter. Appen innehåller parametrar som klienthemlighet som används av serverdelsprogrammet för att autentisera. De tillgängliga appautentiseringskonfigurationerna är:
- Klienthemlighet
- Certifikat
- Federerade identitetsautentiseringsuppgifter
Microsoft Entra-appar kan kräva specifika rollbehörigheter beroende på åtgärder som utförs. Till exempel krävs IoT Hub Twin-deltagare för att aktivera läs- och skrivåtkomst till en IoT Hub-enhet och modultvillingar. Mer information finns i Hantera åtkomst till IoT Hub med hjälp av Rolltilldelning i Azure RBAC.
Mer information om hur du konfigurerar en Microsoft Entra-app finns i Snabbstart: Registrera ett program med Microsofts identitetsplattform.
Autentisera med defaultAzureCredential
Det enklaste sättet att använda Microsoft Entra för att autentisera ett serverdelsprogram är att använda DefaultAzureCredential, men vi rekommenderar att du använder en annan metod i en produktionsmiljö, inklusive en specifik TokenCredential
eller avskalad ChainedTokenCredential
. För enkelhetens skull beskriver det här avsnittet autentisering med hjälp av DefaultAzureCredential
och klienthemlighet.
Mer information om fördelar och nackdelar med att använda finns DefaultAzureCredential
i Kedjor för autentiseringsuppgifter i Azure Identity-klientbiblioteket för JavaScript
DefaultAzureCredential stöder olika autentiseringsmekanismer och bestämmer lämplig typ av autentiseringsuppgifter baserat på den miljö som körs i. Den försöker använda flera typer av autentiseringsuppgifter i en ordning tills den hittar en fungerande autentiseringsuppgift.
Microsoft Entra kräver det här paketet:
npm install --save @azure/identity
I det här exemplet har Microsoft Entra-appregistreringsklienthemlighet, klient-ID och klient-ID lagts till i miljövariabler. Dessa miljövariabler används av DefaultAzureCredential
för att autentisera programmet. Resultatet av en lyckad Microsoft Entra-autentisering är en säkerhetstokenautentiseringsuppgift som skickas till en IoT Hub-anslutningsmetod.
import { DefaultAzureCredential } from "@azure/identity";
// Azure SDK clients accept the credential as a parameter
const credential = new DefaultAzureCredential();
Den resulterande token för autentiseringsuppgifter kan sedan skickas till frånTokenCredential för att ansluta till IoT Hub för alla SDK-klienter som accepterar Microsoft Entra-autentiseringsuppgifter:
fromTokenCredential
kräver två parametrar:
- Url:en för Azure-tjänsten – Azure-tjänst-URL:en ska vara i formatet
{Your Entra domain URL}.azure-devices.net
utan prefixhttps://
. Exempel:MyAzureDomain.azure-devices.net
- Azure-token för autentiseringsuppgifter
I det här exemplet hämtas Azure-autentiseringsuppgifterna med hjälp av DefaultAzureCredential
. Url:en och autentiseringsuppgifterna för Azure-domänen skickas sedan till för att Registry.fromTokenCredential
skapa anslutningen till 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);
Kodexempel
Arbetsexempel för Microsoft Entra-tjänstautentisering finns i Azure-identitetsexempel.
Skapa en mottagare för återanrop för filuppladdningsmeddelanden
Så här skapar du en mottagare för återanrop av filuppladdningsmeddelanden:
- Anropa getFileNotificationReceiver. Ange namnet på en metod för återanrop av filuppladdning som anropas när meddelanden tas emot.
- Bearbeta meddelanden om filuppladdning i motringningsmetoden.
I det här exemplet konfigureras en receiveFileUploadNotification
mottagare för återanrop av meddelanden. Mottagaren tolkar statusinformationen för filuppladdningen och skriver ut ett statusmeddelande till konsolen.
//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');
}
});
});
}
Meddelandeexempel för SDK-filuppladdning
SDK innehåller ett exempel på filuppladdning .