Правило анализатора кода — использование явно заданных значений для параметров расположения модуля
Это правило обнаруживает параметры модуля, которые используются для расположений ресурсов и могут по умолчанию случайно использовать непредвиденное значение.
Код правила анализатора кода
Для настройки параметров правил укажите в файле конфигурации 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'
}
}
Следующие шаги
Дополнительные сведения об анализаторе кода Bicep см. в разделе Использование анализатора кода Bicep.