Dela via


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:

  1. Ansluta till IoT Hub
  2. Hämta en SAS-URI från IoT Hub
  3. Ladda upp filen till Azure Storage
  4. 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:

  1. Använd DeviceAuthenticationWithX509Certificate för att skapa ett objekt som innehåller enhetsinformation och certifikatinformation. DeviceAuthenticationWithX509Certificate skickas som den andra parametern till DeviceClient.Create (steg 2).

  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:

Kodexempel

Arbetsexempel för X.509-enhetscertifikatautentisering finns i:

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:

  1. Skapa ett blockBlobClient-objekt som skickar en URI för filuppladdning.

  2. 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 DefaultAzureCredentiali 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:

  1. Skapa en CancellationToken.
  2. Anropa GetFileNotificationReceiver för att skapa en meddelandemottagare.
  3. 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:

  1. Ansluta enheten till IoT Hub
  2. Hämta en SAS-URI från IoT Hub
  3. Ladda upp filen till Azure Storage
  4. 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:

  1. Skapa SSLContext-objektet med buildSSLContext.
  2. Lägg till informationen i SSLContext ett ClientOptions-objekt .
  3. 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:

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 DefaultAzureCredentiali 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:

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:

  1. Skapa ett getFileUploadNotificationReceiver-objekt .
  2. Använd open för att ansluta till IoT Hub.
  3. 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

Det finns två Java-filuppladdningsexempel.

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:

  1. Använd create_from_x509_certificate för att lägga till X.509-certifikatparametrarna
  2. 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:

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:

  1. Anropa create_from_connection_string för att lägga till enhetens primära anslutningssträng.
  2. 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:

  1. Använd from_blob_url för att skapa ett BlobClient-objekt från en blob-URL.
  2. 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:

  1. Ansluta enheten till IoT Hub
  2. Hämta en SAS-token (Blob Shared Access Signature) från IoT Hub
  3. Ladda upp filen till Azure Storage
  4. 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:

  1. Anropa fromConnectionString för att lägga till enheten eller identitetsmodulen anslutningssträng och transporttypen till Client objektet. Lägg till x509=true i anslutningssträng för att ange att ett certifikat läggs till i DeviceClientOptions. 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

  2. Konfigurera en JSON-variabel med certifikatinformation och skicka den till DeviceClientOptions.

  3. Anropa setOptions för att lägga till ett X.509-certifikat och en nyckel (och eventuellt lösenfras) till klienttransporten.

  4. 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 setOptionsoch 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änder Httpsöker instansen Client 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:

  1. Skapa en dataströmspipeline
  2. Skapa blob-URL:en
  3. Skapa en BlockBlobClient för filuppladdning till Blob Storage
  4. Anropa uploadFile för att ladda upp filen till Blob Storage
  5. 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 CreateFromConnectionStringanger 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 DefaultAzureCredentiali 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 prefix https:// . 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:

  1. Anropa getFileNotificationReceiver. Ange namnet på en metod för återanrop av filuppladdning som anropas när meddelanden tas emot.
  2. 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 .