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 location
fö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.