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@2023-04-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@2023-04-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.