Dela via


Snabbstart: Felsöka distributioner av Bicep-filer

Den här snabbstarten beskriver hur du felsöker distributionsfel för Bicep-filer. Du skapar en fil med fel och lär dig hur du åtgärdar felen.

Det finns två typer av fel som rör en distribution:

  • Valideringsfel inträffar innan en distribution påbörjas och orsakas av syntaxfel i filen. En kodredigerare som Visual Studio Code kan identifiera dessa fel.
  • Valideringsfel före start inträffar när ett distributionskommando körs men resurser inte distribueras. Dessa fel påträffas utan att distributionen startas. Om ett parametervärde till exempel är felaktigt, hittas felet i valideringen före start.
  • Distributionsfel uppstår under distributionsprocessen och kan bara hittas genom att utvärdera distributionens förlopp i Din Azure-miljö.

Båda typerna av fel returnerar en felkod som du använder för att felsöka distributionen. Valideringsfel och fel före start visas i aktivitetsloggen men visas inte i distributionshistoriken. En Bicep-fil med syntaxfel kompileras inte till JSON och visas inte i aktivitetsloggen.

Förutsättningar

För att slutföra den här snabbstarten behöver du följande:

Skapa en Bicep-fil med fel

Kopiera följande Bicep-fil och spara den lokalt. Du använder den här filen för att felsöka ett valideringsfel, ett preflight-fel och ett distributionsfel. Den här snabbstarten förutsätter att du har gett filen namnet troubleshoot.bicep, men du kan ge den vilket namn som helst.

@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

Åtgärda valideringsfel

Öppna filen i Visual Studio Code. Du kommer att märka att Visual Studio Code identifierar ett syntaxfel. Den första parameterdeklarationen markeras med röda krumelurer för att indikera ett fel.

Skärmbild av Visual Studio Code med röda krumelurer som markerar ett syntaxfel i en Bicep-fil.

Raderna som är markerade med ett fel är:

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

När du håller muspekaren över parametervisas ett felmeddelande.

Skärmbild av ett detaljerat felmeddelande som visas i Visual Studio Code när du hovrar över ett syntaxfel i en Bicep-fil.

Meddelandet säger: Den här deklarationstypen känns inte igen. Ange en parameter, variabel, resurs eller utdatadeklaration. Om du försöker distribuera den här filen får du samma felmeddelande från distributionskommandot.

Om du tittar i dokumentationen för en parameterdeklaration ser du att nyckelordet faktiskt paramär . När du ändrar syntaxen försvinner valideringsfelet. Dekoratören @allowed markerades också som ett fel, men det felet löses också genom att ändra parameterdeklarationen. Dekoratören markerades som ett fel eftersom den förväntar sig en parameterdeklaration efter dekoratören. Det här villkoret var inte sant när deklarationen var felaktig.

Den fasta linjen är:

param storageAccountType string = 'Standard_LRS'

Åtgärda preflight-fel

Nu när du har åtgärdat valideringsfelet är det dags att distribuera filen. Men du anger ett felaktigt parametervärde för att se ett preflight-fel.

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 avgör att namnet på lagringskontot innehåller tecken som inte är tillåtna. Det försöker inte distribueras.

Du ser ett felmeddelande som anger att den första verifieringen misslyckades. Du får också ett meddelande om att lagringskontots namn måste vara mellan 3 och 24 tecken långt och endast använda siffror och gemener. Prefixet du angav uppfyllde inte det kravet. Mer information om den här felkoden finns i Lösa fel för lagringskontonamn.

Eftersom felet upptäcktes under preflight finns det ingen distribution i historiken.

Skärmbild av avsnittet Azure Portal distributionshistorik som visar inga distributioner för en Bicep-fil.

Men den misslyckade distributionen finns i aktivitetsloggen.

Skärmbild av Azure Portal aktivitetslogg som visar ett preflight-valideringsfel för en Bicep-fildistribution.

Du kan öppna information om loggposten för att se felmeddelandet.

Åtgärda distributionsfel

Du distribuerar filen igen och anger ett tillåtet värde för parametern name prefix .

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

Distributionen startar men misslyckas med ett meddelande om att det virtuella nätverket inte hittades. Vanligtvis åtgärdar du det här felet genom att ändra referensen till resursen. I den här snabbstarten tar du bort referensen. Mer information om den här felkoden finns i Lösa fel som inte hittades resursen.

Observera i portalen att distributionen visas i historiken.

Skärmbild av avsnittet Azure Portal distributionshistorik som visar en misslyckad distribution för en Bicep-fil.

Du kan öppna posten i distributionshistoriken för att få information om felet. Felet finns också i aktivitetsloggen.

Bicep-filen försöker referera till ett virtuellt nätverk som inte finns i resursgruppen. Ta bort referensen till det befintliga virtuella nätverket för att åtgärda felet.

@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

Du kan distribuera Bicep-filen utan några fel.

Rensa resurser

När Azure-resurserna inte längre behövs tar du bort resursgruppen. Du kan ta bort resursgruppen från Cloud Shell eller portalen.

az group delete --name troubleshootRG

Följ dessa steg om du vill ta bort resursgruppen från portalen:

  1. I Azure Portal anger du Resursgrupper i sökrutan.
  2. I fältet Filtrera efter namn anger du resursgruppens namn.
  3. Välj resursgruppens namn.
  4. Välj Ta bort resursgrupp.
  5. Bekräfta borttagningen genom att ange resursgruppens namn och sedan välja Ta bort.

Nästa steg

I den här snabbstarten har du lärt dig hur du felsöker distributionsfel för Bicep-filer.