Snabbstart: Felsöka Bicep-fildistributioner
Den här snabbstarten beskriver hur du felsöker Bicep-fildistributionsfel. 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 börjar 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 azure-miljön.
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:
- Om du inte har en Azure-prenumeration kan du skapa ett kostnadsfritt konto innan du börjar.
- Visual Studio Code med det senaste Bicep-tillägget.
- Den senaste versionen av antingen Azure PowerShell eller Azure CLI.
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 döpt filen till troubleshoot.bicep , men du kan ge den valfritt namn.
@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 ser att Visual Studio Code identifierar ett syntaxfel. Den första parameterdeklarationen markeras med röda växlingsreglage för att indikera ett fel.
Raderna som har markerats med ett fel är:
@allowed([
'Standard_LRS'
'Standard_GRS'
'Standard_ZRS'
'Premium_LRS'
])
parameter storageAccountType string = 'Standard_LRS'
När du hovra över parameter
visas ett felmeddelande.
Meddelandet anger: 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 på dokumentationen för en parameterdeklaration ser du att nyckelordet faktiskt param
är . När du ändrar syntaxen försvinner verifieringsfelet. Dekoratören @allowed
har också markerats som ett fel, men det felet åtgärdas också genom att ändra parameterdeklarationen. Dekoratören har markerats 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 verifieringsfelet ä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 tillåts. Den försöker inte distribuera.
Du ser ett felmeddelande som anger att verifieringen före start 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 i preflight finns det ingen distribution i historiken.
Men den misslyckade distributionen finns i aktivitetsloggen.
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 namnprefixparametern.
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 i resursen.
Observera i portalen att distributionen visas i historiken.
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 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 för att ta bort resursgruppen från portalen:
- I Azure Portal anger du Resursgrupper i sökrutan.
- I fältet Filtrera efter namn anger du resursgruppens namn.
- Välj resursgruppens namn.
- Välj Ta bort resursgrupp.
- 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 Bicep-fildistributionsfel.