Dela via


Linter-regel – inga platsuttryck utanför parameterns standardvärden

Den här regeln hittar resourceGroup().location eller deployment().location används utanför ett standardvärde för parametern.

Linterregelkod

Använd följande värde i Bicep-konfigurationsfilen för att anpassa regelinställningar:

no-loc-expr-outside-params

Lösning

resourceGroup().location och deployment().location bör endast användas som standardvärde för en parameter.

Mallanvändare kan ha begränsad åtkomst till regioner där de kan skapa resurser. Uttrycken resourceGroup().location eller deployment().location kan blockera användare om resursgruppen eller distributionen har skapats i en region som användaren inte kan komma åt, vilket hindrar dem från att använda mallen.

Bästa praxis tyder på att mallen bör ha en strängparameter med namnet locationför att ange resursernas platser. Om du använder standardparametern location till eller deployment().location i stället för att resourceGroup().location använda dessa funktioner någon annanstans i mallen kan användare av mallen använda standardvärdet när det är praktiskt men även ange en annan plats när det behövs.

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

Du kan åtgärda felet genom att skapa en location egenskap som är standard för resourceGroup().location och använda den här nya parametern i stället:

param location string = resourceGroup().location

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

Följande exempel misslyckas med det här testet eftersom location det använder resourceGroup().location men inte är en parameter:

  var location = resourceGroup().location

Du kan åtgärda felet genom att omvandla variabeln till en parameter:

  param location string  = resourceGroup().location

Om du använder Azure PowerShell för att distribuera till en prenumeration, hanteringsgrupp eller klientorganisation bör du använda ett annat parameternamn än location. Kommandona New-AzDeployment, New-AzManagementGroupDeployment och New-AzTenantDeployment har en parameter med namnet location. Den här kommandoparametern står i konflikt med parametern i Bicep-filen. Du kan undvika den här konflikten med hjälp av ett namn som rgLocation.

Du kan använda location för ett parameternamn när du distribuerar till en resursgrupp eftersom New-AzResourceGroupDeployment inte har någon parameter med namnet location.

Nästa steg

Mer information om linter finns i Använda Bicep-linter.