Bicep codice di diagnostica - BCP033

Questa diagnostica si verifica quando si assegna un valore di un tipo di dati non corrispondente.

Description

Previsto un valore di tipo <data-type> , ma il valore specificato è di tipo <data-type>.

livello

Avviso / Errore

Soluzione

Usare il tipo di dati previsto. Se il valore specificato è un token, racchiuderlo nella funzione any() per attenuare il problema.

Esempi

Nell'esempio seguente viene generata la diagnostica perché il tipo di dati previsto è una stringa. Il valore specificato effettivo è un numero intero:

var myValue = 5

output myString string = myValue

È possibile correggere la diagnostica specificando un valore stringa:

var myValue = '5'

output myString string = myValue

In Azure Bicep viene visualizzato l'errore BCP033 durante l'uso di deployment().location come valore predefinito per un parametro limitato da un elemento decorator @allowed è uno scenario comune. Questo errore si verifica a causa del meccanismo strict di sicurezza dei tipi in fase di compilazione di Bicep. Per esempio:

targetScope = 'subscription'

@allowed([
  'southcentralus'
  'eastus2euap'
])
param location string = deployment().location

Se si vuole mantenere la comodità di impostare come predefinito il percorso dei metadati della distribuzione corrente, è possibile ignorare il controllo del tipo in fase di compilazione usando la funzione any() di Bicep. Questa funzione indica al compilatore di considerare l'espressione come tipizzata in modo libero:

targetScope = 'subscription'

@allowed([
  'southcentralus'
  'eastus2euap'
])
// The any() function suppresses the BCP033 type-mismatch error
param location string = any(deployment().location)

Se la distribuzione è rigidamente associata a una singola area, è possibile evitare di usare completamente i metadati dinamici deployment().location e assegnare in modo esplicito un valore predefinito esistente all'interno dell'elenco.

Passaggi successivi

Per altre informazioni sulla diagnostica Bicep, vedere Diagnostica dei core Bicep.