Konfigurace nahrávání souborů IoT Hubu pomocí Azure CLI

V tomto článku se dozvíte, jak nakonfigurovat nahrávání souborů do centra IoT pomocí Azure CLI.

Pokud chcete použít funkci nahrávání souborů ve službě IoT Hub, musíte nejprve přidružit účet úložiště Azure a kontejner objektů blob ke službě IoT Hub. IoT Hub automaticky vygeneruje identifikátory URI SAS s oprávněními k zápisu do tohoto kontejneru objektů blob, aby zařízení používala při nahrávání souborů. Kromě účtu úložiště a kontejneru objektů blob můžete nastavit identifikátor URI SAS a typ ověřování, který IoT Hub používá s úložištěm Azure. Můžete také nakonfigurovat nastavení pro volitelná oznámení o nahrávání souborů, která ioT Hub dokáže doručovat do back-endových služeb.

Předpoklady

Poznámka:

Tento článek používá nejnovější verzi rozšíření Azure IoT, která se nazývá azure-iot. Starší verze se nazývá azure-cli-iot-ext. Najednou byste měli mít nainstalovanou jenom jednu verzi. Pomocí příkazu az extension list můžete ověřit aktuálně nainstalovaná rozšíření.

Slouží az extension remove --name azure-cli-iot-ext k odebrání starší verze rozšíření.

Slouží az extension add --name azure-iot k přidání nové verze rozšíření.

Pokud chcete zjistit, jaká rozšíření jste nainstalovali, použijte az extension list.

Přihlášení a nastavení účtu Azure

Přihlaste se ke svému účtu Azure a vyberte své předplatné. Pokud používáte Azure Cloud Shell, měli byste být už přihlášení; Přesto ale možná budete muset vybrat své předplatné Azure, pokud máte více předplatných.

  1. Na příkazovém řádku spusťte příkaz pro přihlášení:

    az login
    

    Postupujte podle pokynů pro ověření pomocí kódu a přihlaste se ke svému účtu Azure ve webovém prohlížeči.

  2. Pokud máte více předplatných Azure, přihlášením k Azure získáte přístup ke všem účtům Azure přidruženým k vašim přihlašovacím údajům. Pomocí následujícího příkazu zobrazte výpis účtů Azure, které můžete použít:

    az account list
    

    Pomocí následujícího příkazu vyberte předplatné, které chcete použít ke spuštění příkazů pro vytvoření centra IoT. Můžete použít název nebo ID předplatného z výstupu předchozího příkazu:

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

Načtení podrobností o účtu úložiště

Následující kroky předpokládají, že jste účet úložiště vytvořili pomocí modelu nasazení Resource Manager , nikoli modelu nasazení Classic .

Ke konfiguraci nahrávání souborů ze zařízení potřebujete připojovací řetězec pro účet Azure Storage. Účet úložiště musí být ve stejném předplatném jako vaše centrum IoT. V účtu úložiště také potřebujete název kontejneru objektů blob. Pomocí následujícího příkazu načtěte klíče účtu úložiště:

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

Připojovací řetězec bude vypadat podobně jako v následujícím výstupu:

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

Poznamenejte si hodnotu connectionString. Potřebujete ho v následujících krocích.

Pro nahrání souboru můžete použít existující kontejner objektů blob nebo vytvořit nový:

  • Pokud chcete vypsat existující kontejnery objektů blob v účtu úložiště, použijte následující příkaz:

    az storage container list --connection-string "{your storage account connection string}"
    
  • Pokud chcete ve svém účtu úložiště vytvořit kontejner objektů blob, použijte následující příkaz:

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

Konfigurace centra IoT

Teď můžete službu IoT Hub nakonfigurovat tak, aby umožňovala nahrávat soubory do centra IoT pomocí podrobností o účtu úložiště.

Konfigurace vyžaduje následující hodnoty:

  • Kontejner úložiště: Kontejner objektů blob v účtu úložiště Azure v aktuálním předplatném Azure, který se přidruží k centru IoT. V předchozí části jste načetli potřebné informace o účtu úložiště. IoT Hub automaticky vygeneruje identifikátory URI SAS s oprávněními k zápisu do tohoto kontejneru objektů blob, aby zařízení používala při nahrávání souborů.

  • Příjem oznámení o nahraných souborech: Povolí nebo zakáže oznámení o nahrávání souborů.

  • Hodnota TTL SAS: Toto nastavení je hodnota URI SAS vrácená do zařízení službou IoT Hub. Ve výchozím nastavení je nastavená na jednu hodinu.

  • Výchozí hodnota TTL pro nastavení oznámení o souboru: Doba trvání oznámení o nahrání souboru před vypršením jeho platnosti. Ve výchozím nastavení je nastavená na jeden den.

  • Maximální počet doručení oznámení o souboru: Kolikrát se IoT Hub pokusí doručit oznámení o nahrání souboru. Ve výchozím nastavení je nastavená hodnota 10.

  • Doba trvání uzamčení oznámení souboru: Doba trvání uzamčení fronty oznámení souboru. Ve výchozím nastavení je nastavená na 60 sekund.

  • Typ ověřování: Typ ověřování pro IoT Hub, který se má použít se službou Azure Storage. Toto nastavení určuje, jak se vaše centrum IoT ověřuje a autorizuje ve službě Azure Storage. Výchozí hodnota je ověřování založené na klíčích; Spravované identity přiřazené systémem a přiřazené uživatelem se ale dají použít také. Spravované identity poskytují službám Azure zabezpečeně spravovanou identitu v Microsoft Entra ID. Informace o konfiguraci spravovaných identit ve službě IoT Hub a účtu Azure Storage najdete v tématu Podpora spravovaných identit ve službě IoT Hub. Po nakonfigurování můžete jednu ze spravovaných identit nastavit tak, aby se používala k ověřování s úložištěm Azure.

    Poznámka:

    Nastavení typu ověřování konfiguruje, jak se vaše centrum IoT ověřuje pomocí účtu služby Azure Storage. Zařízení se vždy ověřují pomocí identifikátoru URI SAS, který získávají z centra IoT.

Následující příkazy ukazují, jak nakonfigurovat nastavení nahrávání souborů ve službě IoT Hub. Tyto příkazy se zobrazují samostatně pro přehlednost, ale obvykle byste vydali jeden příkaz se všemi požadovanými parametry pro váš scénář. Zahrnout uvozovky, kde se zobrazují na příkazovém řádku. Nezahrnujte složené závorky. Další podrobnosti o jednotlivých parametrech najdete v dokumentaci k Azure CLI pro příkaz az iot hub update .

Následující příkaz nakonfiguruje účet úložiště a kontejner objektů blob.

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

Následující příkaz nastaví dobu živého identifikátoru URI SAS na výchozí (jednu hodinu).

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

Následující příkaz povolí oznámení souborů a nastaví vlastnosti oznámení souboru na výchozí hodnoty. (Doba nahrávání souboru do živého vysílání je nastavená na jednu hodinu a doba trvání uzamčení je nastavená na 60 sekund.)

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

Následující příkaz konfiguruje ověřování založené na klíčích:

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

Následující příkaz nakonfiguruje ověřování pomocí spravované identity přiřazené systémem ve službě IoT Hub. Před spuštěním tohoto příkazu musíte pro centrum IoT povolit spravovanou identitu přiřazenou systémem a udělit jí správnou roli RBAC ve vašem účtu Azure Storage. Další informace najdete v tématu Podpora služby IoT Hub pro spravované identity.

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

Následující příkazy načtou spravované identity přiřazené uživatelem nakonfigurované ve službě IoT Hub a nakonfigurují ověřování s jedním z nich. Abyste mohli použít spravovanou identitu přiřazenou uživatelem k ověření, musíte ji nakonfigurovat ve službě IoT Hub a udělit odpovídající roli RBAC ve vašem účtu Azure Storage. Další podrobnosti a kroky najdete v tématu Podpora služby IoT Hub pro spravované identity.

K dotazování na spravované identity přiřazené uživatelem ve službě IoT Hub použijte příkaz az iot hub identity show .

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

Příkaz vrátí kolekci spravovaných identit přiřazených uživatelem nakonfigurovanými ve službě IoT Hub. Následující výstup ukazuje kolekci, která obsahuje jednu spravovanou identitu přiřazenou uživatelem.

{
  "/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>"
  }
}

Následující příkaz nakonfiguruje ověřování tak, aby používal výše přiřazenou identitu přiřazenou uživatelem.

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}"

Nastavení ve službě IoT Hub můžete zkontrolovat pomocí následujícího příkazu:

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

Pokud chcete zkontrolovat pouze nastavení nahrávání souborů, použijte následující příkaz:

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

Ve většině situací je použití pojmenovaných parametrů v příkazech Azure CLI nejjednodušší; Můžete ale také nakonfigurovat nastavení nahrávání souborů pomocí parametru --set . Následující příkazy vám můžou pomoct pochopit, jak na to.

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

Další kroky