分享方式:


Linter 規則 - 模組位置參數使用明確值

此規則會尋找用於資源位置的模組參數,且可能會在無意間預設為非預期的值。

Linter 規則程式碼

使用 Bicep 設定檔中的下列值來自訂規則設定:

explicit-values-for-loc-params

解決方案

使用模組時,使用預設值的任何位置相關參數皆應指派明確值。 位置相關參數包括預設值參考 resourceGroup().locationdeployment().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