Partager via


Règle Linter : aucune expression d’emplacement en dehors des valeurs par défaut des paramètres

Cette règle trouve resourceGroup().location ou deployment().location utilisés en dehors d’une valeur par défaut des paramètres.

Code de règle de linter

Utilisez la valeur suivante dans le fichier config Bicep pour personnaliser les paramètres de règle :

no-loc-expr-outside-params

Solution

resourceGroup().location et deployment().location doivent être utilisés uniquement comme valeur par défaut d’un paramètre.

Les utilisateurs de modèle peuvent avoir un accès limité aux régions où ils peuvent créer des ressources. Les expressions resourceGroup().location ou deployment().location peuvent bloquer les utilisateurs dans le cas où le groupe de ressources ou le déploiement a été créé dans une région à laquelle l’utilisateur n’a pas accès, ce qui les empêche d’utiliser le modèle.

La bonne pratique suggère que, pour définir les emplacements de vos ressources, votre modèle doit avoir un paramètre de chaîne nommé location. Si vous définissez par défaut le paramètre location sur resourceGroup().location ou deployment().location au lieu d’utiliser ces fonctions ailleurs dans le modèle, les utilisateurs du modèle peuvent utiliser la valeur par défaut quand cela est possible, mais également spécifier un autre emplacement si nécessaire.

resource storageaccount 'Microsoft.Storage/storageAccounts@2021-02-01' = {
  location: resourceGroup().location
}

Vous pouvez corriger l’erreur en créant une propriété location qui définit resourceGroup().location par défaut et utilise ce nouveau paramètre à la place :

param location string = resourceGroup().location

resource storageaccount 'Microsoft.Storage/storageAccounts@2021-02-01' = {
  location: location
}

L’exemple suivant échoue à ce test, car location utilise resourceGroup().location, mais n’est pas un paramètre :

  var location = resourceGroup().location

Vous pouvez résoudre l’erreur en transformant la variable en un paramètre :

  param location string  = resourceGroup().location

Si vous utilisez Azure PowerShell pour effectuer un déploiement sur un abonnement, un groupe d’administration ou un locataire, vous devez utiliser un nom de paramètre autre que location. Les commandes New-AzDeployment, New-AzManagementGroupDeployment et New-AzTenantDeployment ont un paramètre nommé location. Ce paramètre de commande est en conflit avec le paramètre dans votre fichier Bicep. Vous pouvez éviter ce conflit en utilisant un nom tel que rgLocation.

Vous pouvez utiliser location pour un nom de paramètre lors du déploiement sur un groupe de ressources, car New-AzResourceGroupDeployment n’a pas de paramètre nommé location.

Étapes suivantes

Pour plus d’informations sur le linter, consultez Utiliser le linter Bicep.