Megosztás a következőn keresztül:


Linter szabály – nincs helykifejezés a paraméter alapértelmezett értékein kívül

Ez a szabály egy paraméter alapértelmezett értékén kívül keres resourceGroup().location vagy deployment().location használ.

Linter-szabály kódja

A bicep-konfigurációs fájlban a következő érték használatával szabhatja testre a szabálybeállításokat:

no-loc-expr-outside-params

Megoldás

resourceGroup().location és deployment().location csak egy paraméter alapértelmezett értékeként használható.

A sablonfelhasználók korlátozott hozzáféréssel rendelkezhetnek azokhoz a régiókhoz, ahol erőforrásokat hozhatnak létre. A kifejezések resourceGroup().location vagy deployment().location letilthatják a felhasználókat, ha az erőforráscsoport vagy az üzembe helyezés olyan régióban jött létre, amelyhez a felhasználó nem fér hozzá, így megakadályozhatja a sablon használatát.

Az ajánlott eljárás azt javasolja, hogy az erőforrások helyének beállításához a sablonnak rendelkeznie kell egy sztringparaméterrel.location Ha a paramétert resourceGroup().location a location sablon más részeire vagy deployment().location ahelyett használja, a sablon felhasználói kényelmesen használhatják az alapértelmezett értéket, de szükség esetén más helyet is megadhatnak.

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

A hiba kijavításához hozzon létre egy location olyan tulajdonságot, amely alapértelmezés szerint az új paramétert resourceGroup().location használja:

param location string = resourceGroup().location

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

A következő példa nem felel meg a tesztnek, mert location használja resourceGroup().location , de nem paraméter:

  var location = resourceGroup().location

A hibát úgy háríthatja el, hogy paramétert ad a változónak:

  param location string  = resourceGroup().location

Ha az Azure PowerShellt használja egy előfizetésben, felügyeleti csoportban vagy bérlőben való üzembe helyezéshez, akkor a paraméternéven kívül locationmás paraméternevet kell használnia. A New-AzDeployment, a New-AzManagementGroupDeployment és a New-AzTenantDeployment parancsnak van egy paramétere.location Ez a parancsparaméter ütközik a Bicep-fájlban lévő paraméterrel. Ezt az ütközést elkerülheti egy olyan névvel, mint a rgLocation.

Egy erőforráscsoportban való üzembe helyezéskor paraméternévként is használható, mert a New-AzResourceGroupDeployment nem rendelkezik a paraméter nevévellocation.location

Következő lépések

A linterről további információt a Bicep-linter használata című témakörben talál.