Delen via


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 locationgebruiken. 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.