Бөлісу құралы:


Правило анализатора кода — использование явно заданных значений для параметров расположения модуля

Это правило обнаруживает параметры модуля, которые используются для расположений ресурсов и могут по умолчанию случайно использовать непредвиденное значение.

Код правила анализатора кода

Для настройки параметров правил укажите в файле конфигурации Bicep следующее значение:

explicit-values-for-loc-params

Решение

При использовании модуля всем связанным с расположением параметрам, имеющим значение по умолчанию, должно быть назначено явно заданное значение. Параметры, связанные с расположением, включают в себя параметры, имеющие значение по умолчанию, ссылающееся на resourceGroup().location или deployment().location, а также любые параметры, на которые ссылается свойство расположения ресурса.

Параметр, который в качестве значения по умолчанию использует расположение группы ресурсов или развертывания, удобен, если в качестве основного шаблона развертывания применяется файл bicep. Однако, когда такое значение по умолчанию используется в модуле, это может привести к непредвиденному поведению, если ресурсы основного шаблона не расположены в том же регионе, что и группа ресурсов.

Примеры

Следующий пример не проходит этот тест. Параметр модуля m1location не назначается явным значением, поэтому по умолчанию 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'
  }
}

Следующие шаги

Дополнительные сведения об анализаторе кода Bicep см. в разделе Использование анализатора кода Bicep.