Share via


Linter szabály – nincsenek rögzített helyek

Ez a szabály olyan Azure-helyértékeket keres, amelyek nincsenek paraméterezve.

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-hardcoded-location

Megoldás

A sablonfelhasználók korlátozott hozzáféréssel rendelkezhetnek azokhoz a régiókhoz, ahol erőforrásokat hozhatnak létre. A rögzített erőforrás-hely megakadályozhatja, hogy a felhasználók létrehoznak egy erőforrást, így megakadályozhatják a sablon használatát. Az erőforráscsoport helyére alapértelmezett helyparaméter megadásával a felhasználók kényelmesen használhatják az alapértelmezett értéket, de más helyet is megadhatnak.

Ahelyett, hogy rögzített sztringet vagy változóértéket használnál, használjon paramétert, "globális" sztringet vagy kifejezést (de nem resourceGroup().locationdeployment().location, lásd : no-loc-expr-outside-params). 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 Ez a paraméter alapértelmezés szerint az erőforráscsoportra vagy az üzembe helyezési helyre (resourceGroup().location vagy deployment().location).

Az alábbi példa nem felel meg a tesztnek, mert az erőforrás tulajdonsága location sztringkonstanst használ:

  resource stg 'Microsoft.Storage/storageAccounts@2021-02-01' = {
      location: 'westus'
  }

Kijavíthatja egy új location sztringparaméter létrehozásával (amely opcionálisan alapértelmezett értékkel rendelkezhet – resourceGroup(.location) gyakran használatos alapértelmezettként):

  param location string = resourceGroup().location
  resource stg 'Microsoft.Storage/storageAccounts@2021-02-01' = {
      location: location
  }

A Gyorsjavítás használatával hozzon létre egy helyparamétert, és cserélje le a sztringkonstanst a paraméternévre. Tekintse meg a következő képernyőképet:

A No hardcoded location linter rule warning with quickfix képernyőképe.

Az alábbi példa azért nem felel meg a tesztnek, mert az erőforrás tulajdonsága location egy sztringkonstanssal rendelkező változót használ.

  var location = 'westus'
  resource stg 'Microsoft.Storage/storageAccounts@2021-02-01' = {
      location: location
  }

Kijavíthatja a változó paraméterként való beállításával:

  param location string = 'westus'
  resource stg 'Microsoft.Storage/storageAccounts@2021-02-01' = {
      location: location
  }

Az alábbi példa nem felel meg a tesztnek, mert egy sztringkonstanst ad át egy modulparaméternek, amely viszont egy erőforrás tulajdonságához location használatos:

module m1 'module1.bicep' = {
  name: 'module1'
  params: {
    location: 'westus'
  }
}

ahol a module1.bicep a következő:

param location string

resource storageaccount 'Microsoft.Storage/storageAccounts@2021-02-01' = {
  name: 'storageaccount'
  location: location
  kind: 'StorageV2'
  sku: {
    name: 'Premium_LRS'
  }
}

A hiba kijavításához hozzon létre egy új paramétert az értékhez:

param location string // optionally with a default value
module m1 'module1.bicep' = {
  name: 'module1'
  params: {
    location: 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.