Dela via


Linter-regel – använd explicita värden för modulplatsparametrar

Den här regeln hittar modulparametrar som används för resursplatser och som oavsiktligt kan vara ett oväntat värde.

Linterregelkod

Använd följande värde i Bicep-konfigurationsfilen för att anpassa regelinställningar:

explicit-values-for-loc-params

Lösning

När du använder en modul ska alla platsrelaterade parametrar som har ett standardvärde tilldelas ett explicit värde. Platsrelaterade parametrar inkluderar parametrar som har ett standardvärde som refererar resourceGroup().location till eller deployment().location även alla parametrar som refereras från en resurss platsegenskap.

En parameter som är standard för en resursgrupps eller distributions plats är praktisk när en bicep-fil används som en huvuddistributionsmall. Men när ett sådant standardvärde används i en modul kan det orsaka oväntat beteende om huvudmallens resurser inte finns i samma region som resursgruppen.

Exempel

Följande exempel misslyckas med det här testet. Modulens m1parameter location tilldelas inte något explicit värde, så den är som standard resourceGroup().location, enligt vad som anges i module1.bicep. Men att använda resursgruppens plats kanske inte är det avsedda beteendet, eftersom andra resurser i main.bicep kan skapas på en annan plats än resursgruppens plats.

main.bicep:

param location string = 'eastus'

module m1 'module1.bicep' = {
 name: 'm1'
}

resource storageaccount 'Microsoft.Storage/storageAccounts@2024-03-01' = {
  name: 'storageaccount'
  location: location
  kind: 'StorageV2'
  sku: {
    name: 'Standard_LRS'
  }
}

module1.bicep:

param location string = resourceGroup().location

resource stg 'Microsoft.Storage/storageAccounts@2024-03-01' = {
  name: 'stg'
  location: location
  kind: 'StorageV2'
  sku: {
    name: 'Premium_LRS'
  }
}

Du kan åtgärda felet genom att uttryckligen skicka in ett värde för modulens location egenskap:

main.bicep:

param location string = 'eastus'

module m1 'module1.bicep' = {
  name: 'm1'
  params: {
   location: location // An explicit value will override the default value specified in module1.bicep
  }
}

resource storageaccount 'Microsoft.Storage/storageAccounts@2024-03-01' = {
  name: 'storageaccount'
  location: location
  kind: 'StorageV2'
  sku: {
    name: 'Standard_LRS'
  }
}

Nästa steg

Mer information om linter finns i Använda Bicep-linter.