Sdílet prostřednictvím


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@2021-02-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@2021-02-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.