Freigeben über


Schnellstart: Fehlerbehebung bei der Bereitstellung von JSON-ARM-Vorlagen

Dieser Schnellstart beschreibt, wie Sie Fehler bei der Bereitstellung von JSON-Azure Resource Manager-Vorlagen (ARM-Vorlagen) beheben können. Sie richten eine Vorlage mit Fehlern ein und erfahren, wie Sie die Fehler beheben.

Eine Azure Resource Manager-Vorlage ist eine JSON-Datei (JavaScript Object Notation), die die Infrastruktur und 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.

Es gibt drei Arten von Fehlern, die mit einer Bereitstellung zusammenhängen:

  • Überprüfungsfehler treten auf, bevor eine Bereitstellung beginnt und werden durch Syntaxfehler in der Datei verursacht. Mit einem Code-Editor wie Visual Studio Code können diese Fehler identifiziert werden.
  • Preflight-Überprüfungsfehler treten auf, wenn ein Bereitstellungsbefehl ausgeführt wird, ressourcen jedoch nicht bereitgestellt werden. Diese Fehler werden gefunden, ohne dass die Bereitstellung gestartet wird. Wenn zum Beispiel ein Parameterwert falsch ist, wird der Fehler bei der Preflight-Validierung gefunden.
  • Bereitstellungsfehler treten während des Bereitstellungsprozesses auf und können nur gefunden werden, indem der Fortschritt der Bereitstellung in Ihrer Azure-Umgebung bewertet wird.

Alle Fehlertypen geben einen Fehlercode zurück, den Sie bei der Fehlersuche in der Bereitstellung verwenden können. Validierungs- und Preflight-Fehler werden im Aktivitätsprotokoll angezeigt, aber nicht im Bereitstellungsverlauf.

Voraussetzungen

Um diesen Schnellstart durchzuführen, benötigen Sie die folgenden Gegenstände:

Eine Vorlage mit Fehlern erstellen

Kopieren Sie die folgende Vorlage, und speichern Sie sie lokal. Sie verwenden diese Datei, um einen Validierungsfehler, einen Preflight-Fehler und einen Bereitstellungsfehler zu beheben. In dieser Schnellstartanleitung wird davon ausgegangen, dass Sie die Dateitroubleshoot.jsonbenannt haben , aber Sie können einen beliebigen Namen verwenden.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameterss": {
    "storageAccountType": {
      "type": "string",
      "defaultValue": "Standard_LRS",
      "allowedValues": [
        "Standard_LRS",
        "Standard_GRS",
        "Standard_ZRS",
        "Premium_LRS"
      ]
    },
    "location": {
      "type": "string",
      "defaultValue": "[resourceGroup().location]"
    },
    "prefixName": {
      "type": "string"
    }
  },
  "variables": {
    "storageAccountName": "[concat(parameters('prefixName'), uniquestring(resourceGroup().id))]"
  },
  "resources": [
    {
      "type": "Microsoft.Storage/storageAccounts",
      "apiVersion": "2021-04-01",
      "name": "[variables('storageAccountName')]",
      "location": "[parameters('location')]",
      "sku": {
        "name": "[parameters('storageAccountType')]"
      },
      "kind": "StorageV2",
      "properties": {}
    }
  ],
  "outputs": {
    "storageAccountName": {
      "type": "string",
      "value": "[variables('storageAccountName')]"
    },
    "vnetResult": {
      "type": "object",
      "value": "[reference(resourceId('Microsoft.Network/virtualNetworks', 'doesnotexist'), '2021-03-01', 'Full')]"
    }
  }
}

Validierungsfehler beheben

Öffnen Sie die Datei in Visual Studio Code. Die Wellenlinie unter parameterss: weist auf einen Fehler hin. Zeigen Sie auf den Fehler, um den Validierungsfehler anzuzeigen.

Screenshot von Visual Studio Code, das einen Vorlagenüberprüfungsfehler mit einer roten Wellenlinie unter dem falsch geschriebenen

Sie werden feststellen, dass variables und resources Fehler bei nicht definierten Parameterreferenzen auftreten. Um die Überprüfungsfehler der Vorlage anzuzeigen, wählen Sie "Probleme anzeigen"> aus.

Screenshot von Visual Studio Code mit der Registerkarte

Alle Fehler werden durch einen falsch geschriebenen Elementnamen verursacht.

"parameterss": {

Die Fehlermeldung lautet Vorlagenüberprüfung fehlgeschlagen: Mitglied 'parameterss' im Objekt des Typs 'Template' konnte nicht gefunden werden. Pfad 'parameterss', Zeile 4, Position 16.

Die ARM-Vorlagensyntax für Parameter zeigt, dass parameters es sich um den richtigen Elementnamen handelt.

Korrigieren Sie die Rechtschreibung, und speichern Sie die Datei, um den Überprüfungsfehler und die nicht definierten Parameterverweisfehler zu beheben.

"parameters": {

Preflight-Fehler beheben

Verwenden Sie einen falschen Wert für den Parameter prefixName, um einen Fehler bei der Preflightüberprüfung zu verursachen.

In diesem Quickstart wird troubleshootRG als Ressourcengruppenname verwendet, Sie können jedoch einen beliebigen Namen nutzen.

az group create --name troubleshootRG --location westus
az deployment group create \
  --resource-group troubleshootRG \
  --template-file troubleshoot.json \
  --parameters prefixName=long!!StoragePrefix

Die Preflightüberprüfung für die Vorlage ist nicht erfolgreich, und die Bereitstellung wird nicht ausgeführt. prefixName ist mehr als elf Zeichen lang und enthält Sonderzeichen und Großbuchstaben.

Speichernamen müssen zwischen drei und 24 Zeichen lang sein und dürfen nur Kleinbuchstaben und Ziffern enthalten. Durch den Präfixwert ist ein ungültiger Speichername entstanden. Weitere Informationen finden Sie unter Beheben von Fehlern für Speicherkontonamen. Um den Preflightfehler zu beheben, verwenden Sie ein Präfix mit maximal elf Zeichen, das nur Kleinbuchstaben oder Zahlen enthält.

Da die Bereitstellung nicht ausgeführt wurde, gibt es auch keinen Bereitstellungsverlauf.

Screenshot der Übersichtsseite der Azure-Ressourcengruppe, auf der ein leerer Bereitstellungsverlaufsabschnitt aufgrund eines Preflight-Fehlers angezeigt wird.

Das Aktivitätsprotokoll enthält den Preflightfehler. Wählen Sie das Protokoll aus, um die Details des Fehlers anzuzeigen.

Screenshot des Aktivitätsprotokolls einer Azure-Ressourcengruppe, das einen Preflight-Fehlereintrag mit einem roten Ausrufezeichensymbol zeigt.

Einsatzfehler beheben

Führen Sie die Bereitstellung mit einem gültigen Präfixwert (beispielsweise storage) aus.

az group create --name troubleshootRG --location westus
az deployment group create \
  --resource-group troubleshootRG \
  --template-file troubleshoot.json \
  --parameters prefixName=storage

Die Bereitstellung beginnt und wird im Bereitstellungsverlauf angezeigt. Die Bereitstellung ist nicht erfolgreich, da von outputs auf ein virtuelles Netzwerk verwiesen wird, das in der Ressourcengruppe nicht vorhanden ist. Da jedoch keine Fehler für das Speicherkonto aufgetreten sind, wurde die Ressource bereitgestellt. Der Bereitstellungsverlauf enthält eine nicht erfolgreiche Bereitstellung.

Screenshot der Übersichtsseite der Azure-Ressourcengruppe mit einer fehlgeschlagenen Bereitstellung mit einem roten Ausrufezeichensymbol im Abschnitt

Um den Bereitstellungsfehler zu beheben, ändern Sie die Verweisfunktion so, dass eine gültige Ressource verwendet wird. Weitere Informationen finden Sie unter Beheben von 'Ressource nicht gefunden'-Fehlern. Löschen Sie für diese Schnellstartanleitung das Komma vor vnetResult und den gesamten Code für vnetResult. Speichern Sie anschließend die Datei, und führen Sie die Bereitstellung erneut aus.

"vnetResult": {
  "type": "object",
  "value": "[reference(resourceId('Microsoft.Network/virtualNetworks', 'doesnotexist'), '2021-03-01', 'Full')]"
}

Nachdem die Überprüfungs-, Preflight- und Bereitstellungsfehler behoben wurden, stellt die folgende Vorlage ein Speicherkonto bereit. Bereitstellungsverlauf und Aktivitätsprotokoll enthalten jeweils eine erfolgreiche Bereitstellung.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "storageAccountType": {
      "type": "string",
      "defaultValue": "Standard_LRS",
      "allowedValues": [
        "Standard_LRS",
        "Standard_GRS",
        "Standard_ZRS",
        "Premium_LRS"
      ]
    },
    "location": {
      "type": "string",
      "defaultValue": "[resourceGroup().location]"
    },
    "prefixName": {
      "type": "string"
    }
  },
  "variables": {
    "storageAccountName": "[concat(parameters('prefixName'), uniquestring(resourceGroup().id))]"
  },
  "resources": [
    {
      "type": "Microsoft.Storage/storageAccounts",
      "apiVersion": "2021-04-01",
      "name": "[variables('storageAccountName')]",
      "location": "[parameters('location')]",
      "sku": {
        "name": "[parameters('storageAccountType')]"
      },
      "kind": "StorageV2",
      "properties": {}
    }
  ],
  "outputs": {
    "storageAccountName": {
      "type": "string",
      "value": "[variables('storageAccountName')]"
    }
  }
}

Bereinigen von Ressourcen

Wenn die Azure-Ressourcen nicht mehr benötigt werden, löschen Sie die Ressourcengruppe.

az group delete --name troubleshootRG

Um die Ressourcengruppe aus dem Portal zu löschen, gehen Sie wie folgt vor:

  1. Geben Sie im Azure-Portal Ressourcengruppen in das Suchfeld ein.
  2. Geben Sie im Feld "Nach Namen filtern " den Namen der Ressourcengruppe ein.
  3. Klicken Sie auf den Namen der Ressourcengruppe.
  4. Wählen Sie " Ressourcengruppe löschen" aus.
  5. Um den Löschvorgang zu bestätigen, geben Sie den Namen der Ressourcengruppe ein, und wählen Sie "Löschen" aus.

Nächste Schritte

In diesem Schnellstart haben Sie gelernt, wie Sie Fehler bei der Bereitstellung von ARM-Vorlagen beheben können.