Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Den här regeln hittar resourceGroup().location eller deployment().location används utanför ett standardvärde för parametern.
Anmärkning
Den här regeln är inaktiverad som standard. Ändra nivån i bicepconfig.json för att aktivera den.
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 resourceGroup().location i stället för att deployment().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.