Avvio rapido: Risolvere i problemi relativi alle distribuzioni di file Bicep

Questa guida introduttiva descrive come risolvere gli errori di distribuzione dei file Bicep. Si creerà un file con errori e si apprenderà come correggere gli errori.

Alla distribuzione sono correlati tre tipi di errori:

  • Gli errori di convalida si verificano prima dell'inizio di una distribuzione e vengono causati da errori di sintassi nel file. Un editor di codice come Visual Studio Code può identificare questi errori.
  • Gli errori di convalida preliminare si verificano quando viene eseguito un comando di distribuzione, ma le risorse non vengono distribuite. Vengono rilevati senza avviare la distribuzione. Ad esempio, se un valore di parametro non è corretto, l'errore viene rilevato nella convalida preliminare.
  • Gli errori di distribuzione si verificano durante il processo di distribuzione e possono essere trovati solo valutando lo stato di avanzamento della distribuzione nell'ambiente Azure.

Tutti i tipi di errore restituiscono un codice errore usato per risolvere i problemi della distribuzione. Gli errori preliminari e di convalida vengono visualizzati nel log attività ma non nella cronologia della distribuzione. Un file Bicep con errori di sintassi non viene compilato in JSON e non viene visualizzato nel log attività.

Prerequisiti

Per completare questa guida introduttiva, sono necessari gli elementi seguenti:

Creare un file Bicep con errori

Copiare il file Bicep seguente e salvarlo in locale. Questo file verrà usato per risolvere un errore di convalida, un errore preliminare e un errore di distribuzione. Questo argomento di avvio rapido presuppone che sia stato denominato il file troubleshoot.bicep , ma è possibile assegnargli qualsiasi nome.

@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

Correzione dell'errore di convalida

Aprire il file in Visual Studio Code. Si noterà che Visual Studio Code identifica un errore di sintassi. La prima dichiarazione di parametro è contrassegnata con squiggles rosso per indicare un errore.

Screenshot di Visual Studio Code con squiggles rosso che evidenzia un errore di sintassi in un file Bicep.

Le righe contrassegnate con un errore sono:

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

Quando si passa il puntatore del mouse su parameter, viene visualizzato un messaggio di errore.

Screenshot di un messaggio di errore dettagliato visualizzato in Visual Studio Code quando si passa il puntatore del mouse su un errore di sintassi in un file Bicep.

Il messaggio indica che questo tipo di dichiarazione non viene riconosciuto. Specificare un parametro, una variabile, una risorsa o una dichiarazione di output. Se si tenta di distribuire questo file, verrà visualizzato lo stesso messaggio di errore dal comando di distribuzione.

Se si esamina la documentazione per una dichiarazione di parametro, verrà visualizzata la parola chiave param. Quando si modifica tale sintassi, l'errore di convalida scompare. Il @allowed decorator è stato contrassegnato anche come errore, ma tale errore viene risolto modificando la dichiarazione dei parametri. Il decorator è stato contrassegnato come errore perché prevede una dichiarazione di parametro dopo il decorator. Questa condizione non è vera quando la dichiarazione non è corretta.

La linea fissa è:

param storageAccountType string = 'Standard_LRS'

Correzione dell'errore preliminare

Dopo aver risolto l'errore di convalida, è ora di distribuire il file. Tuttavia, si fornirà un valore di parametro non valido per visualizzare un errore preliminare.

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 determina che il nome dell'account di archiviazione contiene caratteri non consentiti. Non tenta la distribuzione.

Viene visualizzato un messaggio di errore che indica che la convalida preliminare non è riuscita. Viene visualizzato anche un messaggio che indica che il nome dell'account di archiviazione deve essere compreso tra 3 e 24 caratteri in lunghezza e usare numeri e lettere minuscole solo. Il prefisso specificato non soddisfava tale requisito. Per altre informazioni su questo codice di errore, vedere Risolvere gli errori per i nomi degli account di archiviazione.

Poiché l'errore è stato rilevato in fase preliminare, non esiste alcuna distribuzione nella cronologia.

Screenshot della sezione cronologia della distribuzione di portale di Azure che non mostra distribuzioni per un file Bicep.

Tuttavia, la distribuzione non riuscita esiste nel log attività.

Screenshot del log attività di portale di Azure che mostra un errore di convalida preliminare per una distribuzione di file Bicep.

È possibile aprire i dettagli della voce di log per visualizzare il messaggio di errore.

Correzione dell'errore di distribuzione

Si distribuirà di nuovo il file e si fornirà un valore consentito per il parametro del prefisso del nome.

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

La distribuzione inizia ma non riesce con un messaggio che la rete virtuale non è stata trovata. In genere, si corregge questo errore modificando il riferimento alla risorsa. In questa guida introduttiva si eliminerà il riferimento. Per altre informazioni su questo codice di errore, vedere Risolvere gli errori trovati nella risorsa.

Si noti nel portale che la distribuzione viene visualizzata nella cronologia.

Screenshot della sezione cronologia della distribuzione di portale di Azure che mostra una distribuzione non riuscita per un file Bicep.

È possibile aprire la voce nella cronologia della distribuzione per ottenere informazioni dettagliate sull'errore. L'errore esiste anche nel log attività.

Il file Bicep tenta di fare riferimento a una rete virtuale che non esiste nel gruppo di risorse. Eliminare il riferimento alla rete virtuale esistente per correggere l'errore.

@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

È possibile distribuire il file Bicep senza errori.

Pulire le risorse

Quando le risorse di Azure non sono più necessarie, eliminare il gruppo di risorse. È possibile eliminare il gruppo di risorse da Cloud Shell o dal portale.

az group delete --name troubleshootRG

Per eliminare il gruppo di risorse dal portale, seguire questa procedura:

  1. Nella portale di Azure immettere Gruppi di risorse nella casella di ricerca.
  2. Nel campo Filtro per nome immettere il nome del gruppo di risorse.
  3. Selezionare il nome del gruppo di risorse.
  4. Selezionare Elimina gruppo di risorse.
  5. Per confermare l'eliminazione, immettere il nome del gruppo di risorse e selezionare Elimina.

Passaggi successivi

In questa guida introduttiva si è appreso come risolvere gli errori di distribuzione dei file Bicep.