Konfigurera uppladdningar av IoT Hub-filer med Azure CLI

Den här artikeln visar hur du konfigurerar filuppladdningar på din IoT-hubb med hjälp av Azure CLI.

Om du vill använda filuppladdningsfunktionen i IoT Hub måste du först associera ett Azure Storage-konto och en blobcontainer med din IoT-hubb. IoT Hub genererar automatiskt SAS-URI:er med skrivbehörighet till den här blobcontainern så att enheter kan använda när de laddar upp filer. Förutom lagringskontot och blobcontainern kan du ange time-to-live för SAS-URI:n och vilken typ av autentisering som IoT Hub använder med Azure Storage. Du kan också konfigurera inställningar för valfria filuppladdningsmeddelanden som IoT Hub kan leverera till serverdelstjänster.

Förutsättningar

Kommentar

Den här artikeln använder den senaste versionen av Azure IoT-tillägget med namnet azure-iot. Den äldre versionen kallas azure-cli-iot-ext. Du bör bara ha en version installerad i taget. Du kan använda kommandot az extension list för att verifiera de tillägg som är installerade.

Använd az extension remove --name azure-cli-iot-ext för att ta bort den äldre versionen av tillägget.

Använd az extension add --name azure-iot för att lägga till den nya versionen av tillägget.

Om du vill se vilka tillägg du har installerat använder du az extension list.

Logga in och ange ditt Azure-konto

Logga in på ditt Azure-konto och välj din prenumeration. Om du använder Azure Cloud Shell bör du redan vara inloggad. Du kan dock fortfarande behöva välja din Azure-prenumeration om du har flera prenumerationer.

  1. I kommandotolken kör du inloggningskommandot:

    az login
    

    Följ instruktionerna för att autentisera med hjälp av koden och logga in på ditt Azure-konto via en webbläsare.

  2. Om du har flera Azure-prenumerationer får du åtkomst till alla Azure-konton som är associerade med dina autentiseringsuppgifter när du loggar in på Azure. Använd följande -kommando för att lista Azure-konton som du kan använda:

    az account list
    

    Använd följande kommando för att välja den prenumeration som du vill använda för att köra kommandona för att skapa din IoT-hubb. Du kan antingen använda prenumerationsnamnet eller ID:t från utdata från föregående kommando:

    az account set --subscription {your subscription name or id}
    

Hämta information om ditt lagringskonto

Följande steg förutsätter att du har skapat ditt lagringskonto med hjälp av Resource Manager-distributionsmodellen och inte den klassiska distributionsmodellen.

Om du vill konfigurera filuppladdningar från dina enheter behöver du anslutningssträng för ett Azure Storage-konto. Lagringskontot måste finnas i samma prenumeration som din IoT-hubb. Du behöver också namnet på en blobcontainer i lagringskontot. Använd följande kommando för att hämta dina lagringskontonycklar:

az storage account show-connection-string --name {your storage account name} \
  --resource-group {your storage account resource group}

Anslutningssträng liknar följande utdata:

{
  "connectionString": "DefaultEndpointsProtocol=https;EndpointSuffix=core.windows.net;AccountName={your storage account name};AccountKey={your storage account key}"
}

Anteckna connectionString-värdet. Du behöver det i följande steg.

Du kan antingen använda en befintlig blobcontainer för dina filuppladdningar eller skapa en ny:

  • Om du vill visa en lista över befintliga blobcontainrar i ditt lagringskonto använder du följande kommando:

    az storage container list --connection-string "{your storage account connection string}"
    
  • Om du vill skapa en blobcontainer i ditt lagringskonto använder du följande kommando:

    az storage container create --name {container name} \
      --connection-string "{your storage account connection string}"
    

Konfigurera din IoT-hubb

Nu kan du konfigurera din IoT-hubb så att du kan ladda upp filer till IoT-hubben med hjälp av din lagringskontoinformation.

Konfigurationen kräver följande värden:

  • Lagringscontainer: En blobcontainer i ett Azure Storage-konto i din aktuella Azure-prenumeration som ska associeras med din IoT-hubb. Du hämtade nödvändig information om lagringskontot i föregående avsnitt. IoT Hub genererar automatiskt SAS-URI:er med skrivbehörighet till den här blobcontainern så att enheter kan använda när de laddar upp filer.

  • Ta emot meddelanden om uppladdade filer: Aktivera eller inaktivera meddelanden om filuppladdning.

  • SAS TTL: Den här inställningen är time-to-live för DE SAS-URI:er som returneras till enheten av IoT Hub. Ange till en timme som standard.

  • Standard-TTL för filmeddelandeinställningar: Time-to-live för ett meddelande om filuppladdning innan det upphör att gälla. Ange till en dag som standard.

  • Maximalt antal filmeddelanden: Antalet gånger som IoT Hub försöker leverera ett meddelande om filuppladdning. Ange till 10 som standard.

  • Varaktighet för filmeddelandelås: Låsvaraktigheten för filmeddelandekön. Ange till 60 sekunder som standard.

  • Autentiseringstyp: Typ av autentisering för IoT Hub som ska användas med Azure Storage. Den här inställningen avgör hur din IoT-hubb autentiserar och auktoriserar med Azure Storage. Standardvärdet är nyckelbaserad autentisering. Men systemtilldelade och användartilldelade hanterade identiteter kan också användas. Hanterade identiteter tillhandahåller Azure-tjänster med en automatiskt hanterad identitet i Microsoft Entra-ID på ett säkert sätt. Information om hur du konfigurerar hanterade identiteter på din IoT-hubb och ditt Azure Storage-konto finns i IoT Hub-stöd för hanterade identiteter. När du har konfigurerat kan du ange en av dina hanterade identiteter som ska användas för autentisering med Azure Storage.

    Kommentar

    Inställningen för autentiseringstyp konfigurerar hur din IoT-hubb autentiseras med ditt Azure Storage-konto. Enheter autentiserar alltid med Azure Storage med den SAS-URI som de får från IoT-hubben.

Följande kommandon visar hur du konfigurerar filuppladdningsinställningarna på din IoT-hubb. Dessa kommandon visas separat för tydlighetens skull, men vanligtvis skulle du utfärda ett enda kommando med alla nödvändiga parametrar för ditt scenario. Inkludera citattecken där de visas på kommandoraden. Ta inte med klammerparenteserna. Mer information om varje parameter finns i Azure CLI-dokumentationen för kommandot az iot hub update .

Följande kommando konfigurerar lagringskontot och blobcontainern.

az iot hub update --name {your iot hub name} \
    --fileupload-storage-connectionstring "{your storage account connection string}" \
    --fileupload-storage-container-name "{your container name}" 

Följande kommando anger SAS-URI-tiden till standardvärdet (en timme).

az iot hub update --name {your iot hub name} \
    --fileupload-sas-ttl 1 

Följande kommando aktiverar filmeddelanden och anger egenskaperna för filavisering till deras standardvärden. (Sändningstiden för filuppladdningen är inställd på en timme och låsets varaktighet är inställd på 60 sekunder.)

az iot hub update --name {your iot hub name} \
    --fileupload-notifications true  \
    --fileupload-notification-max-delivery-count 10 \
    --fileupload-notification-ttl 1 \
    --fileupload-notification-lock-duration 60

Följande kommando konfigurerar nyckelbaserad autentisering:

az iot hub update --name {your iot hub name} \
    --fileupload-storage-auth-type keyBased

Följande kommando konfigurerar autentisering med hjälp av IoT-hubbens systemtilldelade hanterade identitet. Innan du kan köra det här kommandot måste du aktivera den systemtilldelade hanterade identiteten för din IoT-hubb och ge den rätt RBAC-roll för ditt Azure Storage-konto. Mer information finns i IoT Hub-stöd för hanterade identiteter.

az iot hub update --name {your iot hub name} \
    --fileupload-storage-auth-type identityBased \
    --fileupload-storage-identity [system] 

Följande kommandon hämtar de användartilldelade hanterade identiteterna som konfigurerats på din IoT-hubb och konfigurerar autentisering med en av dem. Innan du kan använda en användartilldelad hanterad identitet för att autentisera måste den konfigureras på din IoT-hubb och beviljas en lämplig RBAC-roll för ditt Azure Storage-konto. Mer information och steg finns i IoT Hub-stöd för hanterade identiteter.

Om du vill fråga efter användartilldelade hanterade identiteter på din IoT-hubb använder du kommandot az iot hub identity show .

az iot hub identity show --name {your iot hub name} --query userAssignedIdentities

Kommandot returnerar en samling av de användartilldelade hanterade identiteterna som konfigurerats på din IoT-hubb. Följande utdata visar en samling som innehåller en enda användartilldelad hanterad identitet.

{
  "/subscriptions/{your subscription ID}/resourcegroups/{your resource group}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{your user-assigned managed identity name}": 
  {
    "clientId": "<client ID GUID>",
    "principalId": "<principal ID GUID>"
  }
}

Följande kommando konfigurerar autentisering för att använda den användartilldelade identiteten ovan.

az iot hub update --name {your iot hub name} \
    --fileupload-storage-auth-type identityBased \
    --fileupload-storage-identity  "/subscriptions/{your subscription ID}/resourcegroups/{your resource group}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{your user-assigned managed identity name}"

Du kan granska inställningarna på din IoT-hubb med hjälp av följande kommando:

az iot hub show --name {your iot hub name}

Om du bara vill granska filuppladdningsinställningarna använder du följande kommando:

az iot hub show --name {your iot hub name}
    --query '[properties.storageEndpoints, properties.enableFileUploadNotifications, properties.messagingEndpoints.fileNotifications]'

I de flesta fall är det enklast att använda de namngivna parametrarna i Azure CLI-kommandona. Du kan dock även konfigurera inställningar för filuppladdning med parametern --set . Följande kommandon kan hjälpa dig att förstå hur.

az iot hub update --name {your iot hub name} \
  --set properties.storageEndpoints.'$default'.connectionString="{your storage account connection string}"

az iot hub update --name {your iot hub name} \
  --set properties.storageEndpoints.'$default'.containerName="{your storage container name}"

az iot hub update --name {your iot hub name} \
  --set properties.storageEndpoints.'$default'.sasTtlAsIso8601=PT1H0M0S

az iot hub update --name {your iot hub name} \
  --set properties.enableFileUploadNotifications=true

az iot hub update --name {your iot hub name} \
  --set properties.messagingEndpoints.fileNotifications.maxDeliveryCount=10

az iot hub update --name {your iot hub name} \
  --set properties.messagingEndpoints.fileNotifications.ttlAsIso8601=PT1H0M0S

Nästa steg