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 m1
parameter 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.