Pravidlo Linter – žádné výrazy umístění mimo výchozí hodnoty parametrů
Toto pravidlo najde resourceGroup().location
nebo deployment().location
použije mimo výchozí hodnotu parametru.
Kód pravidla Linteru
K přizpůsobení nastavení pravidel použijte v konfiguračním souboru Bicep následující hodnotu:
no-loc-expr-outside-params
Řešení
resourceGroup().location
a deployment().location
měl by být použit pouze jako výchozí hodnota parametru.
Uživatelé šablon mohou mít omezený přístup k oblastem, kde mohou vytvářet prostředky. Výrazy resourceGroup().location
nebo deployment().location
můžou blokovat uživatele, pokud byla skupina prostředků nebo nasazení vytvořeny v oblasti, ke které uživatel nemá přístup, a tím jim brání v používání šablony.
Osvědčený postup navrhuje nastavit umístění vašich prostředků, šablona by měla mít řetězcový parametr s názvem location
. Pokud nastavíte výchozí location
parametr pro resourceGroup().location
použití deployment().location
těchto funkcí jinde v šabloně, můžou uživatelé šablony použít výchozí hodnotu, pokud je to vhodné, ale v případě potřeby také zadat jiné umístění.
resource storageaccount 'Microsoft.Storage/storageAccounts@2023-04-01' = {
location: resourceGroup().location
}
Chybu můžete opravit vytvořením location
vlastnosti, která se ve výchozím nastavení resourceGroup().location
používá a používá tento nový parametr:
param location string = resourceGroup().location
resource storageaccount 'Microsoft.Storage/storageAccounts@2023-04-01' = {
location: location
}
Následující příklad tento test selže, protože location
používá, resourceGroup().location
ale není parametrem:
var location = resourceGroup().location
Chybu můžete opravit tak, že proměnnou převedete na parametr:
param location string = resourceGroup().location
Pokud k nasazení do předplatného, skupiny pro správu nebo tenanta používáte Azure PowerShell, měli byste použít jiný název parametru než location
. Příkazy New-AzDeployment, New-AzManagementGroupDeployment a New-AzTenantDeployment mají parametr s názvem location
. Tento parametr příkazu je v konfliktu s parametrem v souboru Bicep. Tomuto konfliktu se můžete vyhnout pomocí názvu, například rgLocation
.
Název parametru můžete použít location
při nasazování do skupiny prostředků, protože New-AzResourceGroupDeployment nemá parametr s názvem location
.
Další kroky
Další informace o linteru naleznete v tématu Použití linter Bicep.