Schnellstart: Fehlerbehebung bei der Bereitstellung von Bicep-Dateien

Dieser Schnellstart beschreibt, wie Sie Fehler bei der Bereitstellung von Bicep-Dateien beheben können. Sie erstellen eine Datei mit Fehlern und lernen, wie Sie die Fehler beheben können.

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

  • Validierungsfehler treten auf, bevor ein Einsatz beginnt, und werden durch Syntaxfehler in Ihrer Datei verursacht. Mit einem Code-Editor wie Visual Studio Code können diese Fehler identifiziert werden.
  • Preflight-Validierungsfehler treten auf, wenn ein Bereitstellungsbefehl zwar ausgeführt wird, Ressourcen aber 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 durch die Bewertung des Einrichtungsfortschritts in Ihrer Azure-Umgebung gefunden werden.

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. Eine Bicep-Datei mit Syntaxfehlern wird weder in JSON kompiliert noch im Aktivitätsprotokoll angezeigt.

Voraussetzungen

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

Erstellen einer Bicep-Datei mit Fehlern

Kopieren Sie die folgende Bicep-Datei und speichern Sie sie lokal. Sie verwenden diese Datei, um einen Validierungsfehler, einen Preflight-Fehler und einen Bereitstellungsfehler zu beheben. Dieser Schnellstart geht davon aus, dass Sie die Datei troubleshoot.bicep benannt haben, aber Sie können ihr einen beliebigen Namen geben.

@description('SKU for the storage account')
@allowed([
  'Standard_LRS'
  'Standard_GRS'
  'Standard_ZRS'
  'Premium_LRS'
])
parameter storageAccountType string = 'Standard_LRS'

@description('Prefix for storage name.')
param prefixName string

var storageAccountName = '${prefixName}${uniqueString(resourceGroup().id)}'

resource storageAccount 'Microsoft.Storage/storageAccounts@2021-06-01' = {
  name: storageAccountName
  location: resourceGroup().location
  sku: {
    name: storageAccountType
  }
  kind: 'StorageV2'
  properties: {}
}

resource existingVNet 'Microsoft.Network/virtualNetworks@2021-03-01' existing = {
  name: 'doesnotexist'
}

output storageAccountName string = storageAccountName
output vnetResult object = existingVNet

Validierungsfehler beheben

Öffnen Sie die Datei in Visual Studio Code. Sie werden feststellen, dass Visual Studio Code einen Syntaxfehler identifiziert. Die erste Parameterdeklaration ist mit roten Schnörkeln markiert, um einen Fehler anzuzeigen.

Screenshot von Visual Studio Code mit roten Wellenlinien, die einen Syntaxfehler in einer Bicep-Datei hervorheben.

Die mit einem Fehler gekennzeichneten Zeilen sind:

@allowed([
  'Standard_LRS'
  'Standard_GRS'
  'Standard_ZRS'
  'Premium_LRS'
])
parameter storageAccountType string = 'Standard_LRS'

Wenn Sie den Mauszeiger über parameter bewegen, wird eine Fehlermeldung angezeigt.

Screenshot einer detaillierten Fehlermeldung, die in Visual Studio Code angezeigt wird, wenn der Mauszeiger über einen Syntaxfehler in einer Bicep-Datei gehalten wird.

Die Meldung lautet: Dieser Deklarationstyp wird nicht erkannt. Geben Sie einen Parameter, eine Variable, eine Ressource oder eine Ausgabedeklaration an. Wenn Sie versuchen, diese Datei bereitzustellen, erhalten Sie dieselbe Fehlermeldung vom Bereitstellungsbefehl.

Wenn Sie sich die Dokumentation für eine Parameterdeklaration ansehen, werden Sie sehen, dass das Schlüsselwort eigentlich param ist. Wenn Sie diese Syntax ändern, verschwindet der Validierungsfehler. Der @allowed-Dekorator wurde ebenfalls als Fehler markiert, aber auch dieser Fehler wird durch Änderung der Parameterdeklaration behoben. Der Dekorator wurde als Fehler markiert, weil er eine Parameterdeklaration nach dem Dekorator erwartet. Diese Bedingung war nicht erfüllt, als die Erklärung falsch war.

Die Festnetznummer lautet:

param storageAccountType string = 'Standard_LRS'

Preflight-Fehler beheben

Nachdem Sie nun den Validierungsfehler behoben haben, können Sie die Datei bereitstellen. Wenn Sie jedoch einen falschen Parameterwert angeben, wird ein Preflight-Fehler angezeigt.

az group create --name troubleshootRG --location westus
az deployment group create \
  --resource-group troubleshootRG \
  --template-file troubleshoot.bicep \
  --parameters prefixName=longNamewith!!Charactersthatarenotallowed

Azure Resource Manager stellt fest, dass der Name des Speicherkontos Zeichen enthält, die nicht zulässig sind. Sie versucht nicht, den Einsatz zu starten.

Sie erhalten eine Fehlermeldung, die besagt, dass die Preflight-Validierung fehlgeschlagen ist. Außerdem wird eine Meldung angezeigt, die besagt, dass der Name des Speicherkontos zwischen 3 und 24 Zeichen lang sein muss und nur Zahlen und Kleinbuchstaben enthalten darf. Die von Ihnen angegebene Vorwahl erfüllte diese Anforderung nicht. Weitere Informationen zu diesem Fehlercode finden Sie unter Fehler für Speicherkontonamen beheben.

Da der Fehler beim Preflight aufgetreten ist, gibt es in der Historie keine Bereitstellung.

Screenshot des Abschnitts für den Bereitstellungsverlauf im Azure-Portal, der keine Bereitstellungen für eine Bicep-Datei anzeigt.

Die fehlgeschlagene Bereitstellung ist jedoch im Aktivitätsprotokoll aufgeführt.

Screenshot des Aktivitätsprotokolls für das Azure-Portal, das einen Preflightvalidierungsfehler für eine Bereitstellung der Bicep-Datei anzeigt.

Sie können die Details des Protokolleintrags öffnen, um die Fehlermeldung zu sehen.

Einsatzfehler beheben

Sie stellen die Datei erneut bereit und geben einen zulässigen Wert für den Parameter Namenspräfix an.

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

Die Bereitstellung beginnt, schlägt aber mit der Meldung fehl, dass das virtuelle Netzwerk nicht gefunden wurde. Normalerweise würden Sie diesen Fehler beheben, indem Sie den Verweis auf die Ressource ändern. In diesem Schnellstart werden Sie die Referenz löschen. Weitere Informationen zu diesem Fehlercode finden Sie unter Resolve resource not found errors.

Beachten Sie im Portal, dass die Bereitstellung in der Historie erscheint.

Screenshot des Abschnitts für den Bereitstellungsverlauf im Azure-Portal, der fehlerhafte Bereitstellung für eine Bicep-Datei anzeigt.

Sie können den Eintrag im Bereitstellungsprotokoll öffnen, um Einzelheiten über den Fehler zu erfahren. Der Fehler ist auch im Aktivitätsprotokoll vorhanden.

Die Bicep-Datei versucht, auf ein virtuelles Netzwerk zu verweisen, das in Ihrer Ressourcengruppe nicht vorhanden ist. Löschen Sie den Verweis auf das vorhandene virtuelle Netzwerk, um den Fehler zu beheben.

@description('SKU for the storage account')
@allowed([
  'Standard_LRS'
  'Standard_GRS'
  'Standard_ZRS'
  'Premium_LRS'
])
param storageAccountType string = 'Standard_LRS'

@description('Prefix for storage name.')
param prefixName string

var storageAccountName = '${prefixName}${uniqueString(resourceGroup().id)}'

resource storageAccount 'Microsoft.Storage/storageAccounts@2021-06-01' = {
  name: storageAccountName
  location: resourceGroup().location
  sku: {
    name: storageAccountType
  }
  kind: 'StorageV2'
  properties: {}
}

output storageAccountName string = storageAccountName

Sie können diese Bicep-Datei ohne Fehler bereitstellen.

Bereinigen von Ressourcen

Wenn die Azure-Ressourcen nicht mehr benötigt werden, löschen Sie die Ressourcengruppe. Sie können die Ressourcengruppe aus Cloud Shell oder dem Portal löschen.

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 im Suchfeld Ressourcengruppen ein.
  2. Geben Sie den Namen der Ressourcengruppe in das Feld Nach Name filtern ein.
  3. Klicken Sie auf den Namen der Ressourcengruppe.
  4. Wählen Sie die Option Ressourcengruppe löschen.
  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 Bicep-Dateien beheben können.