Snabbstart: Konfigurera IoT Hub Device Provisioning Service (DPS) med en ARM-mall

Du kan använda en Azure Resource Manager-mall (ARM-mall) för att programmatiskt konfigurera de Azure-molnresurser som krävs för att etablera dina enheter. De här stegen visar hur du skapar en IoT-hubb och en ny IoT Hub Device Provisioning-tjänst med en ARM-mall. Iot Hub är också länkad till DPS-resursen med hjälp av mallen. Med den här länken kan DPS-resursen tilldela enheter till hubben baserat på de allokeringsprinciper som du konfigurerar.

En Azure Resource Manager-mall är en JSON-fil (JavaScript Object Notation) som definierar infrastrukturen och konfigurationen för projektet. Mallen använder deklarativ syntax. Du beskriver den avsedda distributionen utan att skriva sekvensen med programmeringskommandon för att skapa distributionen.

Den här snabbstarten använder Azure-portalen och Azure CLI för att utföra de programmässiga steg som krävs för att skapa en resursgrupp och distribuera mallen. Du kan dock också använda PowerShell, .NET, Ruby eller andra programmeringsspråk för att utföra de här stegen och distribuera mallen.

Om din miljö uppfyller kraven och du redan är bekant med att använda ARM-mallar öppnar du mallen för distribution i Azure-portalen genom att välja knappen Distribuera till Azure .

Button to deploy the Resource Manager template to Azure.

Om du inte har en Azure-prenumeration skapar du ett kostnadsfritt Azure-konto innan du börjar.

Förutsättningar

Granska mallen

Mallen som används i den här snabbstarten kommer från Azure-snabbstartsmallar.

Kommentar

För närvarande finns det inget STÖD för ARM-mallar för att skapa registreringar med nya DPS-resurser. Detta är en vanlig och förstådd begäran som övervägs för implementering.

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

Två Azure-resurser definieras i föregående mall:

Distribuera mallen

Distribuera med portalen

  1. Välj följande bild för att logga in på Azure och öppna mallen för distribution. Mallen skapar en ny Iot-hubb och DPS-resurs. Den nya IoT-hubben är länkad till DPS-resursen.

    Button to deploy the Resource Manager template to Azure.

  2. Välj eller ange följande värden och välj Granska + Skapa.

    ARM template deployment parameters on the portal

    Om inget annat anges för följande fält använder du standardvärdet för att skapa Iot Hub- och DPS-resursen.

    Fält beskrivning
    Abonnemang Välj din Azure-prenumerationen.
    Resursgrupp Välj Skapa ny och ange ett unikt namn för resursgruppen och välj sedan OK.
    Region Välj en region för dina resurser. Till exempel USA, östra. För återhämtning och tillförlitlighet rekommenderar vi att du distribuerar till en av de regioner som stöder Tillgänglighetszoner.
    Namn på Iot Hub Ange ett namn för IoT Hub som måste vara globalt unikt i namnområdet .azure-devices.net . Du behöver hubbnamnet i nästa avsnitt när du verifierar distributionen.
    Namn på etableringstjänst Ange ett namn för den nya DPS-resursen (Device Provisioning Service). Namnet måste vara globalt unikt i namnområdet .azure-devices-provisioning.net . Du behöver DPS-namnet i nästa avsnitt när du verifierar distributionen.
  3. Läs villkoren på nästa skärm. Om du godkänner alla villkor väljer du Skapa.

    Distributionen tar en stund att slutföra.

    Förutom Azure-portalen kan du även använda Azure PowerShell, Azure CLI och REST API. Mer information om andra distributionsmetoder finns i Distribuera mallar.

Distribuera med Azure CLI

Användning av Azure CLI kräver version 2.6 eller senare. Om du kör Azure CLI lokalt kontrollerar du din version genom att köra: az --version

Logga in på ditt Azure-konto och välj din prenumeration.

  1. Om du kör Azure CLI lokalt i stället för att köra det i portalen måste du logga in. Logga in i kommandotolken genom att köra 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 -o table
    

    Använd följande kommando för att välja en prenumeration som du vill använda för att köra kommandona för att skapa dina IoT Hub- och DPS-resurser. 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}
    
  3. Kopiera och klistra in följande kommandon i CLI-prompten. Kör sedan kommandona genom att välja returnyckeln.

    Dricks

    Kommandotolken för en resursgruppsplats. Du kan visa en lista över tillgängliga platser genom att först köra kommandot:

    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. Kommandona uppmanar dig att ange följande information. Ange varje värde och välj returnyckeln.

    Parameter Description
    Projektnamn Värdet för den här parametern används för att skapa en resursgrupp för att lagra alla resurser. Strängen rg läggs till i slutet av värdet för resursgruppens namn.
    Plats Det här värdet är den region där alla resurser skapas.
    iotHubName Ange ett namn för IoT Hub som måste vara globalt unikt i namnområdet .azure-devices.net . Du behöver hubbnamnet i nästa avsnitt när du verifierar distributionen.
    provisioningServiceName Ange ett namn för den nya DPS-resursen (Device Provisioning Service). Namnet måste vara globalt unikt i namnområdet .azure-devices-provisioning.net . Du behöver DPS-namnet i nästa avsnitt när du verifierar distributionen.

    Azure CLI används för att distribuera mallen. Förutom Azure CLI kan du även använda Azure PowerShell, Azure Portal och REST API. Mer information om andra distributionsmetoder finns i Distribuera mallar.

Granska distribuerade resurser

  1. Kontrollera distributionen genom att köra följande kommando för att visa resurser och leta efter den nya etableringstjänsten och IoT Hub i utdata:

     az resource list -g "${projectName}rg"
    
  2. Kontrollera att hubben redan är länkad till DPS-resursen genom att köra följande kommando för DPS-tillägget show.

     az iot dps show --name <Your provisioningServiceName>
    

    Observera de hubbar som är länkade till iotHubs medlemmen.

Rensa resurser

De andra snabbstarterna i den här samlingen bygger på den här snabbstarten. Om du planerar att fortsätta arbeta med efterföljande snabbstarter eller självstudier ska du inte rensa resurserna som skapades i den här snabbstarten. Om du inte planerar att fortsätta kan du använda Azure-portalen eller Azure CLI för att ta bort resursgruppen och alla dess resurser.

Om du vill ta bort en resursgrupp och alla dess resurser från Azure-portalen öppnar du bara resursgruppen och väljer Ta bort resursgrupp och överst.

Så här tar du bort resursgruppen som distribuerats med Hjälp av Azure CLI:

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

Du kan också ta bort resursgrupper och enskilda resurser med något av följande alternativ:

  • Azure Portal
  • PowerShell
  • REST API:er
  • Plattforms-SDK:er som stöds publicerade för Azure Resource Manager eller IoT Hub Device Provisioning Service

Nästa steg

I den här snabbstarten distribuerade du en IoT-hubb och en enhetsetableringstjänstinstans och länkade de två resurserna. Om du vill lära dig hur du använder den här konfigurationen för att etablera en enhet fortsätter du till snabbstarten för att skapa en enhet.