Quickstart: IoT Hub Device Provisioning Service (DPS) instellen met een ARM-sjabloon

U kunt een Azure Resource Manager-sjabloon (ARM-sjabloon) gebruiken voor het programmatisch instellen van de benodigde Azure-cloudresources voor het inrichten van uw apparaten. In deze stappen ziet u hoe u een IoT-hub en een nieuwe IoT Hub Device Provisioning Service maakt met een ARM-sjabloon. De IoT-hub is ook gekoppeld aan de DPS-resource met behulp van de sjabloon. Met deze koppeling kan de DPS-resource apparaten toewijzen aan de hub op basis van het toewijzingsbeleid dat u configureert.

Een Azure Resource Manager-sjabloon is een JSON-bestand (JavaScript Object Notation) dat de infrastructuur en configuratie voor uw project definieert. Voor de sjabloon is declaratieve syntaxis vereist. U beschrijft de beoogde implementatie zonder de reeks programmeeropdrachten te schrijven om de implementatie te maken.

In deze quickstart worden Azure Portal en de Azure CLI gebruikt om de programmatische stappen uit te voeren die nodig zijn om een resourcegroep te maken en de sjabloon te implementeren. U kunt echter ook PowerShell, .NET, Ruby of andere programmeertalen gebruiken om deze stappen uit te voeren en uw sjabloon te implementeren.

Als uw omgeving voldoet aan de vereisten en u al bekend bent met het gebruik van ARM-sjablonen, wordt de sjabloon voor implementatie in Azure Portal geopend wanneer u de knop Implementeren in Azure selecteert.

Button to deploy the Resource Manager template to Azure.

Als u geen Azure-abonnement hebt, kunt u een gratis Azure-account maken voordat u begint.

Vereisten

De sjabloon controleren

De sjabloon die in deze quickstart wordt gebruikt, komt uit Azure-snelstartsjablonen.

Notitie

Er is momenteel geen ARM-sjabloonondersteuning voor het maken van inschrijvingen met nieuwe DPS-resources. Dit is een gemeenschappelijk en begrepen verzoek dat wordt overwogen voor implementatie.

{
  "$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'))]"
      ]
    }
  ]
}

Er zijn twee Azure-resources gedefinieerd in de vorige sjabloon:

De sjabloon implementeren

Implementeren met de Portal

  1. Selecteer de volgende afbeelding om u aan te melden bij Azure en de sjabloon te openen voor implementatie. Met de sjabloon maakt u een nieuwe IoT-hub en DPS-resource. De nieuwe IoT-hub is gekoppeld aan de DPS-resource.

    Button to deploy the Resource Manager template to Azure.

  2. Selecteer of voer de volgende waarden in en selecteer Beoordelen en maken.

    ARM template deployment parameters on the portal

    Gebruik, tenzij anders opgegeven voor de volgende velden, de standaardwaarde om de IoT Hub en DPS-resource te maken.

    Veld Beschrijving
    Abonnement Selecteer uw Azure-abonnement.
    Resourcegroep Selecteer Nieuwe maken en voer een unieke naam in voor de resourcegroep en selecteer VERVOLGENS OK.
    Regio Selecteer een regio voor uw resources. Bijvoorbeeld VS - Oost. Voor tolerantie en betrouwbaarheid raden we u aan om te implementeren in een van de regio's die ondersteuning bieden voor Beschikbaarheidszones.
    Naam van de IoT-hub Voer een naam in voor de IoT Hub die wereldwijd uniek moet zijn binnen de naamruimte .azure-devices.net. U hebt de hubnaam in de volgende sectie nodig wanneer u de implementatie valideert.
    Naam van inrichtingsservice Voer een naam in voor de nieuwe Device Provisioning Service (DPS)-resource. De naam moet wereldwijd uniek zijn binnen de naamruimte .azure-devices-provisioning.net. U hebt de DPS-naam in de volgende sectie nodig wanneer u de implementatie valideert.
  3. Lees de voorwaarden op het volgende scherm. Als u akkoord gaat met alle voorwaarden, selecteert u Maken.

    Het duurt even voordat de implementatie is voltooid.

    Naast Azure Portal kunt u ook de Azure PowerShell, Azure CLI en REST API gebruiken. Zie Sjablonen implementeren voor meer informatie over andere implementatiemethoden.

Implementeren met Azure CLI

Voor het gebruik van Azure CLI is versie 2.6 of hoger vereist. Als u de Azure CLI lokaal uitvoert, controleert u uw versie door het volgende uit te voeren: az --version

Meld u aan bij uw Azure-account en selecteer uw abonnement.

  1. Als u de Azure CLI lokaal uitvoert in plaats van deze uit te voeren in de portal, moet u zich aanmelden. Voer de aanmeldingsopdracht uit om u aan te melden bij de opdrachtprompt:

    az login
    

    Volg de instructies om te verifiëren met de code en meld u aan bij uw Azure-account via een webbrowser.

  2. Als u meerdere Azure-abonnementen hebt en u zich aanmeldt bij Azure, hebt u toegang tot alle Azure accounts die zijn gekoppeld aan uw referenties. Gebruik de volgende opdracht om de Azure-accounts weer te geven die u kunt gebruiken:

    az account list -o table
    

    Gebruik de volgende opdracht om het abonnement te selecteren dat u wilt gebruiken voor het uitvoeren van de opdrachten voor het maken van uw IoT-hub en DPS-resources. U kunt de naam van het abonnement of de id van de uitvoer van de vorige opdracht gebruiken:

    az account set --subscription {your subscription name or id}
    
  3. Kopieer en plak de volgende opdrachten in uw CLI-prompt. Voer vervolgens de opdrachten uit door de Enter-toets te selecteren.

    Tip

    De opdrachten vragen om een locatie van een resourcegroep. U kunt een lijst met beschikbare locaties weergeven door eerst de volgende opdracht uit te voeren:

    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. De opdrachten vragen u om de volgende informatie. Geef elke waarde op en selecteer de Enter-toets.

    Parameter Description
    Projectnaam De waarde van deze parameter wordt gebruikt om een resourcegroep te maken voor het opslaan van alle resources. De tekenreeks rg wordt toegevoegd aan het einde van de waarde voor de naam van de resourcegroep.
    location Deze waarde is de regio waarin alle resources worden gemaakt.
    iotHubName Voer een naam in voor de IoT Hub die wereldwijd uniek moet zijn binnen de naamruimte .azure-devices.net. U hebt de hubnaam in de volgende sectie nodig wanneer u de implementatie valideert.
    provisioningServiceName Voer een naam in voor de nieuwe Device Provisioning Service (DPS)-resource. De naam moet wereldwijd uniek zijn binnen de naamruimte .azure-devices-provisioning.net. U hebt de DPS-naam in de volgende sectie nodig wanneer u de implementatie valideert.

    De Azure CLI wordt gebruikt om de sjabloon te implementeren. Naast de Azure CLI kunt u ook de Azure PowerShell, Azure Portal en REST API gebruiken. Zie Sjablonen implementeren voor meer informatie over andere implementatiemethoden.

Geïmplementeerde resources bekijken

  1. Voer de volgende opdracht voor het weergeven van resources uit en zoek de nieuwe inrichtingsservice en IoT-hub in de uitvoer om de implementatie te controleren:

     az resource list -g "${projectName}rg"
    
  2. Als u wilt controleren of de hub al is gekoppeld aan de DPS-resource, voert u de volgende opdracht uit DPS-extensie weergeven.

     az iot dps show --name <Your provisioningServiceName>
    

    Let op de hubs die zijn gekoppeld aan het iotHubs-lid.

Resources opschonen

Andere Quick Starts in deze verzameling zijn op deze Quick Start gebaseerd. Als u van plan bent om door te gaan met de volgende quickstarts of met de zelfstudies, moet u de resources die in deze quickstart zijn gemaakt, niet opschonen. Als u niet van plan bent om door te gaan, kunt u Azure Portal of Azure CLI gebruiken om de resourcegroep en alle bijbehorende resources te verwijderen.

Als u een resourcegroep en alle bijbehorende resources uit Azure Portal wilt verwijderen, opent u de resourcegroep en selecteert u Resourcegroep verwijderen en bovenaan.

De resourcegroep die is geïmplementeerd met behulp van Azure CLI verwijderen:

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

U kunt ook resourcegroepen en afzonderlijke resources verwijderen met een van de volgende opties:

  • Azure Portal
  • PowerShell
  • REST-API's
  • Ondersteunde platform-SDK's die zijn gepubliceerd voor Azure Resource Manager of IoT Hub Device Provisioning Service

Volgende stappen

In deze quickstart hebt u een IoT-hub en een Device Provisioning Service-exemplaar geïmplementeerd en de twee resources gekoppeld. Als u wilt weten hoe u deze instellingen gebruikt voor het inrichten van een apparaat, gaat u verder met de rest van de quickstart voor het maken van een apparaat.