Linter 規則 - 模組位置參數使用明確值
此規則會尋找用於資源位置的模組參數,且可能會在無意間預設為非預期的值。
Linter 規則程式碼
使用 Bicep 設定檔中的下列值來自訂規則設定:
explicit-values-for-loc-params
解決方案
使用模組時,使用預設值的任何位置相關參數皆應指派明確值。 位置相關參數包括預設值參考 resourceGroup().location
或 deployment().location
的參數,以及資源位置屬性所參考的任何參數。
使用 Bicep 檔案作為主要部署範本時,將參數預設為資源群組或部署位置較為方便。 但在模組中使用這類預設值時,若主要範本的資源與資源群組不在相同區域,則可能導致非預期的行為。
範例
下列範例會導致此測試失敗。 模組m1
的參數location
未指派明確的值,因此預設resourceGroup().location
為 ,如module1.bicep 中所指定。 但使用資源群組位置可能不是預期行為,因為main.bicep 的其他資源建立位置可能會與資源群組不同。
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'
}
}
您可明確傳遞模組 location
屬性的值,以修正失敗:
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'
}
}
下一步
如需 Linter 的詳細資訊,請參閱使用 Bicep Linter。