Freigeben über


Schnellstart: Einrichten von IoT Hub Device Provisioning Service (DPS) mithilfe einer ARM-Vorlage

Sie können eine ARM-Vorlage (Azure Resource Manager) verwenden, um die zum Bereitstellen Ihrer Geräte erforderlichen Azure-Cloudressourcen programmgesteuert einzurichten. Hier erfahren Sie, wie Sie mithilfe einer ARM-Vorlage einen IoT-Hub und eine neue Instanz von IoT Hub Device Provisioning Service erstellen. Der IoT-Hub ist auch mithilfe der Vorlage mit der DPS-Ressource verknüpft. Dank dieser Verknüpfung kann die DPS-Ressource dem Hub auf der Grundlage der von Ihnen konfigurierten Zuordnungsrichtlinien Geräte zuweisen.

Eine Azure Resource Manager-Vorlage ist eine JSON (JavaScript Object Notation)-Datei, welche die Infrastruktur und die Konfiguration für Ihr Projekt definiert. Die Vorlage verwendet eine deklarative Syntax. Sie beschreiben Ihre geplante Bereitstellung, ohne die Abfolge der Programmierbefehle zu schreiben, mit denen die Bereitstellung erstellt wird.

Dieser Schnellstart verwendet das Azure-Portal und die Azure-Befehlszeilenschnittstelle, um die programmgesteuerten Schritte zum Erstellen einer Ressourcengruppe und zum Bereitstellen der Vorlage auszuführen. Sie können jedoch auch PowerShell, .NET, Ruby oder andere Programmiersprachen verwenden, um diese Schritte auszuführen und Ihre Vorlage bereitzustellen.

Wenn Ihre Umgebung die Voraussetzungen erfüllt und Sie bereits mit der Verwendung von ARM-Vorlagen vertraut sind, können Sie die Vorlage durch Auswählen der Schaltfläche In Azure bereitstellen für die Bereitstellung im Azure-Portal öffnen.

Schaltfläche zum Bereitstellen der Resource Manager-Vorlage in Azure.

Wenn Sie nicht über ein Azure-Konto verfügen, erstellen Sie ein kostenloses Konto , bevor Sie beginnen.

Voraussetzungen

Überprüfen der Vorlage

Die in dieser Schnellstartanleitung verwendete Vorlage stammt von der Seite mit den Azure-Schnellstartvorlagen.

Hinweis

Derzeit gibt es keine ARM-Vorlagenunterstützung für das Erstellen von Registrierungen mit neuen DPS-Ressourcen. Dies ist eine häufige und verstandene Anforderung, die für die Implementierung berücksichtigt wird.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "metadata": {
    "_generator": {
      "name": "bicep",
      "version": "0.12.40.16777",
      "templateHash": "13184692430416822033"
    }
  },
  "parameters": {
    "iotHubName": {
      "type": "string",
      "metadata": {
        "description": "Specify the name of the Iot hub."
      }
    },
    "provisioningServiceName": {
      "type": "string",
      "metadata": {
        "description": "Specify the name of the provisioning service."
      }
    },
    "location": {
      "type": "string",
      "defaultValue": "[resourceGroup().location]",
      "metadata": {
        "description": "Specify the location of the resources."
      }
    },
    "skuName": {
      "type": "string",
      "defaultValue": "S1",
      "metadata": {
        "description": "The SKU to use for the IoT Hub."
      }
    },
    "skuUnits": {
      "type": "int",
      "defaultValue": 1,
      "metadata": {
        "description": "The number of IoT Hub units."
      }
    }
  },
  "variables": {
    "iotHubKey": "iothubowner"
  },
  "resources": [
    {
      "type": "Microsoft.Devices/IotHubs",
      "apiVersion": "2021-07-02",
      "name": "[parameters('iotHubName')]",
      "location": "[parameters('location')]",
      "sku": {
        "name": "[parameters('skuName')]",
        "capacity": "[parameters('skuUnits')]"
      },
      "properties": {}
    },
    {
      "type": "Microsoft.Devices/provisioningServices",
      "apiVersion": "2022-02-05",
      "name": "[parameters('provisioningServiceName')]",
      "location": "[parameters('location')]",
      "sku": {
        "name": "[parameters('skuName')]",
        "capacity": "[parameters('skuUnits')]"
      },
      "properties": {
        "iotHubs": [
          {
            "connectionString": "[format('HostName={0};SharedAccessKeyName={1};SharedAccessKey={2}', reference(resourceId('Microsoft.Devices/IotHubs', parameters('iotHubName')), '2021-07-02').hostName, variables('iotHubKey'), listkeys(resourceId('Microsoft.Devices/IotHubs', parameters('iotHubName')), '2021-07-02').value[0].primaryKey)]",
            "location": "[parameters('location')]"
          }
        ]
      },
      "dependsOn": [
        "[resourceId('Microsoft.Devices/IotHubs', parameters('iotHubName'))]"
      ]
    }
  ]
}

In der vorigen Vorlage sind zwei Azure-Ressourcen definiert:

Bereitstellen der Vorlage

Bereitstellen über das Portal

  1. Wählen Sie das folgende Bild aus, um sich bei Azure anzumelden und die Vorlage für die Bereitstellung zu öffnen. Die Vorlage erstellt eine neue IoT-Hub- und DPS-Ressource. Der neue IoT-Hub ist mit der DPS-Ressource verknüpft.

    Schaltfläche zum Bereitstellen der Resource Manager-Vorlage in Azure.

  2. Wählen Sie die folgenden Werte aus, oder geben Sie sie ein, und wählen Sie dann Überprüfen + erstellen aus.

    Screenshot der ARM-Vorlagenbereitstellungsparameter im Azure-Portal.

    Sofern nicht anders für die folgenden Felder angegeben, verwenden Sie den Standardwert, um die IoT-Hub- und DPS-Ressource zu erstellen.

    Feld BESCHREIBUNG
    Abonnement Wählen Sie Ihr Azure-Abonnement.
    Ressourcengruppe Wählen Sie die Option Neu erstellen aus, und geben Sie einen eindeutigen Namen für die Ressourcengruppe ein. Wählen Sie dann OK aus.
    Region Wählen Sie eine Region für Ihre Ressourcen aus. Beispiel: USA, Osten Für Resilienz und Zuverlässigkeit empfehlen wir, eine der Regionen zu wählen, die Verfügbarkeitszonen unterstützen.
    IoT Hub-Name Geben Sie einen Namen für den IoT-Hub ein, der innerhalb des .azure-devices.net-Namespace global eindeutig sein muss. Sie benötigen den Hubnamen im nächsten Abschnitt beim Überprüfen der Bereitstellung.
    Provisioning Service Name (Name des Bereitstellungsdiensts) Geben Sie einen Namen für die neue DPS-Ressource (Device Provisioning Service) ein. Der Name muss innerhalb des Namespace .azure-devices-provisioning.net global eindeutig sein. Sie benötigen den DPS-Namen im nächsten Abschnitt beim Überprüfen der Bereitstellung.
  3. Lesen Sie sich auf dem nächsten Bildschirm die Bedingungen durch. Wenn Sie mit allen Bedingungen einverstanden sind, wählen Sie Erstellen aus.

    Die Bereitstellung dauert einige Momente.

    Neben dem Azure-Portal können Sie auch Azure PowerShell, die Azure-Befehlszeilenschnittstelle (Azure CLI) und die REST-API verwenden. Weitere Bereitstellungsmethoden finden Sie unter Bereitstellen von Ressourcen mit ARM-Vorlagen und Azure PowerShell.

Bereitstellen mit der Azure-Befehlszeilenschnittstelle (Azure CLI)

Wenn Sie die Azure CLI verwenden möchten, benötigen Sie mindestens die Version 2.6. Falls Sie die Azure CLI lokal ausführen, überprüfen Sie Ihre Version mithilfe des folgenden Befehls: az --version

Melden Sie sich bei Ihrem Azure-Konto an, und wählen Sie Ihr Abonnement aus.

  1. Falls Sie die Azure CLI lokal (statt im Portal) ausführen, müssen Sie sich anmelden. Um sich an der Eingabeaufforderung einzuloggen, führen Sie den Befehl "az login" aus:

    az login
    

    Befolgen Sie die Anweisungen zur Authentifizierung mit dem Code, und melden Sie sich in einem Webbrowser bei Ihrem Azure-Konto an.

  2. Wenn Sie über mehrere Azure-Abonnements verfügen, erhalten Sie durch die Anmeldung bei Azure Zugriff auf alle Azure-Konten, die mit Ihren Anmeldeinformationen verknüpft sind. Verwenden Sie den folgenden Befehl " az account list ", um die azure-Konten auflisten, die Sie verwenden können:

    az account list -o table
    

    Verwenden Sie den folgenden Befehl "az account set " zum Auswählen des Abonnements, das Sie zum Ausführen der Befehle verwenden möchten, um Ihre IoT-Hub- und DPS-Ressourcen zu erstellen. Sie können entweder den Abonnementnamen oder die ID aus der Ausgabe des vorherigen Befehls verwenden:

    az account set --subscription {your subscription name or id}
    
  3. Kopieren Sie die folgenden Befehle, und fügen Sie sie in Ihre CLI-Eingabeaufforderung ein. Führen Sie dann die Befehle aus, indem Sie die EINGABETASTE drücken.

    Tipp

    Von den Befehlen werden Sie zur Eingabe eines Ressourcengruppenstandorts aufgefordert. Sie können eine Liste der verfügbaren Speicherorte anzeigen, indem Sie zuerst den folgenden Befehl ausführen:

    az account list-locations -o table

    read -p "Enter a project name that is used for generating resource names:" projectName &&
    read -p "Enter the location (i.e. centralus):" location &&
    templateUri="https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.devices/iothub-device-provisioning/azuredeploy.json" &&
    resourceGroupName="${projectName}rg" &&
    az group create --name $resourceGroupName --location "$location" &&
    az deployment group create --resource-group $resourceGroupName --template-uri  $templateUri &&
    echo "Press [ENTER] to continue ..." &&
    read
    
  4. Die Befehle fordern Sie zur Eingabe folgender Informationen auf. Geben Sie jeden Wert an, und wählen Sie die EINGABETASTE aus.

    Parameter BESCHREIBUNG
    Projektname Der Wert dieses Parameters wird verwendet, um eine Ressourcengruppe für alle Ressourcen zu erstellen. Am Ende des Werts für Ihren Ressourcengruppennamen wird die Zeichenfolge „rg“ hinzugefügt.
    Standort. Bei diesem Wert handelt es sich um die Region, in der alle Ressourcen erstellt werden.
    iotHubName Geben Sie einen Namen für den IoT-Hub ein, der innerhalb des .azure-devices.net-Namespace global eindeutig sein muss. Sie benötigen den Hubnamen im nächsten Abschnitt beim Überprüfen der Bereitstellung.
    provisioningServiceName Geben Sie einen Namen für die neue DPS-Ressource (Device Provisioning Service) ein. Der Name muss innerhalb des Namespace .azure-devices-provisioning.net global eindeutig sein. Sie benötigen den DPS-Namen im nächsten Abschnitt beim Überprüfen der Bereitstellung.

    Die Azure-Befehlszeilenschnittstelle wird verwendet, um die Vorlage bereitzustellen. Neben der Azure CLI können Sie auch Azure PowerShell, das Azure-Portal und die REST-API verwenden. Informationen zu anderen Bereitstellungsmethoden finden Sie unter Bereitstellen von Vorlagen.

Überprüfen der bereitgestellten Ressourcen

  1. Um die Bereitstellung zu überprüfen, führen Sie den folgenden Az-Ressourcenlistenbefehl aus, um Ressourcen aufzulisten und in der Ausgabe nach dem neuen Bereitstellungsdienst und dem IoT-Hub zu suchen:

     az resource list -g "${projectName}rg"
    
  2. Um zu überprüfen, ob der Hub bereits mit der DPS-Ressource verknüpft ist, führen Sie den folgenden Befehl "az iot dps show " aus.

     az iot dps show --name <Your provisioningServiceName>
    

    Beachten Sie die Hubs, die mit dem Element iotHubs verknüpft sind.

Bereinigen von Ressourcen

Andere Schnellstarts in dieser Sammlung bauen auf diesem Schnellstart auf. Wenn Sie mit den nachfolgenden Schnellstarts oder mit den Tutorials fortfahren möchten, löschen Sie nicht die Ressourcen, die in diesem Schnellstart erstellt wurden. Wenn Sie den Vorgang nicht fortsetzen möchten, können Sie die Ressourcengruppe und alle zugehörigen Ressourcen über das Azure-Portal oder die Azure CLI löschen.

Wenn Sie eine Ressourcengruppe und alle zugehörigen Ressourcen aus dem Azure-Portal löschen möchten, öffnen Sie einfach die Ressourcengruppe, und wählen Sie oben " Ressourcengruppe löschen" aus.

Um die mithilfe der Azure CLI bereitgestellte Ressourcengruppe zu löschen, gehen Sie wie folgt vor:

az group delete --name "${projectName}rg"

Sie können auch Ressourcengruppen und einzelne Ressourcen mit einer der folgenden Optionen löschen:

  • Azure-Portal
  • PowerShell
  • REST-APIs
  • Unterstützte Plattform-SDKs, die für Azure Resource Manager oder IoT Hub Device Provisioning Service veröffentlicht wurden

Nächste Schritte

In diesem Schnellstart haben Sie einen IoT-Hub und eine Device Provisioning Service-Instanz bereitgestellt sowie die beiden Ressourcen verknüpft. Im Schnellstart zum Erstellen eines Geräts erfahren Sie, wie Sie diese Konfiguration zum Bereitstellen eines Geräts verwenden.