Linter-regel: geen locatie-expressies buiten de standaardwaarden van parameters
Deze regel vindt resourceGroup().location
of deployment().location
gebruikt buiten een standaardwaarde van een parameter.
Linter-regelcode
Gebruik de volgende waarde in het Bicep-configuratiebestand om regelinstellingen aan te passen:
no-loc-expr-outside-params
Oplossing
resourceGroup().location
en deployment().location
mag alleen worden gebruikt als de standaardwaarde van een parameter.
Sjabloongebruikers hebben mogelijk beperkte toegang tot regio's waar ze resources kunnen maken. De expressies resourceGroup().location
of deployment().location
kunnen gebruikers blokkeren als de resourcegroep of implementatie is gemaakt in een regio die de gebruiker niet kan openen, waardoor ze de sjabloon niet kunnen gebruiken.
Best practice stelt voor dat om de locaties van uw resources in te stellen, uw sjabloon een tekenreeksparameter moet hebben met de naam location
. Als u de location
parameter standaard gebruikt of deployment().location
resourceGroup().location
in plaats van deze functies ergens anders in de sjabloon te gebruiken, kunnen gebruikers van de sjabloon de standaardwaarde gebruiken wanneer ze handig zijn, maar ook een andere locatie opgeven wanneer dat nodig is.
resource storageaccount 'Microsoft.Storage/storageAccounts@2023-04-01' = {
location: resourceGroup().location
}
U kunt de fout oplossen door een location
eigenschap te maken die standaard wordt gebruikt resourceGroup().location
en deze nieuwe parameter te gebruiken:
param location string = resourceGroup().location
resource storageaccount 'Microsoft.Storage/storageAccounts@2023-04-01' = {
location: location
}
In het volgende voorbeeld mislukt deze test omdat deze wordt gebruiktresourceGroup().location
, location
maar geen parameter is:
var location = resourceGroup().location
U kunt de fout oplossen door de variabele om te zetten in een parameter:
param location string = resourceGroup().location
Als u Azure PowerShell gebruikt om te implementeren in een abonnement, beheergroep of tenant, moet u een andere parameternaam dan location
gebruiken. De opdrachten New-AzDeployment, New-AzManagementGroupDeployment en New-AzTenantDeployment hebben een parameter met de naam location
. Deze opdrachtparameter conflicteert met de parameter in uw Bicep-bestand. U kunt dit conflict voorkomen door een naam zoals rgLocation
.
U kunt voor een parameternaam gebruiken location
bij de implementatie in een resourcegroep, omdat New-AzResourceGroupDeployment geen parameter heeft met de naam location
.
Volgende stappen
Zie Bicep linter gebruiken voor meer informatie over de linter.