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 location
má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.