code de diagnostic Bicep - BCP033

Ce diagnostic se produit lorsque vous affectez une valeur d’un type de données incompatible.

Description

Valeur de type <data-type> attendue, mais la valeur fournie est de type <data-type>.

Niveau

Avertissement / Erreur

Solution

Utilisez le type de données attendu. Si la valeur fournie est un jeton, placez-la dans la fonction any() pour atténuer le problème.

Exemples

L’exemple suivant déclenche le diagnostic, car le type de données attendu est une chaîne. La valeur fournie réelle est un entier :

var myValue = 5

output myString string = myValue

Vous pouvez corriger le diagnostic en fournissant une valeur de chaîne :

var myValue = '5'

output myString string = myValue

Dans Azure Bicep, l’erreur BCP033 lors de l’utilisation de deployment().location comme valeur par défaut pour un paramètre restreint par un décorateur @allowed est un scénario courant. Cette erreur se produit en raison du mécanisme strict de sécurité de type de compilation de Bicep. Par exemple:

targetScope = 'subscription'

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

Si vous souhaitez conserver la commodité de l'emplacement des métadonnées du déploiement actuel, vous pouvez contourner la vérification du type au moment de la compilation à l'aide de la fonction any() de Bicep. Cette fonction indique au compilateur de traiter l’expression comme étant faiblement typée :

targetScope = 'subscription'

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

Si votre déploiement est strictement lié à une seule région, vous pouvez éviter d’utiliser complètement les métadonnées dynamiques deployment().location et attribuer explicitement une valeur par défaut qui existe dans votre liste.

Étapes suivantes

Pour plus d’informations sur les diagnostics Bicep, consultez diagnostics principaux Bicep.